google / google/closure-compiler
Cannot use -D for @define constant within a module
- Dominant language
- JavaScript
- Stars
- 7.7k
- Forks
- 1.2k
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 6
Description
Repro case:
``` js
// a.js
/** @define {string} */ var FOO = 'default foo';
export function test() { console.log(FOO); }
```
``` js
// b.js
import * as a from './a';
a.test();
```
```
java -jar compiler.jar --js *.js \
--language_in=ECMASCRIPT6_STRICT \
--language_out=ECMASCRIPT5_STRICT \
-D "FOO='hi'";
WARNING - unknown @define variable FOO
0 error(s), 1 warning(s)
'use strict';var module$a={},FOO$$module$a="default foo";function test$$module$a(){console.log(FOO$$module$a)}module$a.test=test$$module$a;module$a.test();
```
Things work if you use the mangled name:
```
java -jar compiler.jar --js *.js \
--language_in=ECMASCRIPT6_STRICT \
--language_out=ECMASCRIPT5_STRICT \
-D "FOO\$\$module\$a='hi'";
'use strict';var module$a={},FOO$$module$a="hi";function test$$module$a(){console.log(FOO$$module$a)}module$a.test=test$$module$a;module$a.test();
```
Contributor guide
Assessment
This issue has not been assessed yet.