diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt index 789b03de64d..fd61616281f 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -264,7 +264,7 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR if (!generatedClass.outputFile.getName().endsWith(PackageClassUtils.PACKAGE_CLASS_NAME_SUFFIX + ".class")) return emptySet() val kotlinClass = generatedClass.outputClass - if (!kotlinClass.getClassHeader().isCompatiblePackageFacadeKind()) return emptySet() + if (kotlinClass == null || !kotlinClass.getClassHeader().isCompatiblePackageFacadeKind()) return emptySet() val classInternalName = JvmClassName.byClassId(kotlinClass.getClassId()).getInternalName() val oldClassSources = previousMappings.getClassSources(previousMappings.getName(classInternalName)) @@ -288,13 +288,14 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR for (generatedClass in generatedClasses) { val outputFile = generatedClass.outputFile val outputClass = generatedClass.outputClass + val outputClassContents = if (outputClass != null) outputClass.getFileContents() else outputFile.readBytes() // For package facade classes: we need to report all source files for it, not only currently compiled val allSourcesIncludingOld = getOldSourceFiles(generatedClass, previousMappings) + generatedClass.sourceFiles callback.associate(FileUtil.toSystemIndependentName(outputFile.getAbsolutePath()), allSourcesIncludingOld.map { FileUtil.toSystemIndependentName(it.getAbsolutePath()) }, - ClassReader(outputClass.getFileContents()) + ClassReader(outputClassContents) ) } @@ -320,7 +321,10 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR var recompilationDecision = DO_NOTHING for (generatedClass in generatedClasses) { - val newDecision = incrementalCaches[generatedClass.target]!!.saveFileToCache(generatedClass.sourceFiles, generatedClass.outputClass) + val outputClass = generatedClass.outputClass + if (outputClass == null) continue + + val newDecision = incrementalCaches[generatedClass.target]!!.saveFileToCache(generatedClass.sourceFiles, outputClass) recompilationDecision = recompilationDecision.merge(newDecision) } @@ -514,6 +518,5 @@ private class GeneratedJvmClass ( sourceFiles: Collection, outputFile: File ) : GeneratedFile(target, sourceFiles, outputFile) { - val outputClass = LocalFileKotlinClass.create(outputFile).sure( - "Couldn't load KotlinClass from $outputFile; it may happen because class doesn't have valid Kotlin annotations") + val outputClass = LocalFileKotlinClass.create(outputFile) } \ No newline at end of file