[K2] Revert changes done in KT-61786
Changes in this ticket remove type enhancement in java fields for K2. But after KT-61920 fix, we can actually support it.
This commit is contained in:
+1
-1
@@ -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|
|
||||
}
|
||||
|
||||
+8
-1
@@ -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 {
|
||||
|
||||
+1
-2
@@ -9,8 +9,7 @@ FILE fqName:<root> fileName:/Child.kt
|
||||
$this: VALUE_PARAMETER name:<this> type:<root>.Child
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun foo (): kotlin.String declared in <root>.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
|
||||
|
||||
+1
-1
@@ -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]
|
||||
|
||||
+1
-1
@@ -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]
|
||||
|
||||
@@ -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 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>Bar.BAR + 1<!>
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// IGNORE_CONTRACT_VIOLATIONS
|
||||
// FIR_IDENTICAL
|
||||
// FILE: Bar.java
|
||||
|
||||
|
||||
+2
-2
@@ -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: <ERROR TYPE REF: Unresolved name: publicStaticField> = Q|javapackage/KotlinParentClass|.<Unresolved name: publicStaticField>#
|
||||
}
|
||||
|
||||
|
||||
@@ -6,26 +6,26 @@ FILE fqName:interop fileName:/Definitions.kt
|
||||
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () 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:<get-KT_CONSTANT> visibility:public modality:FINAL <> ($this:interop.Definitions) returnType:@[FlexibleNullability] kotlin.String?
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-KT_CONSTANT> 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:<this> type:interop.Definitions
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun <get-KT_CONSTANT> (): @[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 <get-KT_CONSTANT> (): 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 '<this>: interop.Definitions declared in interop.Definitions.<get-KT_CONSTANT>' 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:<get-ktValue> 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:<get-ktValue> visibility:public modality:FINAL <> ($this:interop.Definitions) returnType:kotlin.String
|
||||
correspondingProperty: PROPERTY name:ktValue visibility:public modality:FINAL [val]
|
||||
$this: VALUE_PARAMETER name:<this> type:interop.Definitions
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun <get-ktValue> (): @[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 <get-ktValue> (): 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 '<this>: interop.Definitions declared in interop.Definitions.<get-ktValue>' 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:
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// SKIP_SIGNATURE_DUMP
|
||||
// TARGET_BACKEND: JVM
|
||||
// FILE: Definitions.kt
|
||||
// IR_FILE: kt29833.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#<get-ktValue>(){}kotlin.String
|
||||
// Public signature: interop/Definitions.ktValue.<get-ktValue>|233367925131846588[0]
|
||||
// Public signature debug description: <get-ktValue>(){}kotlin.String
|
||||
get
|
||||
|
||||
// CHECK:
|
||||
// Mangled name: interop.Definitions#<init>(){}
|
||||
// Public signature: interop/Definitions.<init>|-5645683436151566731[0]
|
||||
// Public signature debug description: <init>(){}
|
||||
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#<get-KT_CONSTANT>(){}kotlin.String
|
||||
// Public signature: interop/Definitions.KT_CONSTANT.<get-KT_CONSTANT>|4728854297559730352[0]
|
||||
// Public signature debug description: <get-KT_CONSTANT>(){}kotlin.String
|
||||
get
|
||||
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
FILE fqName:<root> 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
|
||||
@@ -1,4 +0,0 @@
|
||||
fun foo() {
|
||||
val ref1: KProperty0<@FlexibleNullability String?> = SomeJavaClass::someJavaField
|
||||
val ref2: KProperty0<@FlexibleNullability String?> = SomeJavaClass::someJavaField
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// TARGET_BACKEND: JVM
|
||||
// FILE: SomeJavaClass.java
|
||||
|
||||
|
||||
+1
-1
@@ -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|
|
||||
|
||||
@@ -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!|
|
||||
|
||||
|
||||
Reference in New Issue
Block a user