google / google/closure-compiler

"Incorrect source mappings order" exception when options.printSourceAfterEachPass = true

Open
#2,131 2 comments 0 reactions 0 assignees View on GitHub
triage-done
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.