diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/StaticFromBaseClass.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/StaticFromBaseClass.fir.txt index 10f284331d9..e3626c1dea9 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/StaticFromBaseClass.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/StaticFromBaseClass.fir.txt @@ -1,5 +1,5 @@ FILE: main.kt public final fun test(): R|kotlin/Unit| { - lval project: R|kotlin/String!| = Q|PlatformDataKeys|.R|/CommonDataKeys.PROJECT*s| + lval project: R|kotlin/String| = Q|PlatformDataKeys|.R|/CommonDataKeys.PROJECT*s| lval member: R|kotlin/String!| = R|/PlatformDataKeys.PlatformDataKeys|().R|/CommonDataKeys.MEMBER| } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt index 747316e0ff0..51188e7a3de 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt @@ -123,7 +123,14 @@ class FirSignatureEnhancement( val newReturnTypeRef = enhanceReturnType( firElement, emptyList(), firElement.computeDefaultQualifiers(), predefinedEnhancementInfo = null - ) + ).let { + val lowerBound = it.type.lowerBoundIfFlexible() + if ((lowerBound.isString || lowerBound.isInt) && firElement.isStatic && firElement.hasConstantInitializer) { + it.withReplacedConeType(it.type.withNullability(ConeNullability.NOT_NULL, session.typeContext)) + } else { + it + } + } val symbol = FirFieldSymbol(original.callableId) buildJavaField { diff --git a/compiler/testData/codegen/box/javaVisibility/package/cannotAccessInterfaceMemberViaReceiver.fir.ir.txt b/compiler/testData/codegen/box/javaVisibility/package/cannotAccessInterfaceMemberViaReceiver.fir.ir.txt index f4c42dcde7b..cab04570505 100644 --- a/compiler/testData/codegen/box/javaVisibility/package/cannotAccessInterfaceMemberViaReceiver.fir.ir.txt +++ b/compiler/testData/codegen/box/javaVisibility/package/cannotAccessInterfaceMemberViaReceiver.fir.ir.txt @@ -9,8 +9,7 @@ FILE fqName: fileName:/Child.kt $this: VALUE_PARAMETER name: type:.Child BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun foo (): kotlin.String declared in .Child' - TYPE_OP type=kotlin.String origin=IMPLICIT_NOTNULL typeOperand=kotlin.String - GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:publicStaticField type:@[FlexibleNullability] kotlin.String? visibility:public [final,static]' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY + GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:publicStaticField type:kotlin.String visibility:public [final,static]' type=kotlin.String origin=GET_PROPERTY FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] overridden: public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in javapackage.PublicParentClass diff --git a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity.fir.diag.txt b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity.fir.diag.txt index 0290182e902..4c7707671f7 100644 --- a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity.fir.diag.txt +++ b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity.fir.diag.txt @@ -1 +1 @@ -/test.kt:(154,158): error: Overload resolution ambiguity between candidates: [static field SOME: String!, static enum entry SOME: SomeEnum] +/test.kt:(154,158): error: Overload resolution ambiguity between candidates: [static field SOME: String, static enum entry SOME: SomeEnum] diff --git a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.fir.diag.txt b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.fir.diag.txt index 95bc8521b41..eaf3c3708a1 100644 --- a/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.fir.diag.txt +++ b/compiler/testData/diagnostics/tests/imports/EnumEntryVsStaticAmbiguity3.fir.diag.txt @@ -1 +1 @@ -/test.kt:(160,164): error: Overload resolution ambiguity between candidates: [static field SOME: String!, static enum entry SOME: SomeEnum] +/test.kt:(160,164): error: Overload resolution ambiguity between candidates: [static field SOME: String, static enum entry SOME: SomeEnum] diff --git a/compiler/testData/diagnostics/tests/modifiers/const/kotlinJavaCycle.fir.kt b/compiler/testData/diagnostics/tests/modifiers/const/kotlinJavaCycle.fir.kt new file mode 100644 index 00000000000..0a0039e972e --- /dev/null +++ b/compiler/testData/diagnostics/tests/modifiers/const/kotlinJavaCycle.fir.kt @@ -0,0 +1,21 @@ +// IGNORE_REVERSED_RESOLVE +// IGNORE_CONTRACT_VIOLATIONS +// FILE: Bar.java + +public class Bar { + public static final int BAR = Foo.FOO + 1; +} + +// FILE: Test.kt + +class Foo { + companion object { + const val FOO = Baz.BAZ + 1 + } +} + +class Baz { + companion object { + const val BAZ = Bar.BAR + 1 + } +} diff --git a/compiler/testData/diagnostics/tests/modifiers/const/kt12248.kt b/compiler/testData/diagnostics/tests/modifiers/const/kt12248.kt index 51711f7fef2..a93496a207b 100644 --- a/compiler/testData/diagnostics/tests/modifiers/const/kt12248.kt +++ b/compiler/testData/diagnostics/tests/modifiers/const/kt12248.kt @@ -1,3 +1,5 @@ +// IGNORE_REVERSED_RESOLVE +// IGNORE_CONTRACT_VIOLATIONS // FIR_IDENTICAL // FILE: Bar.java diff --git a/compiler/testData/diagnostics/tests/visibility/packagePrivateStaticInterfaceFieldViaKotlinClass.fir.txt b/compiler/testData/diagnostics/tests/visibility/packagePrivateStaticInterfaceFieldViaKotlinClass.fir.txt index a7dac33ae8d..1f6b65a3da3 100644 --- a/compiler/testData/diagnostics/tests/visibility/packagePrivateStaticInterfaceFieldViaKotlinClass.fir.txt +++ b/compiler/testData/diagnostics/tests/visibility/packagePrivateStaticInterfaceFieldViaKotlinClass.fir.txt @@ -14,8 +14,8 @@ FILE: Child.kt } public final fun foo(): R|kotlin/Unit| { - lval x: R|kotlin/String!| = Q|javapackage/PublicParentClass|.R|javapackage/PackagePrivateGrandparentInterface.publicStaticField*s| - lval y: R|kotlin/String!| = Q|javapackage/PublicParentClass|.R|javapackage/PackagePrivateGrandparentInterface.publicStaticField*s| + lval x: R|kotlin/String| = Q|javapackage/PublicParentClass|.R|javapackage/PackagePrivateGrandparentInterface.publicStaticField*s| + lval y: R|kotlin/String| = Q|javapackage/PublicParentClass|.R|javapackage/PackagePrivateGrandparentInterface.publicStaticField*s| lval z: = Q|javapackage/KotlinParentClass|.# } diff --git a/compiler/testData/ir/irText/declarations/kt29833.fir.ir.txt b/compiler/testData/ir/irText/declarations/kt29833.fir.ir.txt index 02ce45b3893..587ea1f3dfb 100644 --- a/compiler/testData/ir/irText/declarations/kt29833.fir.ir.txt +++ b/compiler/testData/ir/irText/declarations/kt29833.fir.ir.txt @@ -6,26 +6,26 @@ FILE fqName:interop fileName:/Definitions.kt DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:Definitions modality:FINAL visibility:public superTypes:[kotlin.Any]' PROPERTY name:KT_CONSTANT visibility:public modality:FINAL [const,val] - FIELD PROPERTY_BACKING_FIELD name:KT_CONSTANT type:@[FlexibleNullability] kotlin.String? visibility:public [final] + FIELD PROPERTY_BACKING_FIELD name:KT_CONSTANT type:kotlin.String visibility:public [final] EXPRESSION_BODY CONST String type=kotlin.String value="constant" - FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:interop.Definitions) returnType:@[FlexibleNullability] kotlin.String? + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:interop.Definitions) returnType:kotlin.String correspondingProperty: PROPERTY name:KT_CONSTANT visibility:public modality:FINAL [const,val] $this: VALUE_PARAMETER name: type:interop.Definitions BLOCK_BODY - RETURN type=kotlin.Nothing from='public final fun (): @[FlexibleNullability] kotlin.String? declared in interop.Definitions' - GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:KT_CONSTANT type:@[FlexibleNullability] kotlin.String? visibility:public [final]' type=@[FlexibleNullability] kotlin.String? origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in interop.Definitions' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:KT_CONSTANT type:kotlin.String visibility:public [final]' type=kotlin.String origin=null receiver: GET_VAR ': interop.Definitions declared in interop.Definitions.' type=interop.Definitions origin=null PROPERTY name:ktValue visibility:public modality:FINAL [val] - FIELD PROPERTY_BACKING_FIELD name:ktValue type:@[FlexibleNullability] kotlin.String? visibility:private [final] + FIELD PROPERTY_BACKING_FIELD name:ktValue type:kotlin.String visibility:private [final] EXPRESSION_BODY - GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:CONSTANT type:@[FlexibleNullability] kotlin.String? visibility:public [final,static]' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY - FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:interop.Definitions) returnType:@[FlexibleNullability] kotlin.String? + GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:CONSTANT type:kotlin.String visibility:public [final,static]' type=kotlin.String origin=GET_PROPERTY + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:interop.Definitions) returnType:kotlin.String correspondingProperty: PROPERTY name:ktValue visibility:public modality:FINAL [val] $this: VALUE_PARAMETER name: type:interop.Definitions BLOCK_BODY - RETURN type=kotlin.Nothing from='public final fun (): @[FlexibleNullability] kotlin.String? declared in interop.Definitions' - GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:ktValue type:@[FlexibleNullability] kotlin.String? visibility:private [final]' type=@[FlexibleNullability] kotlin.String? origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in interop.Definitions' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:ktValue type:kotlin.String visibility:private [final]' type=kotlin.String origin=null receiver: GET_VAR ': interop.Definitions declared in interop.Definitions.' type=interop.Definitions origin=null FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] overridden: diff --git a/compiler/testData/ir/irText/declarations/kt29833.fir.kt.txt b/compiler/testData/ir/irText/declarations/kt29833.fir.kt.txt index 77c33be0584..fff97c14f7e 100644 --- a/compiler/testData/ir/irText/declarations/kt29833.fir.kt.txt +++ b/compiler/testData/ir/irText/declarations/kt29833.fir.kt.txt @@ -7,11 +7,11 @@ object Definitions { } - const val KT_CONSTANT: @FlexibleNullability String? + const val KT_CONSTANT: String field = "constant" get - val ktValue: @FlexibleNullability String? + val ktValue: String field = #CONSTANT get diff --git a/compiler/testData/ir/irText/declarations/kt29833.kt b/compiler/testData/ir/irText/declarations/kt29833.kt index 1022d51ef0b..3e159ea1619 100644 --- a/compiler/testData/ir/irText/declarations/kt29833.kt +++ b/compiler/testData/ir/irText/declarations/kt29833.kt @@ -1,4 +1,3 @@ -// SKIP_SIGNATURE_DUMP // TARGET_BACKEND: JVM // FILE: Definitions.kt // IR_FILE: kt29833.txt diff --git a/compiler/testData/ir/irText/declarations/kt29833.sig.kt.txt b/compiler/testData/ir/irText/declarations/kt29833.sig.kt.txt new file mode 100644 index 00000000000..ad291f63e8c --- /dev/null +++ b/compiler/testData/ir/irText/declarations/kt29833.sig.kt.txt @@ -0,0 +1,35 @@ +package interop + +// CHECK: +// Mangled name: interop.Definitions +// Public signature: interop/Definitions|null[0] +object Definitions { + // CHECK: + // Mangled name: interop.Definitions{}ktValue + // Public signature: interop/Definitions.ktValue|-7932704459611172354[0] + // Public signature debug description: {}ktValue + val ktValue: String + // CHECK JVM_IR: + // Mangled name: interop.Definitions#(){}kotlin.String + // Public signature: interop/Definitions.ktValue.|233367925131846588[0] + // Public signature debug description: (){}kotlin.String + get + + // CHECK: + // Mangled name: interop.Definitions#(){} + // Public signature: interop/Definitions.|-5645683436151566731[0] + // Public signature debug description: (){} + private constructor() /* primary */ + + // CHECK: + // Mangled name: interop.Definitions{}KT_CONSTANT + // Public signature: interop/Definitions.KT_CONSTANT|-8714407162660026641[0] + // Public signature debug description: {}KT_CONSTANT + const val KT_CONSTANT: String + // CHECK JVM_IR: + // Mangled name: interop.Definitions#(){}kotlin.String + // Public signature: interop/Definitions.KT_CONSTANT.|4728854297559730352[0] + // Public signature debug description: (){}kotlin.String + get + +} diff --git a/compiler/testData/ir/irText/firProblems/SameJavaFieldReferences.fir.ir.txt b/compiler/testData/ir/irText/firProblems/SameJavaFieldReferences.fir.ir.txt deleted file mode 100644 index 59958e9a854..00000000000 --- a/compiler/testData/ir/irText/firProblems/SameJavaFieldReferences.fir.ir.txt +++ /dev/null @@ -1,7 +0,0 @@ -FILE fqName: fileName:/SameJavaFieldReferences.kt - FUN name:foo visibility:public modality:FINAL <> () returnType:kotlin.Unit - BLOCK_BODY - VAR name:ref1 type:kotlin.reflect.KProperty0<@[FlexibleNullability] kotlin.String?> [val] - PROPERTY_REFERENCE 'public final someJavaField: @[FlexibleNullability] kotlin.String?' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:someJavaField type:@[FlexibleNullability] kotlin.String? visibility:public [final,static]' getter=null setter=null type=kotlin.reflect.KProperty0<@[FlexibleNullability] kotlin.String?> origin=null - VAR name:ref2 type:kotlin.reflect.KProperty0<@[FlexibleNullability] kotlin.String?> [val] - PROPERTY_REFERENCE 'public final someJavaField: @[FlexibleNullability] kotlin.String?' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:someJavaField type:@[FlexibleNullability] kotlin.String? visibility:public [final,static]' getter=null setter=null type=kotlin.reflect.KProperty0<@[FlexibleNullability] kotlin.String?> origin=null diff --git a/compiler/testData/ir/irText/firProblems/SameJavaFieldReferences.fir.kt.txt b/compiler/testData/ir/irText/firProblems/SameJavaFieldReferences.fir.kt.txt deleted file mode 100644 index a03676734c3..00000000000 --- a/compiler/testData/ir/irText/firProblems/SameJavaFieldReferences.fir.kt.txt +++ /dev/null @@ -1,4 +0,0 @@ -fun foo() { - val ref1: KProperty0<@FlexibleNullability String?> = SomeJavaClass::someJavaField - val ref2: KProperty0<@FlexibleNullability String?> = SomeJavaClass::someJavaField -} diff --git a/compiler/testData/ir/irText/firProblems/SameJavaFieldReferences.kt b/compiler/testData/ir/irText/firProblems/SameJavaFieldReferences.kt index e95d005edf5..27789891004 100644 --- a/compiler/testData/ir/irText/firProblems/SameJavaFieldReferences.kt +++ b/compiler/testData/ir/irText/firProblems/SameJavaFieldReferences.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // TARGET_BACKEND: JVM // FILE: SomeJavaClass.java diff --git a/compiler/testData/loadJava/compiledJava/annotations/StringConstantInParam.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/StringConstantInParam.fir.txt index 3a9c60b01b7..6cd6e359b7f 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/StringConstantInParam.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/StringConstantInParam.fir.txt @@ -1,5 +1,5 @@ public abstract interface StringConstantInParam : R|kotlin/Any| { - public final static field HEL: R|kotlin/String!| = String(hel) + public final static field HEL: R|kotlin/String| = String(hel) public final annotation class Anno : R|kotlin/Annotation| { public constructor(value: R|kotlin/String|): R|test/StringConstantInParam.Anno| diff --git a/compiler/testData/loadJava/compiledJava/static/StaticFinal.fir.txt b/compiler/testData/loadJava/compiledJava/static/StaticFinal.fir.txt index e572a751443..36414160668 100644 --- a/compiler/testData/loadJava/compiledJava/static/StaticFinal.fir.txt +++ b/compiler/testData/loadJava/compiledJava/static/StaticFinal.fir.txt @@ -1,13 +1,13 @@ public open class StaticFinal : R|kotlin/Any| { - public final static field publicNonNull: R|kotlin/String!| = String(aaa) + public final static field publicNonNull: R|kotlin/String| = String(aaa) public final static field publicNull: R|kotlin/String!| - public/*package*/ final static field packageNonNull: R|kotlin/String!| = String(bbb) + public/*package*/ final static field packageNonNull: R|kotlin/String| = String(bbb) public/*package*/ final static field packageNull: R|kotlin/String!| - private final static field privateNonNull: R|kotlin/String!| = String(bbb) + private final static field privateNonNull: R|kotlin/String| = String(bbb) private final static field privateNull: R|kotlin/String!|