Fix SourceElement for classes loaded in decompiler

This commit is contained in:
Alexander Udalov
2016-04-06 17:49:44 +03:00
parent 88106bb13b
commit 8ee278d02f
5 changed files with 8 additions and 4 deletions
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.builtins package org.jetbrains.kotlin.builtins
import org.jetbrains.kotlin.descriptors.SourceElement
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.serialization.ClassData import org.jetbrains.kotlin.serialization.ClassData
import org.jetbrains.kotlin.serialization.ClassDataWithSource import org.jetbrains.kotlin.serialization.ClassDataWithSource
@@ -36,6 +37,6 @@ class BuiltInsClassDataFinder(
override fun findClassData(classId: ClassId): ClassDataWithSource? { override fun findClassData(classId: ClassId): ClassDataWithSource? {
val classProto = classIdToProto[classId] ?: return null val classProto = classIdToProto[classId] ?: return null
return ClassDataWithSource(ClassData(nameResolver, classProto)) return ClassDataWithSource(ClassData(nameResolver, classProto), SourceElement.NO_SOURCE)
} }
} }
@@ -26,7 +26,7 @@ data class ClassData(
data class ClassDataWithSource( data class ClassDataWithSource(
val classData: ClassData, val classData: ClassData,
val sourceElement: SourceElement = SourceElement.NO_SOURCE val sourceElement: SourceElement
) )
data class PackageData( data class PackageData(
@@ -53,4 +53,6 @@ sealed class ProtoContainer(
} }
abstract fun debugFqName(): FqName abstract fun debugFqName(): FqName
override fun toString() = "${javaClass.simpleName}: ${debugFqName()}"
} }
@@ -131,7 +131,7 @@ class DirectoryBasedDataFinder(
return null return null
} }
return ClassDataWithSource(JvmProtoBufUtil.readClassDataFrom(data, strings)) return ClassDataWithSource(JvmProtoBufUtil.readClassDataFrom(data, strings), KotlinJvmBinarySourceElement(binaryClass))
} }
} }
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.serialization.js package org.jetbrains.kotlin.serialization.js
import org.jetbrains.kotlin.descriptors.SourceElement
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.serialization.ClassData import org.jetbrains.kotlin.serialization.ClassData
import org.jetbrains.kotlin.serialization.ClassDataWithSource import org.jetbrains.kotlin.serialization.ClassDataWithSource
@@ -31,6 +32,6 @@ class KotlinJavascriptClassDataFinder(
override fun findClassData(classId: ClassId): ClassDataWithSource? { override fun findClassData(classId: ClassId): ClassDataWithSource? {
val stream = loadResource(KotlinJavascriptSerializedResourcePaths.getClassMetadataPath(classId)) ?: return null val stream = loadResource(KotlinJavascriptSerializedResourcePaths.getClassMetadataPath(classId)) ?: return null
val classProto = ProtoBuf.Class.parseFrom(stream, JsSerializerProtocol.extensionRegistry) val classProto = ProtoBuf.Class.parseFrom(stream, JsSerializerProtocol.extensionRegistry)
return ClassDataWithSource(ClassData(nameResolver, classProto)) return ClassDataWithSource(ClassData(nameResolver, classProto), SourceElement.NO_SOURCE)
} }
} }