Advance version of kotlinx serialization in imports-dumper
File separator are not escaped now, as there's no need to escape / character in JSON strings.
This commit is contained in:
@@ -6,7 +6,7 @@ plugins {
|
||||
id("jps-compatible")
|
||||
}
|
||||
|
||||
val kotlinxSerializationVersion = "0.4.2"
|
||||
val kotlinxSerializationVersion = "0.14.0"
|
||||
|
||||
dependencies {
|
||||
api(project(":compiler:frontend.java"))
|
||||
|
||||
+7
-7
@@ -6,10 +6,11 @@
|
||||
package org.jetbrains.kotlin.importsDumper
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import kotlinx.serialization.internal.LinkedHashMapSerializer
|
||||
import kotlinx.serialization.internal.StringSerializer
|
||||
import kotlinx.serialization.json.JSON
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.JsonConfiguration
|
||||
import kotlinx.serialization.list
|
||||
import kotlinx.serialization.map
|
||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||
import org.jetbrains.kotlin.container.ComponentProvider
|
||||
import org.jetbrains.kotlin.context.ProjectContext
|
||||
@@ -29,18 +30,17 @@ class ImportsDumperExtension(destinationPath: String) : AnalysisHandlerExtension
|
||||
files: Collection<KtFile>,
|
||||
bindingTrace: BindingTrace,
|
||||
componentProvider: ComponentProvider
|
||||
): AnalysisResult? {
|
||||
): AnalysisResult {
|
||||
val filePathToImports: MutableMap<String, List<String>> = mutableMapOf()
|
||||
|
||||
for (file in files) {
|
||||
filePathToImports[file.virtualFilePath] = file.importDirectives.map { it.text }
|
||||
}
|
||||
|
||||
val serializer = (StringSerializer to StringSerializer.list).map
|
||||
val serializer = LinkedHashMapSerializer(StringSerializer, StringSerializer.list)
|
||||
val jsonStringWithImports = Json(JsonConfiguration.Stable).toJson(serializer, filePathToImports)
|
||||
|
||||
val jsonStringWithImports = JSON.stringify(serializer, filePathToImports)
|
||||
|
||||
destination.writeText(jsonStringWithImports)
|
||||
destination.writeText(jsonStringWithImports.toString())
|
||||
|
||||
return AnalysisResult.success(bindingTrace.bindingContext, module, shouldGenerateCode = false)
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"$TESTDATA_DIR$\/a\/A1.kt":["import c.JavaC"],"$TESTDATA_DIR$\/a\/A2.kt":[],"$TESTDATA_DIR$\/b\/B1.kt":["import a.*"],"$TESTDATA_DIR$\/b\/nestedB\/B2.kt":["import a.A1 as AliasedA1","import a.A1"],"$TESTDATA_DIR$\/c\/C1.kt":["import a.A1","import a.A2","import b.B1.Companion.a2","import b.nestedB.bar","import b.nestedB.foo"]}
|
||||
{"$TESTDATA_DIR$/a/A1.kt":["import c.JavaC"],"$TESTDATA_DIR$/a/A2.kt":[],"$TESTDATA_DIR$/b/B1.kt":["import a.*"],"$TESTDATA_DIR$/b/nestedB/B2.kt":["import a.A1 as AliasedA1","import a.A1"],"$TESTDATA_DIR$/c/C1.kt":["import a.A1","import a.A2","import b.B1.Companion.a2","import b.nestedB.bar","import b.nestedB.foo"]}
|
||||
+1
-1
@@ -70,6 +70,6 @@ class ImportsDumperTest : TestCaseWithTmpdir() {
|
||||
|
||||
private fun String.relativizeAbsolutePaths(relativeTo: File): String {
|
||||
// JSON escapes slashes
|
||||
val pattern = relativeTo.absoluteFile.toString().replace(File.separatorChar.toString(), "\\/")
|
||||
val pattern = relativeTo.absoluteFile.toString().replace(File.separatorChar.toString(), "/")
|
||||
return this.replace(pattern, "\$TESTDATA_DIR$")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user