Compare JS source maps in readable way in IC tests

This commit is contained in:
Alexey Tsvetkov
2018-04-07 23:14:55 +03:00
parent dee8b403e3
commit b0e8c85e88
2 changed files with 48 additions and 9 deletions
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.js.parser.sourcemaps
import java.io.File
import java.io.PrintStream
import java.io.Reader
@@ -31,13 +32,30 @@ class SourceMap(val sourceContentResolver: (String) -> Reader?) {
writer.println()
}
}
fun debugVerbose(writer: PrintStream, generatedJsFile: File) {
assert(generatedJsFile.exists()) { "$generatedJsFile does not exist!" }
val generatedLines = generatedJsFile.readLines().toTypedArray()
for ((index, group) in groups.withIndex()) {
writer.print("${index + 1}:")
val generatedLine = generatedLines[index]
val segmentsByColumn = group.segments.map { it.generatedColumnNumber to it }.toMap()
for (i in generatedLine.indices) {
segmentsByColumn[i]?.let { (_, sourceFile, sourceLine, sourceColumn) ->
writer.print("<$sourceFile:${sourceLine + 1}:${sourceColumn + 1}>")
}
writer.print(generatedLine[i])
}
writer.println()
}
}
}
class SourceMapSegment(
val generatedColumnNumber: Int,
val sourceFileName: String?,
val sourceLineNumber: Int,
val sourceColumnNumber: Int
data class SourceMapSegment(
val generatedColumnNumber: Int,
val sourceFileName: String?,
val sourceLineNumber: Int,
val sourceColumnNumber: Int
)
class SourceMapGroup {