From 4fdca24db4174e839c37656d9136c04bb48befb1 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Tue, 13 Dec 2016 13:46:30 +0300 Subject: [PATCH] Remove source annotations removing (not needed with KAPT3) --- .../IncrementalCompilationComponentsImpl.kt | 1 - .../SourceRetentionAnnotationHandlerImpl.kt | 30 ----- .../jetbrains/kotlin/incremental/buildUtil.kt | 7 +- .../kotlin/codegen/ClassBuilderMode.java | 11 +- .../jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt | 5 - ...eIncrementalCompilationComponentsClient.kt | 1 - .../kotlin/config/JVMConfigurationKeys.java | 4 - .../SourceRetentionAnnotationHandler.kt | 21 ---- .../kotlin/jps/build/KotlinBuilder.kt | 8 +- .../annotation/SourceAnnotationsRegistry.kt | 68 ----------- .../kotlin/bytecode/AnnotationsRemover.kt | 78 ------------- .../internal/Kapt3KotlinGradleSubplugin.kt | 2 +- .../kotlin/gradle/tasks/SyncOutputTask.kt | 15 +-- .../jetbrains/kotlin/gradle/tasks/Tasks.kt | 4 - .../IncrementalJvmCompilerRunner.kt | 6 +- .../kotlin/bytecode/AnnotationsRemoverTest.kt | 108 ------------------ .../AnnotationProcessingExtension.kt | 12 +- .../processing/AnnotationProcessingPlugin.kt | 6 +- .../annotation/processing/RoundAnnotations.kt | 13 +-- .../test/processor/AbstractProcessorTest.kt | 3 +- .../test/processor/ProcessorTests.kt | 9 -- 21 files changed, 14 insertions(+), 398 deletions(-) delete mode 100644 build-common/src/org/jetbrains/kotlin/incremental/SourceRetentionAnnotationHandlerImpl.kt delete mode 100644 core/descriptors/src/org/jetbrains/kotlin/incremental/components/SourceRetentionAnnotationHandler.kt delete mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/annotation/SourceAnnotationsRegistry.kt delete mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/bytecode/AnnotationsRemover.kt delete mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/bytecode/AnnotationsRemoverTest.kt diff --git a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalCompilationComponentsImpl.kt b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalCompilationComponentsImpl.kt index 2d0ef506d3e..80fd85a86c5 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalCompilationComponentsImpl.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalCompilationComponentsImpl.kt @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.incremental import org.jetbrains.kotlin.incremental.components.LookupTracker -import org.jetbrains.kotlin.incremental.components.SourceRetentionAnnotationHandler import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents import org.jetbrains.kotlin.modules.TargetId diff --git a/build-common/src/org/jetbrains/kotlin/incremental/SourceRetentionAnnotationHandlerImpl.kt b/build-common/src/org/jetbrains/kotlin/incremental/SourceRetentionAnnotationHandlerImpl.kt deleted file mode 100644 index 8526ea335c2..00000000000 --- a/build-common/src/org/jetbrains/kotlin/incremental/SourceRetentionAnnotationHandlerImpl.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.incremental - -import org.jetbrains.kotlin.incremental.components.SourceRetentionAnnotationHandler - -class SourceRetentionAnnotationHandlerImpl : SourceRetentionAnnotationHandler { - private val mutableSourceRetentionAnnotations = mutableSetOf() - - val sourceRetentionAnnotations: Set - get() = mutableSourceRetentionAnnotations - - override fun register(internalName: String) { - mutableSourceRetentionAnnotations += internalName - } -} \ No newline at end of file diff --git a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt index 780f20453b9..679b4a5ba5c 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt @@ -30,7 +30,6 @@ import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl import org.jetbrains.kotlin.config.IncrementalCompilation import org.jetbrains.kotlin.config.Services import org.jetbrains.kotlin.incremental.components.LookupTracker -import org.jetbrains.kotlin.incremental.components.SourceRetentionAnnotationHandler import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents import org.jetbrains.kotlin.modules.KotlinModuleXmlBuilder @@ -70,8 +69,7 @@ fun makeModuleFile(name: String, isTest: Boolean, outputDir: File, sourcesToComp fun makeCompileServices( incrementalCaches: Map, lookupTracker: LookupTracker, - compilationCanceledStatus: CompilationCanceledStatus?, - sourceRetentionAnnotationHandler: SourceRetentionAnnotationHandler? = null + compilationCanceledStatus: CompilationCanceledStatus? ): Services = with(Services.Builder()) { register(IncrementalCompilationComponents::class.java, @@ -79,9 +77,6 @@ fun makeCompileServices( compilationCanceledStatus?.let { register(CompilationCanceledStatus::class.java, it) } - sourceRetentionAnnotationHandler?.let { - register(SourceRetentionAnnotationHandler::class.java, it) - } build() } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBuilderMode.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBuilderMode.java index 2acc553cdad..77a379ecd09 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBuilderMode.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBuilderMode.java @@ -35,7 +35,7 @@ public class ClassBuilderMode { } public static ClassBuilderMode full(boolean generateSourceRetentionAnnotations) { - return generateSourceRetentionAnnotations ? KAPT2 : FULL; + return generateSourceRetentionAnnotations ? KAPT : FULL; } /** @@ -47,15 +47,6 @@ public class ClassBuilderMode { /* sourceRetention = */ false, /* generateMultiFileFacadePartClasses = */ true); - /** - * Full function bodies, write annotations with the "source" retention. - */ - private final static ClassBuilderMode KAPT2 = new ClassBuilderMode( - /* bodies = */ true, - /* metadata = */ true, - /* sourceRetention = */ true, - /* generateMultiFileFacadePartClasses = */ false); - /** * Generating light classes: Only function signatures */ diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt index 7bcd5629afd..d72c8f35352 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt @@ -37,7 +37,6 @@ import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException import org.jetbrains.kotlin.compiler.plugin.PluginCliOptionProcessingException import org.jetbrains.kotlin.compiler.plugin.cliPluginUsageString import org.jetbrains.kotlin.config.* -import org.jetbrains.kotlin.incremental.components.SourceRetentionAnnotationHandler import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.load.kotlin.DeserializedDescriptorResolver import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion @@ -267,10 +266,6 @@ class K2JVMCompiler : CLICompiler() { configuration.put(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS, components) } } - - services.get(SourceRetentionAnnotationHandler::class.java)?.let { handler -> - configuration.put(JVMConfigurationKeys.SOURCE_RETENTION_ANNOTATION_HANDLER, handler) - } } /** diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/RemoteIncrementalCompilationComponentsClient.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/RemoteIncrementalCompilationComponentsClient.kt index bd353d09432..8c4eaf78399 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/RemoteIncrementalCompilationComponentsClient.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/RemoteIncrementalCompilationComponentsClient.kt @@ -23,7 +23,6 @@ import org.jetbrains.kotlin.modules.TargetId import org.jetbrains.kotlin.daemon.common.CompilerCallbackServicesFacade import org.jetbrains.kotlin.daemon.common.DummyProfiler import org.jetbrains.kotlin.daemon.common.Profiler -import org.jetbrains.kotlin.incremental.components.SourceRetentionAnnotationHandler class RemoteIncrementalCompilationComponentsClient(val facade: CompilerCallbackServicesFacade, eventManger: EventManger, val profiler: Profiler = DummyProfiler()) : IncrementalCompilationComponents { diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java b/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java index 58eda62f05a..1dadfafec5f 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.config; import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl; -import org.jetbrains.kotlin.incremental.components.SourceRetentionAnnotationHandler; import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents; import org.jetbrains.kotlin.modules.Module; import org.jetbrains.kotlin.script.KotlinScriptDefinition; @@ -94,9 +93,6 @@ public class JVMConfigurationKeys { public static final CompilerConfigurationKey MODULE_XML_FILE = CompilerConfigurationKey.create("path to module.xml"); - public static final CompilerConfigurationKey SOURCE_RETENTION_ANNOTATION_HANDLER = - CompilerConfigurationKey.create("source retention annotation handler"); - public static final CompilerConfigurationKey DECLARATIONS_JSON_PATH = CompilerConfigurationKey.create("path to declarations output"); diff --git a/core/descriptors/src/org/jetbrains/kotlin/incremental/components/SourceRetentionAnnotationHandler.kt b/core/descriptors/src/org/jetbrains/kotlin/incremental/components/SourceRetentionAnnotationHandler.kt deleted file mode 100644 index a515d695268..00000000000 --- a/core/descriptors/src/org/jetbrains/kotlin/incremental/components/SourceRetentionAnnotationHandler.kt +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.incremental.components - -interface SourceRetentionAnnotationHandler { - fun register(internalName: String) -} \ No newline at end of file diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt index 1fbc4e667b1..e1e672c9def 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -55,7 +55,6 @@ import org.jetbrains.kotlin.config.Services import org.jetbrains.kotlin.daemon.common.isDaemonEnabled import org.jetbrains.kotlin.incremental.* import org.jetbrains.kotlin.incremental.components.LookupTracker -import org.jetbrains.kotlin.incremental.components.SourceRetentionAnnotationHandler import org.jetbrains.kotlin.jps.JpsKotlinCompilerSettings import org.jetbrains.kotlin.jps.incremental.* import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache @@ -206,8 +205,7 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) { val project = projectDescriptor.project val lookupTracker = getLookupTracker(project) val incrementalCaches = getIncrementalCaches(chunk, context) - val sourceRetentionAnnotationHandler = SourceRetentionAnnotationHandlerImpl() - val environment = createCompileEnvironment(incrementalCaches, lookupTracker, sourceRetentionAnnotationHandler, context) + val environment = createCompileEnvironment(incrementalCaches, lookupTracker, context) if (!environment.success()) { environment.reportErrorsTo(messageCollector) return ABORT @@ -410,7 +408,6 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) { private fun createCompileEnvironment( incrementalCaches: Map, lookupTracker: LookupTracker, - sourceRetentionAnnotationHandler: SourceRetentionAnnotationHandler?, context: CompileContext ): JpsCompilerEnvironment { val compilerServices = with(Services.Builder()) { @@ -422,9 +419,6 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) { if (context.cancelStatus.isCanceled) throw CompilationCanceledException() } }) - sourceRetentionAnnotationHandler?.let { - register(SourceRetentionAnnotationHandler::class.java, it) - } build() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/annotation/SourceAnnotationsRegistry.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/annotation/SourceAnnotationsRegistry.kt deleted file mode 100644 index 568fd267c2b..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/annotation/SourceAnnotationsRegistry.kt +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.annotation - -import org.jetbrains.kotlin.incremental.components.SourceRetentionAnnotationHandler -import java.io.* -import java.util.* - -internal class SourceAnnotationsRegistry(private val file: File) : SourceRetentionAnnotationHandler { - private val mutableAnnotations: MutableSet by lazy { readAnnotations() } - val annotations: Set - get() = mutableAnnotations - - override fun register(internalName: String) { - mutableAnnotations.add(internalName) - } - - fun clear() { - mutableAnnotations.clear() - file.delete() - } - - fun flush() { - if (mutableAnnotations.isEmpty()) { - file.delete() - return - } - - if (!file.exists()) { - file.parentFile.mkdirs() - file.createNewFile() - } - - ObjectOutputStream(BufferedOutputStream(file.outputStream())).use { out -> - out.writeInt(mutableAnnotations.size) - mutableAnnotations.forEach { out.writeUTF(it) } - } - } - - private fun readAnnotations(): MutableSet { - val result = HashSet() - - if (!file.exists()) return result - - ObjectInputStream(BufferedInputStream(file.inputStream())).use { input -> - val size = input.readInt() - repeat(size) { - result.add(input.readUTF()) - } - } - - return result - } -} 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 deleted file mode 100644 index 01a56abba52..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/bytecode/AnnotationsRemover.kt +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.bytecode - -import org.jetbrains.org.objectweb.asm.* -import java.io.File -import java.util.* - -internal 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) - val visitor = ClassAnnotationRemover(classWriter) - reader.accept(visitor, 0) - outputFile.writeBytes(classWriter.toByteArray()) - } - - inner class ClassAnnotationRemover(classVisitor: ClassVisitor) : ClassVisitor(Opcodes.ASM5, classVisitor) { - override fun visitAnnotation(desc: String?, visible: Boolean): AnnotationVisitor? = - checkAnnotation(desc) { super.visitAnnotation(desc, visible) } - - override fun visitTypeAnnotation(typeRef: Int, typePath: TypePath?, desc: String?, visible: Boolean): AnnotationVisitor? = - checkAnnotation(desc) { super.visitTypeAnnotation(typeRef, typePath, desc, visible) } - - override fun visitMethod(access: Int, name: String?, desc: String?, signature: String?, exceptions: Array?): MethodVisitor { - val methodVisitor = super.visitMethod(access, name, desc, signature, exceptions) - return MethodAnnotationRemover(methodVisitor) - } - - override fun visitField(access: Int, name: String?, desc: String?, signature: String?, value: Any?): FieldVisitor { - val fieldVisitor = super.visitField(access, name, desc, signature, value) - return FieldAnnotationRemover(fieldVisitor) - } - } - - inner class MethodAnnotationRemover(methodVisitor: MethodVisitor) : MethodVisitor(Opcodes.ASM5, methodVisitor) { - override fun visitAnnotation(desc: String?, visible: Boolean): AnnotationVisitor? = - checkAnnotation(desc) { super.visitAnnotation(desc, visible) } - - override fun visitTypeAnnotation(typeRef: Int, typePath: TypePath?, desc: String?, visible: Boolean): AnnotationVisitor? = - checkAnnotation(desc) { super.visitTypeAnnotation(typeRef, typePath, desc, visible) } - - override fun visitParameterAnnotation(parameter: Int, desc: String?, visible: Boolean): AnnotationVisitor? = - checkAnnotation(desc) { super.visitParameterAnnotation(parameter, desc, visible) } - } - - inner class FieldAnnotationRemover(fieldVisitor: FieldVisitor) : FieldVisitor(Opcodes.ASM5, fieldVisitor) { - override fun visitAnnotation(desc: String?, visible: Boolean): AnnotationVisitor? = - checkAnnotation(desc) { super.visitAnnotation(desc, visible) } - - override fun visitTypeAnnotation(typeRef: Int, typePath: TypePath?, desc: String?, visible: Boolean): AnnotationVisitor? = - checkAnnotation(desc) { super.visitTypeAnnotation(typeRef, typePath, desc, visible) } - } - - private inline fun checkAnnotation(desc: String?, default: () -> AnnotationVisitor?): AnnotationVisitor? { - if (desc in annotations) return null - - return default() - } -} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/Kapt3KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/Kapt3KotlinGradleSubplugin.kt index 86cd4fc5018..9561c528ef9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/Kapt3KotlinGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/Kapt3KotlinGradleSubplugin.kt @@ -62,7 +62,7 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { } private val kotlinToKaptTasksMap = mutableMapOf() - + override fun isApplicable(project: Project, task: KotlinCompile) = Kapt3GradleSubplugin.isEnabled(project) fun getKaptGeneratedDir(project: Project, sourceSetName: String): File { 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 289267c6d2a..f810f834c56 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 @@ -23,7 +23,6 @@ import org.gradle.api.tasks.OutputFiles import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.incremental.IncrementalTaskInputs import org.gradle.api.tasks.incremental.InputFileDetails -import org.jetbrains.kotlin.bytecode.AnnotationsRemover import org.jetbrains.kotlin.gradle.plugin.kotlinDebug import java.io.File import java.io.ObjectInputStream @@ -58,12 +57,6 @@ internal open class SyncOutputTask : DefaultTask() { var kotlinOutputDir: File by Delegates.notNull() var javaOutputDir: File by Delegates.notNull() var kotlinTask: KotlinCompile by Delegates.notNull() - private val sourceAnnotations: Set by lazy { - kotlinTask.sourceAnnotationsRegistry?.annotations ?: emptySet() - } - private val annotationsRemover by lazy { - AnnotationsRemover(sourceAnnotations) - } // OutputDirectory needed for task to be incremental @get:OutputDirectory @@ -144,13 +137,7 @@ internal open class SyncOutputTask : DefaultTask() { if (!fileInKotlinDir.isFile) return fileInJavaDir.parentFile.mkdirs() - if (sourceAnnotations.isNotEmpty() && fileInKotlinDir.extension.toLowerCase() == "class") { - logger.kotlinDebug { "Removing source annotations from class: $fileInKotlinDir" } - annotationsRemover.transformClassFile(fileInKotlinDir, fileInJavaDir) - } - else { - fileInKotlinDir.copyTo(fileInJavaDir, overwrite = true) - } + fileInKotlinDir.copyTo(fileInJavaDir, overwrite = true) timestamps[fileInJavaDir] = fileInJavaDir.lastModified() diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index e2ec72b06a4..46b57a9f0d1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -27,7 +27,6 @@ import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.compile.AbstractCompile import org.gradle.api.tasks.incremental.IncrementalTaskInputs import org.jetbrains.kotlin.annotation.AnnotationFileUpdater -import org.jetbrains.kotlin.annotation.SourceAnnotationsRegistry import org.jetbrains.kotlin.cli.common.CLICompiler import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments @@ -165,8 +164,6 @@ open class KotlinCompile : AbstractKotlinCompile(), Kotl internal val pluginOptions = CompilerPluginOptions() internal var artifactDifferenceRegistryProvider: ArtifactDifferenceRegistryProvider? = null internal var artifactFile: File? = null - // created only if kapt2 is active - internal var sourceAnnotationsRegistry: SourceAnnotationsRegistry? = null override fun findKotlinCompilerJar(project: Project): File? = findKotlinJvmCompilerJar(project) @@ -227,7 +224,6 @@ open class KotlinCompile : AbstractKotlinCompile(), Kotl cacheVersions, reporter, kaptAnnotationsFileUpdater, - sourceAnnotationsRegistry, artifactDifferenceRegistryProvider, artifactFile ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt index a1dc3834f53..b190aaef305 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.incremental import org.jetbrains.kotlin.annotation.AnnotationFileUpdater -import org.jetbrains.kotlin.annotation.SourceAnnotationsRegistry import org.jetbrains.kotlin.build.GeneratedFile import org.jetbrains.kotlin.build.GeneratedJvmClass import org.jetbrains.kotlin.cli.common.ExitCode @@ -97,7 +96,6 @@ internal class IncrementalJvmCompilerRunner( private val cacheVersions: List, private val reporter: IncReporter, private var kaptAnnotationsFileUpdater: AnnotationFileUpdater? = null, - private val sourceAnnotationsRegistry: SourceAnnotationsRegistry? = null, private val artifactDifferenceRegistryProvider: ArtifactDifferenceRegistryProvider? = null, private val artifactFile: File? = null ) { @@ -394,7 +392,6 @@ internal class IncrementalJvmCompilerRunner( } if (exitCode == ExitCode.OK) { - sourceAnnotationsRegistry?.flush() cacheVersions.forEach { it.saveIfNeeded() } } @@ -462,7 +459,6 @@ internal class IncrementalJvmCompilerRunner( val outputItemCollector = OutputItemsCollectorImpl() @Suppress("NAME_SHADOWING") val messageCollector = MessageCollectorWrapper(messageCollector, outputItemCollector) - sourceAnnotationsRegistry?.clear() try { val incrementalCaches = makeIncrementalCachesMap(targets, { listOf() }, getIncrementalCache, { this }) @@ -473,7 +469,7 @@ internal class IncrementalJvmCompilerRunner( reporter.report { "compiling with args: ${ArgumentUtils.convertArgumentsToStringList(args)}" } reporter.report { "compiling with classpath: ${classpath.toList().sorted().joinToString()}" } - val compileServices = makeCompileServices(incrementalCaches, lookupTracker, compilationCanceledStatus, sourceAnnotationsRegistry) + val compileServices = makeCompileServices(incrementalCaches, lookupTracker, compilationCanceledStatus) val exitCode = compiler.exec(messageCollector, compileServices, args) val generatedFiles = outputItemCollector.generatedFiles(targets, targets.first(), {sourcesToCompile}, {outputDir}) reporter.reportCompileIteration(sourcesToCompile, exitCode) diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/bytecode/AnnotationsRemoverTest.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/bytecode/AnnotationsRemoverTest.kt deleted file mode 100644 index 2fafd4b3ef8..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/bytecode/AnnotationsRemoverTest.kt +++ /dev/null @@ -1,108 +0,0 @@ -package org.jetbrains.kotlin.bytecode - -import org.jetbrains.kotlin.cli.common.ExitCode -import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler -import org.jetbrains.kotlin.com.intellij.openapi.util.io.FileUtil.createTempDirectory -import org.jetbrains.kotlin.gradle.util.checkBytecodeContains -import org.jetbrains.kotlin.gradle.util.checkBytecodeNotContains -import org.junit.After -import org.junit.Test - -import org.junit.Assert.* -import org.junit.Before -import java.io.* -import kotlin.properties.Delegates - -class AnnotationsRemoverTest { - private var workingDir: File by Delegates.notNull() - - @Before - fun setUp() { - workingDir = createTempDirectory(AnnotationsRemoverTest::class.java.simpleName, null) - } - - @After - fun tearDown() { - workingDir.deleteRecursively() - } - - @Test - fun testRemoveAnnotations() { - // initial build - val sourceDir = File(workingDir, "src").apply { mkdirs() } - val annotationsKt = File(sourceDir, "annotations.kt").apply { - writeText(""" - package foo - - annotation class Ann1 - annotation class Ann2 - annotation class Ann3 - annotation class Ann4 - annotation class Ann5 - annotation class NotRemovableAnn1 - annotation class NotRemovableAnn2 - annotation class NotRemovableAnn3 - annotation class NotRemovableAnn4 - annotation class NotRemovableAnn5 - """.trimIndent()) - } - File(sourceDir, "A.kt").apply { - writeText(""" - import foo.* - - @Ann1 - @NotRemovableAnn1 - class A { - @get:Ann2 - @field:Ann3 - @get:NotRemovableAnn2 - @field:NotRemovableAnn3 - val i = 10 - - @Ann4 - @NotRemovableAnn4 - fun m(@Ann5 @NotRemovableAnn5 x: Int) {} - } - """.trimIndent()) - } - val annClassRegex = "annotation class (Ann\\d)".toRegex() - val annotationsToRemove = annClassRegex.findAll(annotationsKt.readText()).toList().map { "foo/${it.groupValues[1]}" } - assertEquals(5, annotationsToRemove.size) - - val notRemovableAnnClassRegex = "annotation class (NotRemovableAnn\\d)".toRegex() - val notRemovableAnns = notRemovableAnnClassRegex.findAll(annotationsKt.readText()).toList().map { "foo/${it.groupValues[1]}" } - assertEquals(5, notRemovableAnns.size) - - val outDir = File(workingDir, "out").apply { mkdirs() } - compileAll(sourceDir, outDir) - val aClass = File(outDir, "A.class") - assert(aClass.exists()) { "$aClass does not exist" } - checkBytecodeContains(aClass, annotationsToRemove) - - // remove annotations - val transformedOut = File(workingDir, "transformed").apply { mkdirs() } - val aTransformedClass = File(transformedOut, "A.class") - val remover = AnnotationsRemover(annotationsToRemove) - remover.transformClassFile(aClass, aTransformedClass) - checkBytecodeNotContains(aTransformedClass, annotationsToRemove) - checkBytecodeContains(aTransformedClass, notRemovableAnns) - } - - private fun compileAll(inputDir: File, outputDir: File) { - val ktFiles = inputDir.walk() - .filter { it.isFile && it.extension.toLowerCase() == "kt" } - .map { it.absolutePath } - .toList().toTypedArray() - - val byteOut = ByteArrayOutputStream() - val exitCode = PrintStream(byteOut).use { err -> - K2JVMCompiler().exec(err, *ktFiles, "-d", outputDir.absolutePath, "-Xadd-compiler-builtins") - } - - if (exitCode != ExitCode.OK) { - System.err.print(byteOut.toString()) - } - - assertEquals(ExitCode.OK, exitCode) - } -} \ No newline at end of file diff --git a/plugins/annotation-processing/src/org/jetbrains/kotlin/annotation/processing/AnnotationProcessingExtension.kt b/plugins/annotation-processing/src/org/jetbrains/kotlin/annotation/processing/AnnotationProcessingExtension.kt index 6606720abd2..958caeb1aff 100755 --- a/plugins/annotation-processing/src/org/jetbrains/kotlin/annotation/processing/AnnotationProcessingExtension.kt +++ b/plugins/annotation-processing/src/org/jetbrains/kotlin/annotation/processing/AnnotationProcessingExtension.kt @@ -34,7 +34,6 @@ import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper import org.jetbrains.kotlin.config.APPEND_JAVA_SOURCE_ROOTS_HANDLER_KEY import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.fileClasses.NoResolveFileClassesProvider -import org.jetbrains.kotlin.incremental.components.SourceRetentionAnnotationHandler import org.jetbrains.kotlin.java.model.elements.JeTypeElement import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.psi.KtFile @@ -56,11 +55,10 @@ class ClasspathBasedAnnotationProcessingExtension( classesOutputDir: File, javaSourceRoots: List, verboseOutput: Boolean, - incrementalDataFile: File?, - sourceRetentionAnnotationHandler: SourceRetentionAnnotationHandler? -) : AbstractAnnotationProcessingExtension(generatedSourcesOutputDir, + incrementalDataFile: File? +) : AbstractAnnotationProcessingExtension(generatedSourcesOutputDir, classesOutputDir, javaSourceRoots, verboseOutput, - incrementalDataFile, sourceRetentionAnnotationHandler) { + incrementalDataFile) { override fun loadAnnotationProcessors(): List { val classLoader = URLClassLoader(annotationProcessingClasspath.map { it.toURI().toURL() }.toTypedArray()) return ServiceLoader.load(Processor::class.java, classLoader).toList() @@ -72,8 +70,7 @@ abstract class AbstractAnnotationProcessingExtension( val classesOutputDir: File, val javaSourceRoots: List, val verboseOutput: Boolean, - val incrementalDataFile: File? = null, - val sourceRetentionAnnotationHandler: SourceRetentionAnnotationHandler? = null + val incrementalDataFile: File? = null ) : AnalysisHandlerExtension { private companion object { val LINE_SEPARATOR = System.getProperty("line.separator") ?: "\n" @@ -201,7 +198,6 @@ abstract class AbstractAnnotationProcessingExtension( } val firstRoundAnnotations = RoundAnnotations( - sourceRetentionAnnotationHandler, bindingContext(), createTypeMapper()) diff --git a/plugins/annotation-processing/src/org/jetbrains/kotlin/annotation/processing/AnnotationProcessingPlugin.kt b/plugins/annotation-processing/src/org/jetbrains/kotlin/annotation/processing/AnnotationProcessingPlugin.kt index b38a72ea547..ce71f5dd0e7 100755 --- a/plugins/annotation-processing/src/org/jetbrains/kotlin/annotation/processing/AnnotationProcessingPlugin.kt +++ b/plugins/annotation-processing/src/org/jetbrains/kotlin/annotation/processing/AnnotationProcessingPlugin.kt @@ -141,12 +141,10 @@ class AnnotationProcessingComponentRegistrar : ComponentRegistrar { // Annotations with the "SOURCE" retention will be written to class files project.putUserData(IS_KAPT2_ENABLED_KEY, true) - - val sourceRetentionAnnotationHandler = configuration[JVMConfigurationKeys.SOURCE_RETENTION_ANNOTATION_HANDLER] - + val annotationProcessingExtension = ClasspathBasedAnnotationProcessingExtension( classpath, apOptions, generatedOutputDirFile, classesOutputDir, javaRoots, verboseOutput, - incrementalDataFile, sourceRetentionAnnotationHandler) + incrementalDataFile) project.registerService(JeElementRegistry::class.java, JeElementRegistry()) diff --git a/plugins/annotation-processing/src/org/jetbrains/kotlin/annotation/processing/RoundAnnotations.kt b/plugins/annotation-processing/src/org/jetbrains/kotlin/annotation/processing/RoundAnnotations.kt index e6cda54ecac..3ff87c760cd 100644 --- a/plugins/annotation-processing/src/org/jetbrains/kotlin/annotation/processing/RoundAnnotations.kt +++ b/plugins/annotation-processing/src/org/jetbrains/kotlin/annotation/processing/RoundAnnotations.kt @@ -22,14 +22,12 @@ import org.jetbrains.kotlin.asJava.elements.KtLightAnnotation import org.jetbrains.kotlin.asJava.findFacadeClass import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper -import org.jetbrains.kotlin.incremental.components.SourceRetentionAnnotationHandler import org.jetbrains.kotlin.java.model.internal.getAnnotationsWithInherited import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.BindingContext internal class RoundAnnotations( - val sourceRetentionAnnotationHandler: SourceRetentionAnnotationHandler?, val bindingContext: BindingContext, val typeMapper: KotlinTypeMapper ) { @@ -51,7 +49,7 @@ internal class RoundAnnotations( val analyzedClasses: Set get() = mutableAnalyzedClasses - fun copy() = RoundAnnotations(sourceRetentionAnnotationHandler, bindingContext, typeMapper) + fun copy() = RoundAnnotations(bindingContext, typeMapper) fun analyzeFiles(files: Collection) = files.forEach { analyzeFile(it) } @@ -102,15 +100,6 @@ internal class RoundAnnotations( for (annotation in declaration.getAnnotationsWithInherited()) { val fqName = annotation.qualifiedName ?: continue - val ktLightAnnotation = annotation as? KtLightAnnotation - if (ktLightAnnotation != null && sourceRetentionAnnotationHandler != null && ktLightAnnotation.hasSourceRetention) { - val type = bindingContext[BindingContext.ANNOTATION, ktLightAnnotation.kotlinOrigin]?.type - if (type != null) { - val internalName = typeMapper.mapType(type).internalName - sourceRetentionAnnotationHandler.register(internalName) - } - } - if (BLACKLISTED_ANNOTATATIONS.any { fqName.startsWith(it) }) continue mutableAnnotationsMap.getOrPut(fqName, { mutableListOf() }).add(declaration) diff --git a/plugins/plugins-tests/tests/org/jetbrains/kotlin/annotation/processing/test/processor/AbstractProcessorTest.kt b/plugins/plugins-tests/tests/org/jetbrains/kotlin/annotation/processing/test/processor/AbstractProcessorTest.kt index 9c54e3bdc9f..5c33d4eea89 100755 --- a/plugins/plugins-tests/tests/org/jetbrains/kotlin/annotation/processing/test/processor/AbstractProcessorTest.kt +++ b/plugins/plugins-tests/tests/org/jetbrains/kotlin/annotation/processing/test/processor/AbstractProcessorTest.kt @@ -25,7 +25,6 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.codegen.AbstractBytecodeTextTest import org.jetbrains.kotlin.codegen.CodegenTestUtil import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages -import org.jetbrains.kotlin.incremental.SourceRetentionAnnotationHandlerImpl import org.jetbrains.kotlin.java.model.elements.JeAnnotationMirror import org.jetbrains.kotlin.java.model.elements.JeMethodExecutableElement import org.jetbrains.kotlin.java.model.elements.JeTypeElement @@ -47,7 +46,7 @@ import javax.lang.model.element.* class AnnotationProcessingExtensionForTests( val processors: List ) : AbstractAnnotationProcessingExtension(createTempDir(), createTempDir(), listOf(), true, - createIncrementalDataFile(), SourceRetentionAnnotationHandlerImpl()) { + createIncrementalDataFile()) { override fun loadAnnotationProcessors() = processors override val options: Map diff --git a/plugins/plugins-tests/tests/org/jetbrains/kotlin/annotation/processing/test/processor/ProcessorTests.kt b/plugins/plugins-tests/tests/org/jetbrains/kotlin/annotation/processing/test/processor/ProcessorTests.kt index 230201e8ce0..7a1154c3770 100644 --- a/plugins/plugins-tests/tests/org/jetbrains/kotlin/annotation/processing/test/processor/ProcessorTests.kt +++ b/plugins/plugins-tests/tests/org/jetbrains/kotlin/annotation/processing/test/processor/ProcessorTests.kt @@ -19,7 +19,6 @@ package org.jetbrains.kotlin.annotation.processing.test.processor import org.intellij.lang.annotations.Language import org.jetbrains.kotlin.annotation.processing.impl.DisposableRef import org.jetbrains.kotlin.annotation.processing.impl.KotlinProcessingEnvironment -import org.jetbrains.kotlin.incremental.SourceRetentionAnnotationHandlerImpl import org.jetbrains.kotlin.java.model.elements.* import org.jetbrains.kotlin.java.model.types.JeDeclaredType import org.jetbrains.kotlin.java.model.types.JeMethodExecutableTypeMirror @@ -255,14 +254,6 @@ class ProcessorTests : AbstractProcessorTest() { assertEquals(expectedText, text) } - fun testSourceRetention() { - test("SourceRetention", "*") { set, roundEnv, env -> } - val ext = getKapt2Extension() - val annotationHandler = ext.sourceRetentionAnnotationHandler as SourceRetentionAnnotationHandlerImpl - val annotations = annotationHandler.sourceRetentionAnnotations.sorted() - assertEquals("Source1, Source2, Source3, Source4, Test5\$Source5", annotations.joinToString()) - } - fun testKotlinAnnotationDefaultValueFromBinary() = test("DefaultValueFromBinary", "*") { set, roundEnv, env -> fun check(expectedValue: Boolean, className: String) { val clazz = env.findClass(className)