google / google/closure-compiler
ClosurePass does not play nicely with code stripping and `if (!COMPILED)`
- Dominant language
- JavaScript
- Stars
- 7.7k
- Forks
- 1.2k
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 6
Description
[Repro][1]
```js
var COMPILED = true;
if (!COMPILED) {
goog.provide('foo.bar');
}
goog.provide('foo.baz');
foo.baz = function() { log(23); };
foo.baz();
```
compiles to
```js
var foo;
foo.baz = function() {
log(23);
};
foo.baz();
```
which is a runtime error.
[1]: https://closure-compiler-debugger.appspot.com/#input0%3Dvar%2520COMPILED%2520%253D%2520true%253B%250Aif%2520(!COMPILED)%2520%257B%250A%2520%2520goog.provide('foo.bar')%253B%250A%257D%250A%250Agoog.provide('foo.baz')%253B%250Afoo.baz%2520%253D%2520function()%2520%257B%2520log(23)%253B%2520%257D%253B%250Afoo.baz()%253B%26input1%26conformanceConfig%26externs%3Dfunction%2520log(x)%2520%257B%257D%26refasterjs-template%26CHECK_SYMBOLS%3D1%26MISSING_PROPERTIES%3D1%26TRANSPILE%3D1%26CHECK_TYPES%3D1%26CHECK_REPORT_MISSING_OVERRIDE%3D1%26COMPUTE_FUNCTION_SIDE_EFFECTS%3D1%26FOLD_CONSTANTS%3D1%26DEAD_ASSIGNMENT_ELIMINATION%3D1%26INLINE_CONSTANTS%3D1%26COALESCE_VARIABLE_NAMES%3D1%26FLOW_SENSITIVE_INLINE_VARIABLES%3D1%26INLINE_PROPERTIES%3D1%26SMART_NAME_REMOVAL%3D1%26REMOVE_DEAD_CODE%3D1%26CHECK_UNREACHABLE_CODE%3D1%26EXTRACT_PROTOTYPE_MEMBER_DECLARATIONS%3D1%26REMOVE_ABSTRACT_METHODS%3D1%26REMOVE_UNUSED_PROTOTYPE_PROPERTIES%3D1%26REMOVE_UNUSED_CLASS_PROPERTIES%3D1%26REMOVE_UNUSED_PROTOTYPE_PROPERTIES_IN_EXTERNS%3D1%26REMOVE_UNUSED_VARIABLES%3D1%26COLLAPSE_VARIABLE_DECLARATIONS%3D1%26COLLAPSE_ANONYMOUS_FUNCTIONS%3D1%26ALIAS_ALL_STRINGS%3D1%26CONVERT_TO_DOTTED_PROPERTIES%3D1%26USE_TYPES_FOR_LOCAL_OPTIMIZATION%3D1%26LABEL_RENAMING%3D1%26DEVIRTUALIZE_PROTOTYPE_METHODS%3D1%26REWRITE_FUNCTION_EXPRESSIONS%3D1%26OPTIMIZE_CALLS%3D1%26OPTIMIZE_PARAMETERS%3D1%26OPTIMIZE_RETURNS%3D1%26MOVE_FUNCTION_DECLARATIONS%3D1%26MARK_NO_SIDE_EFFECT_CALLS%3D1%26CROSS_MODULE_CODE_MOTION%3D1%26CROSS_MODULE_METHOD_MOTION%3D1%26SYNTHETIC_BLOCK_MARKER%3D1%26CLOSURE_PASS%3D1%26PRESERVE_TYPE_ANNOTATIONS%3D1%26PRETTY_PRINT%3D1
Contributor guide
Assessment
This issue has not been assessed yet.