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:
@@ -264,7 +264,7 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR
|
|||||||
if (!generatedClass.outputFile.getName().endsWith(PackageClassUtils.PACKAGE_CLASS_NAME_SUFFIX + ".class")) return emptySet()
|
if (!generatedClass.outputFile.getName().endsWith(PackageClassUtils.PACKAGE_CLASS_NAME_SUFFIX + ".class")) return emptySet()
|
||||||
|
|
||||||
val kotlinClass = generatedClass.outputClass
|
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 classInternalName = JvmClassName.byClassId(kotlinClass.getClassId()).getInternalName()
|
||||||
val oldClassSources = previousMappings.getClassSources(previousMappings.getName(classInternalName))
|
val oldClassSources = previousMappings.getClassSources(previousMappings.getName(classInternalName))
|
||||||
@@ -288,13 +288,14 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR
|
|||||||
for (generatedClass in generatedClasses) {
|
for (generatedClass in generatedClasses) {
|
||||||
val outputFile = generatedClass.outputFile
|
val outputFile = generatedClass.outputFile
|
||||||
val outputClass = generatedClass.outputClass
|
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
|
// For package facade classes: we need to report all source files for it, not only currently compiled
|
||||||
val allSourcesIncludingOld = getOldSourceFiles(generatedClass, previousMappings) + generatedClass.sourceFiles
|
val allSourcesIncludingOld = getOldSourceFiles(generatedClass, previousMappings) + generatedClass.sourceFiles
|
||||||
|
|
||||||
callback.associate(FileUtil.toSystemIndependentName(outputFile.getAbsolutePath()),
|
callback.associate(FileUtil.toSystemIndependentName(outputFile.getAbsolutePath()),
|
||||||
allSourcesIncludingOld.map { FileUtil.toSystemIndependentName(it.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
|
var recompilationDecision = DO_NOTHING
|
||||||
for (generatedClass in generatedClasses) {
|
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)
|
recompilationDecision = recompilationDecision.merge(newDecision)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -514,6 +518,5 @@ private class GeneratedJvmClass (
|
|||||||
sourceFiles: Collection<File>,
|
sourceFiles: Collection<File>,
|
||||||
outputFile: File
|
outputFile: File
|
||||||
) : GeneratedFile(target, sourceFiles, outputFile) {
|
) : GeneratedFile(target, sourceFiles, outputFile) {
|
||||||
val outputClass = LocalFileKotlinClass.create(outputFile).sure(
|
val outputClass = LocalFileKotlinClass.create(outputFile)
|
||||||
"Couldn't load KotlinClass from $outputFile; it may happen because class doesn't have valid Kotlin annotations")
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user