google / google/closure-compiler
INTERNAL COMPILER ERROR when compiling into ES6
- Dominant language
- JavaScript
- Stars
- 7.7k
- Forks
- 1.2k
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 6
Description
code:
```
const Message = {
/**
* @param {{
* text: (undefined|string),
* }} data
* @return {{
* text: string,
* }}
*/
create(data = {}) {
const {
text = '',
} = data
return {
text,
}
},
}
const Data = {
/**
* @param {{
* id: (undefined|string),
* message: (undefined|string),
* }=} config
*/
create(config = {}) {
const {
id = 'id',
message = Message.create(),
} = config
return {
id,
message,
}
},
}
console.log(Data)
```
command line:
```
java -jar closure-compiler-1.0-SNAPSHOT.jar --js index.js --compilation_level=ADVANCED --language_out=ECMASCRIPT6
```
compiler output:
```
java.lang.RuntimeException: INTERNAL COMPILER ERROR.
Please report this problem.
DEFAULT_VALUE 29 [length: 9] [source_file: index.js]
Node(RETURN): index.js:32:2
return {
Parent(BLOCK): index.js:27:21
create(config = {}) {
at com.google.common.base.Preconditions.checkState(Preconditions.java:507)
at com.google.javascript.rhino.IR.exprResult(IR.java:243)
at com.google.javascript.jscomp.DeadAssignmentsElimination.tryRemoveAssignment(DeadAssignmentsElimination.java:313)
at com.google.javascript.jscomp.DeadAssignmentsElimination.tryRemoveAssignment(DeadAssignmentsElimination.java:326)
at com.google.javascript.jscomp.DeadAssignmentsElimination.tryRemoveAssignment(DeadAssignmentsElimination.java:193)
at com.google.javascript.jscomp.DeadAssignmentsElimination.tryRemoveDeadAssignments(DeadAssignmentsElimination.java:187)
at com.google.javascript.jscomp.DeadAssignmentsElimination.eliminateDeadAssignments(DeadAssignmentsElimination.java:129)
at com.google.javascript.jscomp.DeadAssignmentsElimination.exitScope(DeadAssignmentsElimination.java:87)
at com.google.javascript.jscomp.NodeTraversal.popScope(NodeTraversal.java:1072)
at com.google.javascript.jscomp.NodeTraversal.popScope(NodeTraversal.java:1063)
at com.google.javascript.jscomp.NodeTraversal.traverseBlockScope(NodeTraversal.java:1015)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:881)
at com.google.javascript.jscomp.NodeTraversal.traverseFunction(NodeTraversal.java:926)
at com.google.javascript.jscomp.NodeTraversal.handleFunction(NodeTraversal.java:849)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:865)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:999)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:883)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:999)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:883)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:999)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:883)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:999)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:883)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:999)
at com.google.javascript.jscomp.NodeTraversal.handleScript(NodeTraversal.java:837)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:862)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:999)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:883)
at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:371)
at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:381)
at com.google.javascript.jscomp.DeadAssignmentsElimination.process(DeadAssignmentsElimination.java:62)
at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:328)
at com.google.javascript.jscomp.PhaseOptimizer$Loop.process(PhaseOptimizer.java:473)
at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:237)
at com.google.javascript.jscomp.Compiler.performOptimizations(Compiler.java:2369)
at com.google.javascript.jscomp.Compiler.lambda$stage2Passes$1(Compiler.java:789)
at com.google.javascript.jscomp.CompilerExecutor$2.call(CompilerExecutor.java:102)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: DEFAULT_VALUE 29 [length: 9] [source_file: index.js]
... 41 more
```
Contributor guide
Research direction
Start with the inline index.js reproducer and run the stated Java command using ADVANCED compilation and ECMASCRIPT6 output. Then inspect DeadAssignmentsElimination at the stack-trace location and add a regression case for this input; done means compilation no longer throws the INTERNAL COMPILER ERROR.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100