Use package facade internal name when processing changed inline functions

This commit is contained in:
Alexey Tsvetkov
2015-08-05 15:51:10 +03:00
parent 9a29750d0e
commit 46d3afaeba
@@ -41,6 +41,7 @@ import org.jetbrains.kotlin.jps.incremental.storage.BasicMap
import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.load.java.JvmAnnotationNames import org.jetbrains.kotlin.load.java.JvmAnnotationNames
import org.jetbrains.kotlin.load.kotlin.ModuleMapping import org.jetbrains.kotlin.load.kotlin.ModuleMapping
import org.jetbrains.kotlin.load.kotlin.PackageClassUtils
import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind
import org.jetbrains.kotlin.load.kotlin.header.isCompatibleFileFacadeKind import org.jetbrains.kotlin.load.kotlin.header.isCompatibleFileFacadeKind
import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind
@@ -218,7 +219,7 @@ public class IncrementalCacheImpl(
val jvmClassName = JvmClassName.byInternalName(MODULE_MAPPING_FILE_NAME) val jvmClassName = JvmClassName.byInternalName(MODULE_MAPPING_FILE_NAME)
protoMap.put(jvmClassName, file.readBytes(), isPackage = false, checkChangesIsOpenPart = false) protoMap.put(jvmClassName, file.readBytes(), isPackage = false, checkChangesIsOpenPart = false)
dirtyOutputClassesMap.notDirty(MODULE_MAPPING_FILE_NAME) dirtyOutputClassesMap.notDirty(MODULE_MAPPING_FILE_NAME)
sourceFiles.forEach { sourceToClassesMap.addSourceToClass(it, jvmClassName) } sourceFiles.forEach { sourceToClassesMap.add(it, jvmClassName) }
return DO_NOTHING return DO_NOTHING
} }
@@ -242,13 +243,13 @@ public class IncrementalCacheImpl(
header.isCompatibleFileFacadeKind() -> { header.isCompatibleFileFacadeKind() -> {
assert(sourceFiles.size() == 1) { "Package part from several source files: $sourceFiles" } assert(sourceFiles.size() == 1) { "Package part from several source files: $sourceFiles" }
packagePartMap.addPackagePart(className) packagePartMap.addPackagePart(className)
inlineFunctionsMap.process(className, fileBytes)
getRecompilationDecision( getRecompilationDecision(
protoChanged = protoMap.put(className, BitEncoding.decodeBytes(header.annotationData!!), isPackage = true), protoChanged = protoMap.put(className, BitEncoding.decodeBytes(header.annotationData!!), isPackage = true),
constantsChanged = constantsMap.process(className, fileBytes), constantsChanged = constantsMap.process(className, fileBytes)
inlinesChanged = inlineFunctionsMap.process(className, fileBytes)
) )
} }
header.isCompatibleClassKind() -> header.isCompatibleClassKind() -> {
when (header.classKind!!) { when (header.classKind!!) {
JvmAnnotationNames.KotlinClass.Kind.CLASS -> getRecompilationDecision( JvmAnnotationNames.KotlinClass.Kind.CLASS -> getRecompilationDecision(
protoChanged = protoMap.put(className, BitEncoding.decodeBytes(header.annotationData!!), isPackage = false), protoChanged = protoMap.put(className, BitEncoding.decodeBytes(header.annotationData!!), isPackage = false),
@@ -257,7 +258,10 @@ public class IncrementalCacheImpl(
JvmAnnotationNames.KotlinClass.Kind.LOCAL_CLASS, JvmAnnotationNames.KotlinClass.Kind.ANONYMOUS_OBJECT -> DO_NOTHING JvmAnnotationNames.KotlinClass.Kind.LOCAL_CLASS, JvmAnnotationNames.KotlinClass.Kind.ANONYMOUS_OBJECT -> DO_NOTHING
} }
}
header.syntheticClassKind == JvmAnnotationNames.KotlinSyntheticClass.Kind.PACKAGE_PART -> { header.syntheticClassKind == JvmAnnotationNames.KotlinSyntheticClass.Kind.PACKAGE_PART -> {
val facadeClassName = PackageClassUtils.getPackageClassInternalName(kotlinClass.classId.packageFqName)
inlineFunctionsMap.process(JvmClassName.byInternalName(facadeClassName), fileBytes)
assert(sourceFiles.size() == 1) { "Package part from several source files: $sourceFiles" } assert(sourceFiles.size() == 1) { "Package part from several source files: $sourceFiles" }
packagePartMap.addPackagePart(className) packagePartMap.addPackagePart(className)