Add serializer for compile-time constant initializer

This commit is contained in:
Natalia Ukhorskaya
2014-02-05 13:01:38 +04:00
parent 073d345841
commit a2879f229a
10 changed files with 229 additions and 13 deletions
@@ -42,6 +42,7 @@ import org.jetbrains.jet.lang.resolve.kotlin.KotlinClassFinder
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe
import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializers
import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializersStorage
import org.jetbrains.jet.lang.resolve.kotlin.ConstantDescriptorDeserializer
public fun DeserializerForDecompiler(classFile: VirtualFile): DeserializerForDecompiler {
val kotlinClass = KotlinBinaryClassCache.getKotlinBinaryClass(classFile)
@@ -115,9 +116,21 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
annotationDeserializer.setStorage(deserializerStorage)
}
private val constantDeserializer = ConstantDescriptorDeserializer();
{
constantDeserializer.setClassResolver {
fqName ->
classes(fqName.toClassId())
}
constantDeserializer.setKotlinClassFinder(localClassFinder)
constantDeserializer.setErrorReporter(LOGGING_REPORTER)
constantDeserializer.setStorage(deserializerStorage)
}
private val deserializers = DescriptorDeserializers();
{
deserializers.setAnnotationDescriptorDeserializer(annotationDeserializer)
deserializers.setConstantDescriptorDeserializer(constantDeserializer)
}
private val descriptorFinder = object : DescriptorFinder {