From 46d3afaeba0a37b4ae82d1343d6aa154c5b20e94 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Wed, 5 Aug 2015 15:51:10 +0300 Subject: [PATCH] Use package facade internal name when processing changed inline functions --- .../kotlin/jps/incremental/IncrementalCacheImpl.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt index 7596cb0c72e..b1dde50fcfb 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt @@ -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.JvmAnnotationNames 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.isCompatibleFileFacadeKind import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind @@ -218,7 +219,7 @@ public class IncrementalCacheImpl( val jvmClassName = JvmClassName.byInternalName(MODULE_MAPPING_FILE_NAME) protoMap.put(jvmClassName, file.readBytes(), isPackage = false, checkChangesIsOpenPart = false) dirtyOutputClassesMap.notDirty(MODULE_MAPPING_FILE_NAME) - sourceFiles.forEach { sourceToClassesMap.addSourceToClass(it, jvmClassName) } + sourceFiles.forEach { sourceToClassesMap.add(it, jvmClassName) } return DO_NOTHING } @@ -242,13 +243,13 @@ public class IncrementalCacheImpl( header.isCompatibleFileFacadeKind() -> { assert(sourceFiles.size() == 1) { "Package part from several source files: $sourceFiles" } packagePartMap.addPackagePart(className) + inlineFunctionsMap.process(className, fileBytes) getRecompilationDecision( protoChanged = protoMap.put(className, BitEncoding.decodeBytes(header.annotationData!!), isPackage = true), - constantsChanged = constantsMap.process(className, fileBytes), - inlinesChanged = inlineFunctionsMap.process(className, fileBytes) + constantsChanged = constantsMap.process(className, fileBytes) ) } - header.isCompatibleClassKind() -> + header.isCompatibleClassKind() -> { when (header.classKind!!) { JvmAnnotationNames.KotlinClass.Kind.CLASS -> getRecompilationDecision( 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 } + } 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" } packagePartMap.addPackagePart(className)