diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/inference/flexibleTypeInSystem.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/inference/flexibleTypeInSystem.fir.txt index 0aac7caa909..1d5ad5c78a7 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/inference/flexibleTypeInSystem.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/inference/flexibleTypeInSystem.fir.txt @@ -1,3 +1,3 @@ FILE: main.kt - public final val enumMap: R|java/util/EnumMap| = R|java/util/EnumMap.EnumMap|(R|kotlin/collections/mapOf|(Q|JavaEnum|.R|/JavaEnum.A|.R|kotlin/to|(String(A)))) + public final val enumMap: R|java/util/EnumMap| = R|java/util/EnumMap.EnumMap|(R|kotlin/collections/mapOf|(Q|JavaEnum|.R|/JavaEnum.A|.R|kotlin/to|(String(A)))) public get(): R|java/util/EnumMap| diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java index 8fbc2a09d97..7cf50bd4057 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java @@ -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 { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java index 0bff1c8ed04..1aaeef2c68f 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java @@ -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 { diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt index 248bb631056..937e846319d 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt @@ -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 { diff --git a/compiler/testData/codegen/box/fir/capitalizationNotEnhanced.kt b/compiler/testData/codegen/box/fir/capitalizationNotEnhanced.kt new file mode 100644 index 00000000000..27f4b0caf62 --- /dev/null +++ b/compiler/testData/codegen/box/fir/capitalizationNotEnhanced.kt @@ -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" +} diff --git a/compiler/testData/ir/irText/stubs/javaEnum.fir.ir.txt b/compiler/testData/ir/irText/stubs/javaEnum.fir.ir.txt index 894d18fc502..2d2b83d27cb 100644 --- a/compiler/testData/ir/irText/stubs/javaEnum.fir.ir.txt +++ b/compiler/testData/ir/irText/stubs/javaEnum.fir.ir.txt @@ -2,7 +2,7 @@ FILE fqName: fileName:/javaEnum.kt PROPERTY name:test visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:test type:.JEnum visibility:private [final,static] EXPRESSION_BODY - GET_ENUM 'ENUM_ENTRY IR_EXTERNAL_JAVA_DECLARATION_STUB name:ONE' type=@[EnhancedNullability] .JEnum + GET_ENUM 'ENUM_ENTRY IR_EXTERNAL_JAVA_DECLARATION_STUB name:ONE' type=.JEnum FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> () returnType:.JEnum correspondingProperty: PROPERTY name:test visibility:public modality:FINAL [val] BLOCK_BODY diff --git a/compiler/testData/loadJava/compiledJava/annotations/AnnotatedEnumEntry.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/AnnotatedEnumEntry.fir.txt index e987d439d4c..4d113202a5b 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/AnnotatedEnumEntry.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/AnnotatedEnumEntry.fir.txt @@ -1,7 +1,7 @@ public final enum class AnnotatedEnumEntry : R|kotlin/Enum| { - @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| { } diff --git a/compiler/testData/loadJava/compiledJava/annotations/CustomAnnotation.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/CustomAnnotation.fir.txt index 076a35c3fb7..30cbe047f13 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/CustomAnnotation.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/CustomAnnotation.fir.txt @@ -4,7 +4,7 @@ public abstract interface CustomAnnotation : R|kotlin/Any| { } public final enum class MyEnum : R|kotlin/Enum| { - 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| { } diff --git a/compiler/testData/loadJava/compiledJava/annotations/EnumArgumentWithCustomToString.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/EnumArgumentWithCustomToString.fir.txt index 942f3b37dbd..a604e8adbc7 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/EnumArgumentWithCustomToString.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/EnumArgumentWithCustomToString.fir.txt @@ -4,7 +4,7 @@ public open class EnumArgumentWithCustomToString : R|kotlin/Any| { public constructor(): R|test/EnumArgumentWithCustomToString| public final enum class E : R|kotlin/Enum| { - 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| { } diff --git a/compiler/testData/loadJava/compiledJava/annotations/EnumConstructorParameter.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/EnumConstructorParameter.fir.txt index b162efe7a44..05e9baaa778 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/EnumConstructorParameter.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/EnumConstructorParameter.fir.txt @@ -1,5 +1,5 @@ public final enum class EnumConstructorParameter : R|kotlin/Enum| { - 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| diff --git a/compiler/testData/loadJava/compiledJava/annotations/NestedEnumArgument.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/NestedEnumArgument.fir.txt index 646094ebea4..cfd785564c6 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/NestedEnumArgument.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/NestedEnumArgument.fir.txt @@ -8,7 +8,7 @@ public open class NestedEnumArgument : R|kotlin/Any| { } public final enum class E : R|kotlin/Enum| { - 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| { } diff --git a/compiler/testData/loadJava/compiledJava/annotations/NestedEnumInAnnotation.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/NestedEnumInAnnotation.fir.txt index bbb6e520729..842b8113688 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/NestedEnumInAnnotation.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/NestedEnumInAnnotation.fir.txt @@ -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| { - 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| { } diff --git a/compiler/testData/loadJava/compiledJava/enum/EnumMembers.fir.txt b/compiler/testData/loadJava/compiledJava/enum/EnumMembers.fir.txt index 4f21bf804f3..9ee185df6d0 100644 --- a/compiler/testData/loadJava/compiledJava/enum/EnumMembers.fir.txt +++ b/compiler/testData/loadJava/compiledJava/enum/EnumMembers.fir.txt @@ -1,6 +1,6 @@ public final enum class EnumMembers : R|kotlin/Enum| { - 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| diff --git a/compiler/testData/loadJava/compiledJava/enum/EnumWithSpecializedEntry.fir.txt b/compiler/testData/loadJava/compiledJava/enum/EnumWithSpecializedEntry.fir.txt index 8b9c25cc794..c34a43742cf 100644 --- a/compiler/testData/loadJava/compiledJava/enum/EnumWithSpecializedEntry.fir.txt +++ b/compiler/testData/loadJava/compiledJava/enum/EnumWithSpecializedEntry.fir.txt @@ -1,6 +1,6 @@ public final enum class EnumWithSpecializedEntry : R|kotlin/Enum| { - 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| { } diff --git a/compiler/testData/loadJava/compiledJava/enum/JavaEnum.fir.txt b/compiler/testData/loadJava/compiledJava/enum/JavaEnum.fir.txt index c3aad0ee5a2..3c7e25261b1 100644 --- a/compiler/testData/loadJava/compiledJava/enum/JavaEnum.fir.txt +++ b/compiler/testData/loadJava/compiledJava/enum/JavaEnum.fir.txt @@ -1,6 +1,6 @@ public final enum class JavaEnum : R|kotlin/Enum| { - 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| { } diff --git a/compiler/testData/loadJava/compiledJava/static/Enum.fir.txt b/compiler/testData/loadJava/compiledJava/static/Enum.fir.txt index 05ba1bf3fda..1b007faf349 100644 --- a/compiler/testData/loadJava/compiledJava/static/Enum.fir.txt +++ b/compiler/testData/loadJava/compiledJava/static/Enum.fir.txt @@ -1,7 +1,7 @@ public final enum class Enum : R|kotlin/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| { } diff --git a/compiler/testData/loadJava/compiledJava/static/StaticMembersInEnum.fir.txt b/compiler/testData/loadJava/compiledJava/static/StaticMembersInEnum.fir.txt index b44e52ca5f7..701f30f8fdd 100644 --- a/compiler/testData/loadJava/compiledJava/static/StaticMembersInEnum.fir.txt +++ b/compiler/testData/loadJava/compiledJava/static/StaticMembersInEnum.fir.txt @@ -1,5 +1,5 @@ public final enum class StaticMembersInEnum : R|kotlin/Enum| { - 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!| diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 4d1a992bf91..00a3cf6ca2f 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -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 { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java index 6d0bced646d..1e8e0beb3a6 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java @@ -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 { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 8adb515d3d1..fc839fdc64f 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -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");