Fixed compilation. Some class files generated by kotlinc may have no annotation (that should be fixed later).

Original commit: 4b6112d380
This commit is contained in:
Evgeny Gerashchenko
2015-02-16 15:34:35 +03:00
parent 45a865658f
commit aa412c72fc
@@ -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<File>,
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)
}