Skip to content

No Support for Private Properties in ES6 Classes? #18724

@jhirschberg70

Description

@jhirschberg70

I've encountered two issues using certain features of ES6 classes. The first is that classes with private properties aren't working with --pre-js. I've attached a zip file with code that exposes the problem. Here's the output from my attempts to compile and link the attached code:

em++   -v -o main.o -c main.cpp
 "/home/jeff/dev/emsdk/upstream/bin/clang" --version
 "/home/jeff/dev/emsdk/upstream/bin/clang++" -target wasm32-unknown-emscripten -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -DEMSCRIPTEN --sysroot=/home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -c main.cpp -o main.o
clang version 17.0.0 (https://github.com/llvm/llvm-project 1142e6c7c795de7f80774325a07ed49bc95a48c9)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /home/jeff/dev/emsdk/upstream/bin
 (in-process)
 "/home/jeff/dev/emsdk/upstream/bin/clang-17" -cc1 -triple wasm32-unknown-emscripten -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -fcoverage-compilation-dir=/home/jeff/acorn -resource-dir /home/jeff/dev/emsdk/upstream/lib/clang/17 -D EMSCRIPTEN -isysroot /home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1 -internal-isystem /home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 -internal-isystem /home/jeff/dev/emsdk/upstream/lib/clang/17/include -internal-isystem /home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot/include -fdeprecated-macro -fdebug-compilation-dir=/home/jeff/acorn -ferror-limit 19 -fvisibility=default -fgnuc-version=4.2.1 -fcxx-exceptions -fignore-exceptions -fexceptions -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o main.o -x c++ main.cpp
clang -cc1 version 17.0.0 based upon LLVM 17.0.0git default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 /home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
 /home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot/include/compat
 /home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
 /home/jeff/dev/emsdk/upstream/lib/clang/17/include
 /home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
em++ ./main.o -o ./private.min.js -v --closure 1  --pre-js ./private.js
 "/home/jeff/dev/emsdk/upstream/bin/clang" --version
 "/home/jeff/dev/emsdk/upstream/bin/wasm-ld" -o ./private.min.wasm ./main.o -L/home/jeff/dev/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten -lGL -lal -lhtml5 -lstubs-debug -lnoexit -lc-debug -ldlmalloc -lcompiler_rt -lc++-noexcept -lc++abi-debug-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --allow-undefined-file=/tmp/tmpyw8cmnvj.undefined --strip-debug --export-if-defined=main --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=__main_argc_argv --export-if-defined=fflush --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_get_base --export=emscripten_stack_get_current --export=emscripten_stack_init --export=stackSave --export=stackRestore --export=stackAlloc --export=__wasm_call_ctors --export=__errno_location --export=__get_temp_ret --export=__set_temp_ret --export-table -z stack-size=65536 --initial-memory=16777216 --no-entry --max-memory=16777216 --stack-first
 "/home/jeff/dev/emsdk/upstream/bin/wasm-emscripten-finalize" --dyncalls-i64 --pass-arg=legalize-js-interface-exported-helpers ./private.min.wasm -o ./private.min.wasm --detect-features
 "/home/jeff/dev/emsdk/node/14.18.2_64bit/bin/node" /home/jeff/dev/emsdk/upstream/emscripten/src/compiler.js /tmp/tmpah8yiw70.json
Internal compiler error in src/compiler.js!
Please create a bug report at https://github.com/emscripten-core/emscripten/issues/
with a log of the build and the input files used to run. Exception message: "In the following macro:

 preJS() 

Error: /home/jeff/acorn/private.js:3: Unknown preprocessor directive #values;
    at preprocess (/home/jeff/dev/emsdk/upstream/emscripten/src/parseTools.js:131:19)
    at preJS (/home/jeff/dev/emsdk/upstream/emscripten/src/parseTools.js:1125:15)
    at eval (eval at <anonymous> (/home/jeff/dev/emsdk/upstream/emscripten/src/parseTools.js), <anonymous>:1:2)
    at eval (/home/jeff/dev/emsdk/upstream/emscripten/src/parseTools.js:25:19)
    at String.replace (<anonymous>)
    at processMacros (/home/jeff/dev/emsdk/upstream/emscripten/src/parseTools.js:23:15)
    at includeFile (/home/jeff/dev/emsdk/upstream/emscripten/src/jsifier.js:458:11)
    at finalCombiner (/home/jeff/dev/emsdk/upstream/emscripten/src/jsifier.js:485:5)
    at runJSify (/home/jeff/dev/emsdk/upstream/emscripten/src/jsifier.js:554:3)
    at Object.<anonymous> (/home/jeff/dev/emsdk/upstream/emscripten/src/compiler.js:97:3)
em++: error: '/home/jeff/dev/emsdk/node/14.18.2_64bit/bin/node /home/jeff/dev/emsdk/upstream/emscripten/src/compiler.js /tmp/tmpah8yiw70.json' failed (returned 1)
make: *** [Makefile:76: index.html] Error 1

I'll create a second issue for the other problem I encountered, which is in a different part of the toolchain.

private.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions