google / google/closure-compiler
"Incorrect source mappings order" exception when options.printSourceAfterEachPass = true
- Dominant language
- JavaScript
- Stars
- 7.7k
- Forks
- 1.2k
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 6
Description
I get an "Incorrect source mappings order" exception when I try to generate a source map with options.printSourceAfterEachPass set to true.
Minimal example:
```java
CompilerOptions options = new CompilerOptions();
CompilationLevel.SIMPLE_OPTIMIZATIONS.setOptionsForCompilationLevel(options);
options.setPrintSourceAfterEachPass(true);
options.setSourceMapOutputPath("/tmp/source.map");
SourceFile extern = SourceFile.fromCode("extern", "");
SourceFile input = SourceFile.fromCode("input", "var a");
Compiler compiler = new Compiler();
compiler.compile(extern, input, options);
```
results in this error:
Exception in thread "main" java.lang.IllegalStateException: Incorrect source mappings order, previous : (0,4)
new : (0,0)
at com.google.common.base.Preconditions.checkState(Preconditions.java:199)
at com.google.debugging.sourcemap.SourceMapGeneratorV3.addMapping(SourceMapGeneratorV3.java:257)
at com.google.javascript.jscomp.SourceMap.addMapping(SourceMap.java:162)
at com.google.javascript.jscomp.CodePrinter$MappedCodePrinter.generateSourceMap(CodePrinter.java:130)
at com.google.javascript.jscomp.CodePrinter.toSource(CodePrinter.java:731)
at com.google.javascript.jscomp.CodePrinter.access$300(CodePrinter.java:38)
at com.google.javascript.jscomp.CodePrinter$Builder.build(CodePrinter.java:673)
at com.google.javascript.jscomp.Compiler.toSource(Compiler.java:1970)
at com.google.javascript.jscomp.Compiler.access$400(Compiler.java:83)
at com.google.javascript.jscomp.Compiler$10.call(Compiler.java:1929)
at com.google.javascript.jscomp.Compiler$10.call(Compiler.java:1888)
at com.google.javascript.jscomp.CompilerExecutor.runInCompilerThread(CompilerExecutor.java:118)
at com.google.javascript.jscomp.Compiler.runInCompilerThread(Compiler.java:725)
at com.google.javascript.jscomp.Compiler.toSource(Compiler.java:1888)
at com.google.javascript.jscomp.Compiler$6.call(Compiler.java:1783)
at com.google.javascript.jscomp.Compiler$6.call(Compiler.java:1772)
at com.google.javascript.jscomp.CompilerExecutor.runInCompilerThread(CompilerExecutor.java:118)
at com.google.javascript.jscomp.Compiler.runInCompilerThread(Compiler.java:725)
at com.google.javascript.jscomp.Compiler.toSource(Compiler.java:1772)
at com.google.javascript.jscomp.Compiler.getCurrentJsSource(Compiler.java:988)
at com.google.javascript.jscomp.Compiler.afterPass(Compiler.java:974)
at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:287)
at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:217)
at com.google.javascript.jscomp.Compiler.check(Compiler.java:855)
at com.google.javascript.jscomp.Compiler.compileInternal(Compiler.java:750)
at com.google.javascript.jscomp.Compiler.access$000(Compiler.java:83)
at com.google.javascript.jscomp.Compiler$2.call(Compiler.java:698)
at com.google.javascript.jscomp.Compiler$2.call(Compiler.java:695)
at com.google.javascript.jscomp.CompilerExecutor$2.call(CompilerExecutor.java:93)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Removing either of the lines
```java
options.setPrintSourceAfterEachPass(true);
```
or
```java
options.setSourceMapOutputPath("/tmp/source.map");
```
gives a successful run.
(using Maven version v20160911)
Contributor guide
Assessment
This issue has not been assessed yet.