diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java index 01262e389fd..2728c646c83 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java @@ -294,7 +294,7 @@ public class FunctionCodegen { private void markEnumOrInnerConstructorParameterAsSynthetic(MethodVisitor mv, int i) { // IDEA's ClsPsi builder fails to annotate synthetic parameters - if (state.getClassBuilderMode() != ClassBuilderMode.FULL) return; + if (state.getClassBuilderMode() == ClassBuilderMode.LIGHT_CLASSES) return; // This is needed to avoid RuntimeInvisibleParameterAnnotations error in javac: // see MethodWriter.visitParameterAnnotation() diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIT.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIT.kt index c988daf983c..19a99361a8e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIT.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIT.kt @@ -36,6 +36,22 @@ class KaptIT: BaseGradleIT() { } } + @Test + fun testEnumConstructor() { + val project = Project("kaptEnumConstructor", GRADLE_VERSION) + + project.build("build") { + assertSuccessful() + assertContains(":compileKotlin") + assertContains(":compileJava") + assertFileExists("build/tmp/kapt/main/wrappers/annotations.main.txt") + } + + project.build("build") { + assertSuccessful() + } + } + @Test fun testStubs() { val project = Project("kaptStubs", GRADLE_VERSION) diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptEnumConstructor/build.gradle b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptEnumConstructor/build.gradle new file mode 100644 index 00000000000..1df8376f5c8 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptEnumConstructor/build.gradle @@ -0,0 +1,27 @@ +buildscript { + ext.kotlin_version = '1.1-SNAPSHOT' + + repositories { + maven { url 'file://' + pathToKotlinPlugin } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +apply plugin: "java" +apply plugin: "kotlin" + +repositories { + maven { url 'file://' + pathToKotlinPlugin } +} + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + compile "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version" + kapt "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version" +} + +kapt { + generateStubs = true +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptEnumConstructor/src/main/java/javaPackage/JavaClass.java b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptEnumConstructor/src/main/java/javaPackage/JavaClass.java new file mode 100644 index 00000000000..aca87803a98 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptEnumConstructor/src/main/java/javaPackage/JavaClass.java @@ -0,0 +1,25 @@ +/* + * Copyright 2010-2015 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 javaPackage; + +import example.TestEnum; + +public class JavaClass { + public void test() { + TestEnum t = TestEnum.ENTRY; + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptEnumConstructor/src/main/java/test.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptEnumConstructor/src/main/java/test.kt new file mode 100644 index 00000000000..4940b8e1310 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptEnumConstructor/src/main/java/test.kt @@ -0,0 +1,7 @@ +// See KT-12694 Java class cannot access (Kotlin) enum with String constructor param + +package example + +enum class TestEnum(val value: String) { + ENTRY(""); +}