diff --git a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/processing/impl/ResolverImpl.kt b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/processing/impl/ResolverImpl.kt index f07b68e633..b6c1c5e065 100644 --- a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/processing/impl/ResolverImpl.kt +++ b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/processing/impl/ResolverImpl.kt @@ -544,6 +544,7 @@ class ResolverImpl( is KSClassDeclarationImpl -> resolveDeclaration(classDeclaration.ktClassOrObject) is KSClassDeclarationDescriptorImpl -> classDeclaration.descriptor is KSClassDeclarationJavaImpl -> resolveJavaDeclaration(classDeclaration.psi) + is KSClassDeclarationJavaEnumEntryImpl -> resolveJavaDeclaration(classDeclaration.psi) else -> throw IllegalStateException("unexpected class: ${classDeclaration.javaClass}") } as ClassDescriptor? } diff --git a/kotlin-analysis-api/testData/signatureMapper.kt b/kotlin-analysis-api/testData/signatureMapper.kt new file mode 100644 index 0000000000..5b69ff8e24 --- /dev/null +++ b/kotlin-analysis-api/testData/signatureMapper.kt @@ -0,0 +1,67 @@ +/* + * Copyright 2020 Google LLC + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * + * 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. + */ + +// TEST PROCESSOR: MapSignatureProcessor +// EXPECTED: +// LCls; +// a: I +// foo: ()Ljava/lang/String; +// : ()V +// LJavaIntefaceWithVoid; +// getVoid: ()Ljava/lang/Void; +// LJavaClass; +// : ()V +// LJavaAnno; +// intParam: I +// : (I)V +// LJavaEnum; +// VAL1: LJavaEnum; +// VAL2: LJavaEnum; +// DEFAULT: LJavaEnum; +// values: ()[LJavaEnum; +// valueOf: (Ljava/lang/String;)LJavaEnum; +// entries: Lkotlin/enums/EnumEntries; +// END + +// FILE: Cls.kt +class Cls { + val a: Int = 1 + + fun foo(): String { return "1" } +} + +// FILE: JavaIntefaceWithVoid.java +interface JavaIntefaceWithVoid { + Void getVoid(); +} + +// FILE: JavaClass.java +class JavaClass { + JavaClass() {} +} + +// FILE: JavaAnno.java +@interface JavaAnno { + int intParam(); +} + +// FILE: JavaEnum.java +public enum JavaEnum { + VAL1, + VAL2, + DEFAULT +} diff --git a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/MapSignatureProcessor.kt b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/MapSignatureProcessor.kt index 1eb0cfc117..bc7824758e 100644 --- a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/MapSignatureProcessor.kt +++ b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/MapSignatureProcessor.kt @@ -31,7 +31,7 @@ class MapSignatureProcessor : AbstractTestProcessor() { } override fun process(resolver: Resolver): List { - listOf("Cls", "JavaIntefaceWithVoid", "JavaClass", "JavaAnno") + listOf("Cls", "JavaIntefaceWithVoid", "JavaClass", "JavaAnno", "JavaEnum") .map { className -> resolver.getClassDeclarationByName(className)!! }.forEach { subject -> diff --git a/test-utils/src/test/kotlin/com/google/devtools/ksp/test/KSPAATest.kt b/test-utils/src/test/kotlin/com/google/devtools/ksp/test/KSPAATest.kt index 92db4f3c5b..fb585093a4 100644 --- a/test-utils/src/test/kotlin/com/google/devtools/ksp/test/KSPAATest.kt +++ b/test-utils/src/test/kotlin/com/google/devtools/ksp/test/KSPAATest.kt @@ -555,7 +555,7 @@ class KSPAATest : AbstractKSPAATest() { @TestMetadata("signatureMapper.kt") @Test fun testSignatureMapper() { - runTest("../test-utils/testData/api/signatureMapper.kt") + runTest("../kotlin-analysis-api/testData/signatureMapper.kt") } @TestMetadata("superTypes.kt") diff --git a/test-utils/testData/api/signatureMapper.kt b/test-utils/testData/api/signatureMapper.kt index dab48bb6e3..9135fec79a 100644 --- a/test-utils/testData/api/signatureMapper.kt +++ b/test-utils/testData/api/signatureMapper.kt @@ -28,6 +28,13 @@ // LJavaAnno; // intParam: I // : (I)V +// LJavaEnum; +// VAL1: LJavaEnum; +// VAL2: LJavaEnum; +// DEFAULT: LJavaEnum; +// values: ()[LJavaEnum; +// valueOf: (Ljava/lang/String;)LJavaEnum; +// : (Ljava/lang/String;I)V // END // FILE: Cls.kt @@ -51,3 +58,10 @@ class JavaClass { @interface JavaAnno { int intParam(); } + +// FILE: JavaEnum.java +public enum JavaEnum { + VAL1, + VAL2, + DEFAULT +}