From 1bac87204795b75d5d7460f4ac344bffc293b7f9 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Fri, 9 Sep 2016 18:53:48 +0300 Subject: [PATCH] Do not try to remove source annotations from not .class file --- .../org/jetbrains/kotlin/bytecode/AnnotationsRemover.kt | 1 + .../org/jetbrains/kotlin/gradle/tasks/SyncOutputTask.kt | 7 ++++--- .../kapt2/simple/src/main/java/foo/topLevelDummyFun.kt | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kapt2/simple/src/main/java/foo/topLevelDummyFun.kt diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/bytecode/AnnotationsRemover.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/bytecode/AnnotationsRemover.kt index 50335c0cef0..1eec613a507 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/bytecode/AnnotationsRemover.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/bytecode/AnnotationsRemover.kt @@ -8,6 +8,7 @@ class AnnotationsRemover(annotations: Iterable) { private val annotations = annotations.mapTo(HashSet()) { "L$it;" } fun transformClassFile(inputFile: File, outputFile: File) { + assert(inputFile.extension.toLowerCase() == "class") { "Expected class file: $inputFile" } val bytes = inputFile.readBytes() val reader = ClassReader(bytes) val classWriter = ClassWriter(0) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/SyncOutputTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/SyncOutputTask.kt index 9423790a228..ea21ad25558 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/SyncOutputTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/SyncOutputTask.kt @@ -144,11 +144,12 @@ open class SyncOutputTask : DefaultTask() { if (!fileInKotlinDir.isFile) return fileInJavaDir.parentFile.mkdirs() - if (sourceAnnotations.isEmpty()) { - fileInKotlinDir.copyTo(fileInJavaDir, overwrite = true) + if (sourceAnnotations.isNotEmpty() && fileInKotlinDir.extension.toLowerCase() == "class") { + logger.kotlinDebug { "Removing source annotations from class: $fileInKotlinDir" } + annotationsRemover.transformClassFile(fileInKotlinDir, fileInJavaDir) } else { - annotationsRemover.transformClassFile(fileInKotlinDir, fileInJavaDir) + fileInKotlinDir.copyTo(fileInJavaDir, overwrite = true) } timestamps[fileInJavaDir] = fileInJavaDir.lastModified() diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kapt2/simple/src/main/java/foo/topLevelDummyFun.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kapt2/simple/src/main/java/foo/topLevelDummyFun.kt new file mode 100644 index 00000000000..c8a64f12f02 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kapt2/simple/src/main/java/foo/topLevelDummyFun.kt @@ -0,0 +1,3 @@ +package foo + +fun topLevelDummyFun() {}