K2: resolve Java enum entries from the beginning (related to KT-59464)
This commit is contained in:
committed by
Space Team
parent
e6d43c1f48
commit
f8ca440e96
Vendored
+1
-1
@@ -1,3 +1,3 @@
|
||||
FILE: main.kt
|
||||
public final val enumMap: R|java/util/EnumMap<JavaEnum!, kotlin/String!>| = R|java/util/EnumMap.EnumMap|<R|JavaEnum!|, R|kotlin/String!|>(R|kotlin/collections/mapOf|<R|JavaEnum!|, R|kotlin/String|>(Q|JavaEnum|.R|/JavaEnum.A|.R|kotlin/to|<R|@EnhancedNullability JavaEnum|, R|kotlin/String|>(String(A))))
|
||||
public final val enumMap: R|java/util/EnumMap<JavaEnum!, kotlin/String!>| = R|java/util/EnumMap.EnumMap|<R|JavaEnum!|, R|kotlin/String!|>(R|kotlin/collections/mapOf|<R|JavaEnum!|, R|kotlin/String|>(Q|JavaEnum|.R|/JavaEnum.A|.R|kotlin/to|<R|JavaEnum|, R|kotlin/String|>(String(A))))
|
||||
public get(): R|java/util/EnumMap<JavaEnum!, kotlin/String!>|
|
||||
|
||||
+6
@@ -18383,6 +18383,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
|
||||
runTest("compiler/testData/codegen/box/fir/cannotCastToFunctionInIf.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("capitalizationNotEnhanced.kt")
|
||||
public void testCapitalizationNotEnhanced() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fir/capitalizationNotEnhanced.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassBuilder.kt")
|
||||
public void testClassBuilder() throws Exception {
|
||||
|
||||
+6
@@ -18383,6 +18383,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
|
||||
runTest("compiler/testData/codegen/box/fir/cannotCastToFunctionInIf.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("capitalizationNotEnhanced.kt")
|
||||
public void testCapitalizationNotEnhanced() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fir/capitalizationNotEnhanced.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassBuilder.kt")
|
||||
public void testClassBuilder() throws Exception {
|
||||
|
||||
@@ -501,6 +501,7 @@ abstract class FirJavaFacade(
|
||||
isStatic = javaField.isStatic
|
||||
}
|
||||
returnTypeRef = returnType.toFirJavaTypeRef(session, javaTypeParameterStack)
|
||||
.resolveIfJavaType(session, javaTypeParameterStack, mode = FirJavaTypeConversionMode.ANNOTATION_MEMBER)
|
||||
resolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES
|
||||
origin = javaOrigin(javaField.isFromSource)
|
||||
}.apply {
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// FULL_JDK
|
||||
// JVM_TARGET: 1.8
|
||||
// MODULE: m1
|
||||
// FILE: Nls.java
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Documented
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE, ElementType.TYPE_USE, ElementType.TYPE, ElementType.PACKAGE})
|
||||
public @interface Nls {
|
||||
|
||||
enum Capitalization {
|
||||
NotSpecified,
|
||||
Title,
|
||||
Sentence
|
||||
}
|
||||
|
||||
Capitalization capitalization() default Capitalization.NotSpecified;
|
||||
}
|
||||
|
||||
// FILE: Bundle.java
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class Bundle {
|
||||
public static Supplier<@Nls String> pointer() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// MODULE: m2(m1)
|
||||
// FILE: some.kt
|
||||
|
||||
import java.util.function.Supplier
|
||||
import Nls.Capitalization.Title
|
||||
|
||||
object Bar {
|
||||
fun foo(s: Supplier<@Nls(capitalization = Title) String>?) {}
|
||||
}
|
||||
|
||||
// MODULE: m3(m2, m1)
|
||||
// FILE: box.kt
|
||||
|
||||
fun box(): String {
|
||||
Bar.foo(Bundle.pointer())
|
||||
return "OK"
|
||||
}
|
||||
+1
-1
@@ -2,7 +2,7 @@ FILE fqName:<root> fileName:/javaEnum.kt
|
||||
PROPERTY name:test visibility:public modality:FINAL [val]
|
||||
FIELD PROPERTY_BACKING_FIELD name:test type:<root>.JEnum visibility:private [final,static]
|
||||
EXPRESSION_BODY
|
||||
GET_ENUM 'ENUM_ENTRY IR_EXTERNAL_JAVA_DECLARATION_STUB name:ONE' type=@[EnhancedNullability] <root>.JEnum
|
||||
GET_ENUM 'ENUM_ENTRY IR_EXTERNAL_JAVA_DECLARATION_STUB name:ONE' type=<root>.JEnum
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test> visibility:public modality:FINAL <> () returnType:<root>.JEnum
|
||||
correspondingProperty: PROPERTY name:test visibility:public modality:FINAL [val]
|
||||
BLOCK_BODY
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
public final enum class AnnotatedEnumEntry : R|kotlin/Enum<test/AnnotatedEnumEntry!>| {
|
||||
@R|test/AnnotatedEnumEntry.Anno|(value = String(a)) public final static enum entry E1: R|@EnhancedNullability test/AnnotatedEnumEntry|
|
||||
@R|test/AnnotatedEnumEntry.Anno|(value = String(b)) @R|test/AnnotatedEnumEntry.Anno2|() public final static enum entry E2: R|@EnhancedNullability test/AnnotatedEnumEntry|
|
||||
public final static enum entry E3: R|@EnhancedNullability test/AnnotatedEnumEntry|
|
||||
@R|test/AnnotatedEnumEntry.Anno|(value = String(a)) public final static enum entry E1: R|test/AnnotatedEnumEntry|
|
||||
@R|test/AnnotatedEnumEntry.Anno|(value = String(b)) @R|test/AnnotatedEnumEntry.Anno2|() public final static enum entry E2: R|test/AnnotatedEnumEntry|
|
||||
public final static enum entry E3: R|test/AnnotatedEnumEntry|
|
||||
public final static fun values(): R|kotlin/Array<test/AnnotatedEnumEntry>| {
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ public abstract interface CustomAnnotation : R|kotlin/Any| {
|
||||
|
||||
}
|
||||
public final enum class MyEnum : R|kotlin/Enum<test/CustomAnnotation.MyEnum!>| {
|
||||
public final static enum entry ONE: R|@EnhancedNullability test/CustomAnnotation.MyEnum|
|
||||
public final static enum entry ONE: R|test/CustomAnnotation.MyEnum|
|
||||
public final static fun values(): R|kotlin/Array<test/CustomAnnotation.MyEnum>| {
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ public open class EnumArgumentWithCustomToString : R|kotlin/Any| {
|
||||
public constructor(): R|test/EnumArgumentWithCustomToString|
|
||||
|
||||
public final enum class E : R|kotlin/Enum<test/EnumArgumentWithCustomToString.E!>| {
|
||||
public final static enum entry CAKE: R|@EnhancedNullability test/EnumArgumentWithCustomToString.E|
|
||||
public final static enum entry CAKE: R|test/EnumArgumentWithCustomToString.E|
|
||||
public final static fun values(): R|kotlin/Array<test/EnumArgumentWithCustomToString.E>| {
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
public final enum class EnumConstructorParameter : R|kotlin/Enum<test/EnumConstructorParameter!>| {
|
||||
public final static enum entry INSTANCE: R|@EnhancedNullability test/EnumConstructorParameter|
|
||||
public final static enum entry INSTANCE: R|test/EnumConstructorParameter|
|
||||
private constructor(@R|test/EnumConstructorParameter.Anno|(value = String(string)) s: R|kotlin/String!|): R|test/EnumConstructorParameter|
|
||||
|
||||
private constructor(x: R|kotlin/Int|): R|test/EnumConstructorParameter|
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ public open class NestedEnumArgument : R|kotlin/Any| {
|
||||
|
||||
}
|
||||
public final enum class E : R|kotlin/Enum<test/NestedEnumArgument.E!>| {
|
||||
public final static enum entry FIRST: R|@EnhancedNullability test/NestedEnumArgument.E|
|
||||
public final static enum entry FIRST: R|test/NestedEnumArgument.E|
|
||||
public final static fun values(): R|kotlin/Array<test/NestedEnumArgument.E>| {
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -2,8 +2,8 @@ public final annotation class Api : R|kotlin/Annotation| {
|
||||
public constructor(status: R|test/Api.Status|): R|test/Api|
|
||||
|
||||
public final enum class Status : R|kotlin/Enum<test/Api.Status!>| {
|
||||
public final static enum entry Ok: R|@EnhancedNullability test/Api.Status|
|
||||
public final static enum entry Error: R|@EnhancedNullability test/Api.Status|
|
||||
public final static enum entry Ok: R|test/Api.Status|
|
||||
public final static enum entry Error: R|test/Api.Status|
|
||||
public final static fun values(): R|kotlin/Array<test/Api.Status>| {
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
public final enum class EnumMembers : R|kotlin/Enum<test/EnumMembers!>| {
|
||||
public final static enum entry FIRST: R|@EnhancedNullability test/EnumMembers|
|
||||
public final static enum entry SECOND: R|@EnhancedNullability test/EnumMembers|
|
||||
public final static enum entry FIRST: R|test/EnumMembers|
|
||||
public final static enum entry SECOND: R|test/EnumMembers|
|
||||
public final field isFirst: R|kotlin/Boolean|
|
||||
|
||||
public open fun first(): R|kotlin/Boolean|
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
public final enum class EnumWithSpecializedEntry : R|kotlin/Enum<test/EnumWithSpecializedEntry!>| {
|
||||
public final static enum entry E1: R|@EnhancedNullability test/EnumWithSpecializedEntry|
|
||||
public final static enum entry E2: R|@EnhancedNullability test/EnumWithSpecializedEntry|
|
||||
public final static enum entry E1: R|test/EnumWithSpecializedEntry|
|
||||
public final static enum entry E2: R|test/EnumWithSpecializedEntry|
|
||||
public final static fun values(): R|kotlin/Array<test/EnumWithSpecializedEntry>| {
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
public final enum class JavaEnum : R|kotlin/Enum<test/JavaEnum!>| {
|
||||
public final static enum entry ENTRY: R|@EnhancedNullability test/JavaEnum|
|
||||
public final static enum entry ANOTHER: R|@EnhancedNullability test/JavaEnum|
|
||||
public final static enum entry ENTRY: R|test/JavaEnum|
|
||||
public final static enum entry ANOTHER: R|test/JavaEnum|
|
||||
public final static fun values(): R|kotlin/Array<test/JavaEnum>| {
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
public final enum class Enum : R|kotlin/Enum<test/Enum!>| {
|
||||
public final static enum entry A: R|@EnhancedNullability test/Enum|
|
||||
public final static enum entry B: R|@EnhancedNullability test/Enum|
|
||||
public final static enum entry C: R|@EnhancedNullability test/Enum|
|
||||
public final static enum entry A: R|test/Enum|
|
||||
public final static enum entry B: R|test/Enum|
|
||||
public final static enum entry C: R|test/Enum|
|
||||
public final static fun values(): R|kotlin/Array<test/Enum>| {
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
public final enum class StaticMembersInEnum : R|kotlin/Enum<test/StaticMembersInEnum!>| {
|
||||
public final static enum entry ENTRY: R|@EnhancedNullability test/StaticMembersInEnum|
|
||||
public final static enum entry ENTRY: R|test/StaticMembersInEnum|
|
||||
public open static field STATIC_FIELD: R|kotlin/Int|
|
||||
|
||||
public final static field CONSTANT: R|test/StaticMembersInEnum!|
|
||||
|
||||
+6
@@ -18383,6 +18383,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/fir/cannotCastToFunctionInIf.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("capitalizationNotEnhanced.kt")
|
||||
public void testCapitalizationNotEnhanced() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fir/capitalizationNotEnhanced.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassBuilder.kt")
|
||||
public void testClassBuilder() throws Exception {
|
||||
|
||||
+6
@@ -18383,6 +18383,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
|
||||
runTest("compiler/testData/codegen/box/fir/cannotCastToFunctionInIf.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("capitalizationNotEnhanced.kt")
|
||||
public void testCapitalizationNotEnhanced() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fir/capitalizationNotEnhanced.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassBuilder.kt")
|
||||
public void testClassBuilder() throws Exception {
|
||||
|
||||
+5
@@ -15275,6 +15275,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/fir/cannotCastToFunctionInIf.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("capitalizationNotEnhanced.kt")
|
||||
public void testCapitalizationNotEnhanced() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fir/capitalizationNotEnhanced.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("ClassBuilder.kt")
|
||||
public void testClassBuilder() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fir/ClassBuilder.kt");
|
||||
|
||||
Reference in New Issue
Block a user