@@ -41,9 +41,11 @@ final class BasicLinkerBackend(config: LinkerBackendImpl.Config)
41
41
private [this ] var totalModules = 0
42
42
private [this ] val rewrittenModules = new AtomicInteger (0 )
43
43
44
+ private [this ] val fragmentIndex = new SourceMapWriter .Index
45
+
44
46
private [this ] val bodyPrinter : BodyPrinter = {
45
47
if (config.minify) IdentityPostTransformerBasedBodyPrinter
46
- else if (config.sourceMap) PrintedTreeWithSourceMapBodyPrinter
48
+ else if (config.sourceMap) new PrintedTreeWithSourceMapBodyPrinter (fragmentIndex)
47
49
else PrintedTreeWithoutSourceMapBodyPrinter
48
50
}
49
51
@@ -127,7 +129,7 @@ final class BasicLinkerBackend(config: LinkerBackendImpl.Config)
127
129
val sourceMapURI = OutputPatternsImpl .sourceMapURI(config.outputPatterns, moduleID.id)
128
130
129
131
val smWriter = new SourceMapWriter (sourceMapWriter, jsFileURI,
130
- config.relativizeSourceMapBase)
132
+ config.relativizeSourceMapBase, fragmentIndex )
131
133
132
134
jsFileWriter.write(printedModuleSetCache.headerBytes)
133
135
for (_ <- 0 until printedModuleSetCache.headerNewLineCount)
@@ -288,8 +290,8 @@ private object BasicLinkerBackend {
288
290
private object PrintedTreeWithoutSourceMapBodyPrinter
289
291
extends PrintedTreeBasedBodyPrinter (PostTransformerWithoutSourceMap )
290
292
291
- private object PrintedTreeWithSourceMapBodyPrinter
292
- extends PrintedTreeBasedBodyPrinter (PostTransformerWithSourceMap )
293
+ private class PrintedTreeWithSourceMapBodyPrinter ( fragmentIndex : SourceMapWriter . Index )
294
+ extends PrintedTreeBasedBodyPrinter (new PostTransformerWithSourceMap (fragmentIndex) )
293
295
294
296
private object PostTransformerWithoutSourceMap extends Emitter .PostTransformer [js.PrintedTree ] {
295
297
def transformStats (trees : List [js.Tree ], indent : Int ): List [js.PrintedTree ] = {
@@ -306,13 +308,14 @@ private object BasicLinkerBackend {
306
308
}
307
309
}
308
310
309
- private object PostTransformerWithSourceMap extends Emitter .PostTransformer [js.PrintedTree ] {
311
+ private class PostTransformerWithSourceMap (fragmentIndex : SourceMapWriter .Index )
312
+ extends Emitter .PostTransformer [js.PrintedTree ] {
310
313
def transformStats (trees : List [js.Tree ], indent : Int ): List [js.PrintedTree ] = {
311
314
if (trees.isEmpty) {
312
315
Nil // Fast path
313
316
} else {
314
317
val jsCodeWriter = new ByteArrayWriter ()
315
- val smFragmentBuilder = new SourceMapWriter .FragmentBuilder ()
318
+ val smFragmentBuilder = new SourceMapWriter .FragmentBuilder (fragmentIndex )
316
319
val printer = new Printers .JSTreePrinterWithSourceMap (jsCodeWriter, smFragmentBuilder, indent)
317
320
318
321
trees.foreach(printer.printStat(_))
0 commit comments