JVM_IR KT-47739 recognize fake override external stubs
This commit is contained in:
committed by
TeamCityServer
parent
dd54338ec0
commit
8ea4916d64
+6
@@ -24482,6 +24482,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
||||
runTest("compiler/testData/codegen/box/jvmField/kt47328_var.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt47739.kt")
|
||||
public void testKt47739() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/jvmField/kt47739.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("publicField.kt")
|
||||
public void testPublicField() throws Exception {
|
||||
|
||||
@@ -153,7 +153,8 @@ abstract class DeclarationStubGenerator(
|
||||
descriptor.name, descriptor.visibility, descriptor.modality,
|
||||
descriptor.isVar, descriptor.isConst, descriptor.isLateInit,
|
||||
descriptor.isDelegated, descriptor.isEffectivelyExternal(), descriptor.isExpect,
|
||||
isFakeOverride = (origin == IrDeclarationOrigin.FAKE_OVERRIDE),
|
||||
isFakeOverride = (origin == IrDeclarationOrigin.FAKE_OVERRIDE)
|
||||
|| descriptor.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE,
|
||||
stubGenerator = this, typeTranslator,
|
||||
)
|
||||
}
|
||||
@@ -165,7 +166,9 @@ abstract class DeclarationStubGenerator(
|
||||
return referenced.owner
|
||||
}
|
||||
|
||||
return symbolTable.declareField(UNDEFINED_OFFSET, UNDEFINED_OFFSET, computeOrigin(descriptor), descriptor.original, descriptor.type.toIrType()) {
|
||||
return symbolTable.declareField(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, computeOrigin(descriptor), descriptor.original, descriptor.type.toIrType()
|
||||
) {
|
||||
IrLazyField(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, computeOrigin(descriptor),
|
||||
it, descriptor,
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
|
||||
// MODULE: lib
|
||||
// FILE: Value.kt
|
||||
package vv
|
||||
|
||||
sealed class Value<T>(@JvmField val value: T) {
|
||||
class StringValue(value: String) : Value<String>(value)
|
||||
class BooleanValue(value: Boolean): Value<Boolean>(value)
|
||||
}
|
||||
|
||||
|
||||
// MODULE: main(lib)
|
||||
// FILE: kt47739.kt
|
||||
import kotlin.test.*
|
||||
import vv.*
|
||||
|
||||
fun test(v: Value<*>) {
|
||||
when (v) {
|
||||
is Value.StringValue ->
|
||||
assertEquals("a string", v.value)
|
||||
is Value.BooleanValue ->
|
||||
assertEquals(true, v.value)
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
test(Value.StringValue("a string"))
|
||||
test(Value.BooleanValue(true))
|
||||
return "OK"
|
||||
}
|
||||
@@ -85,7 +85,7 @@ FILE fqName:<root> fileName:/inlineCollectionOfInlineClass.kt
|
||||
receiver: GET_VAR '<this>: <root>.InlineMutableSet declared in <root>.InlineMutableSet.<get-ms>' type=<root>.InlineMutableSet origin=null
|
||||
PROPERTY name:size visibility:public modality:OPEN [val]
|
||||
overridden:
|
||||
public abstract size: kotlin.Int [val]
|
||||
public abstract size: kotlin.Int [fake_override,val]
|
||||
FUN name:<get-size> visibility:public modality:OPEN <> ($this:<root>.InlineMutableSet) returnType:kotlin.Int
|
||||
correspondingProperty: PROPERTY name:size visibility:public modality:OPEN [val]
|
||||
overridden:
|
||||
|
||||
+1
-1
@@ -234,7 +234,7 @@ FILE fqName:<root> fileName:/kt30020.kt
|
||||
VALUE_PARAMETER name:toIndex index:1 type:kotlin.Int
|
||||
PROPERTY FAKE_OVERRIDE name:size visibility:public modality:ABSTRACT [fake_override,val]
|
||||
overridden:
|
||||
public abstract size: kotlin.Int [val]
|
||||
public abstract size: kotlin.Int [fake_override,val]
|
||||
FUN FAKE_OVERRIDE name:<get-size> visibility:public modality:ABSTRACT <> ($this:kotlin.collections.List<kotlin.Int>) returnType:kotlin.Int [fake_override]
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:size visibility:public modality:ABSTRACT [fake_override,val]
|
||||
overridden:
|
||||
|
||||
@@ -20,7 +20,7 @@ FILE fqName:<root> fileName:/AbstractMutableMap.kt
|
||||
CONST Null type=kotlin.Nothing? value=null
|
||||
PROPERTY name:entries visibility:public modality:OPEN [val]
|
||||
overridden:
|
||||
public abstract entries: kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<K of kotlin.collections.AbstractMutableMap, V of kotlin.collections.AbstractMutableMap>> [val]
|
||||
public abstract entries: kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<K of kotlin.collections.AbstractMutableMap, V of kotlin.collections.AbstractMutableMap>> [fake_override,val]
|
||||
FUN name:<get-entries> visibility:public modality:OPEN <> ($this:<root>.MyMap<K of <root>.MyMap, V of <root>.MyMap>) returnType:kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<K of <root>.MyMap, V of <root>.MyMap>>
|
||||
correspondingProperty: PROPERTY name:entries visibility:public modality:OPEN [val]
|
||||
overridden:
|
||||
@@ -154,7 +154,7 @@ FILE fqName:<root> fileName:/AbstractMutableMap.kt
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:OPEN [fake_override,val]
|
||||
overridden:
|
||||
public open keys: kotlin.collections.MutableSet<K of kotlin.collections.AbstractMutableMap> [val]
|
||||
public open keys: kotlin.collections.MutableSet<K of kotlin.collections.AbstractMutableMap> [fake_override,val]
|
||||
FUN FAKE_OVERRIDE name:<get-keys> visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap<K of <root>.MyMap, V of <root>.MyMap>) returnType:kotlin.collections.MutableSet<K of <root>.MyMap> [fake_override]
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:OPEN [fake_override,val]
|
||||
overridden:
|
||||
@@ -162,7 +162,7 @@ FILE fqName:<root> fileName:/AbstractMutableMap.kt
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.MutableMap<K of <root>.MyMap, V of <root>.MyMap>
|
||||
PROPERTY FAKE_OVERRIDE name:size visibility:public modality:OPEN [fake_override,val]
|
||||
overridden:
|
||||
public open size: kotlin.Int [val]
|
||||
public open size: kotlin.Int [fake_override,val]
|
||||
FUN FAKE_OVERRIDE name:<get-size> visibility:public modality:OPEN <> ($this:kotlin.collections.Map<K of <root>.MyMap, V of <root>.MyMap>) returnType:kotlin.Int [fake_override]
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:size visibility:public modality:OPEN [fake_override,val]
|
||||
overridden:
|
||||
@@ -170,7 +170,7 @@ FILE fqName:<root> fileName:/AbstractMutableMap.kt
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Map<K of <root>.MyMap, V of <root>.MyMap>
|
||||
PROPERTY FAKE_OVERRIDE name:values visibility:public modality:OPEN [fake_override,val]
|
||||
overridden:
|
||||
public open values: kotlin.collections.MutableCollection<V of kotlin.collections.AbstractMutableMap> [val]
|
||||
public open values: kotlin.collections.MutableCollection<V of kotlin.collections.AbstractMutableMap> [fake_override,val]
|
||||
FUN FAKE_OVERRIDE name:<get-values> visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap<K of <root>.MyMap, V of <root>.MyMap>) returnType:kotlin.collections.MutableCollection<V of <root>.MyMap> [fake_override]
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:values visibility:public modality:OPEN [fake_override,val]
|
||||
overridden:
|
||||
|
||||
+2
-2
@@ -124,8 +124,8 @@ FILE fqName:<root> fileName:/DelegationAndInheritanceFromJava.kt
|
||||
elements: GET_VAR 'elements: kotlin.collections.Collection<@[FlexibleNullability] kotlin.String?> declared in <root>.Impl.retainAll' type=kotlin.collections.Collection<@[FlexibleNullability] kotlin.String?> origin=null
|
||||
PROPERTY DELEGATED_MEMBER name:size visibility:public modality:OPEN [val]
|
||||
overridden:
|
||||
public abstract size: kotlin.Int [val]
|
||||
public abstract size: kotlin.Int [val]
|
||||
public abstract size: kotlin.Int [fake_override,val]
|
||||
public abstract size: kotlin.Int [fake_override,val]
|
||||
FUN DELEGATED_MEMBER name:<get-size> visibility:public modality:OPEN <> ($this:<root>.Impl) returnType:kotlin.Int
|
||||
correspondingProperty: PROPERTY DELEGATED_MEMBER name:size visibility:public modality:OPEN [val]
|
||||
overridden:
|
||||
|
||||
+1
-1
@@ -198,7 +198,7 @@ FILE fqName:<root> fileName:/MultiList.kt
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:SomeList modality:OPEN visibility:public superTypes:[<root>.MyList<T of <root>.SomeList>; java.util.ArrayList<<root>.Some<T of <root>.SomeList>>]'
|
||||
PROPERTY FAKE_OVERRIDE name:modCount visibility:protected/*protected and package*/ modality:FINAL [fake_override,var]
|
||||
overridden:
|
||||
protected/*protected and package*/ final modCount: kotlin.Int [var]
|
||||
protected/*protected and package*/ final modCount: kotlin.Int [fake_override,var]
|
||||
FUN FAKE_OVERRIDE name:removeRange visibility:protected/*protected and package*/ modality:OPEN <> ($this:java.util.ArrayList<<root>.Some<T of <root>.SomeList>>, p0:kotlin.Int, p1:kotlin.Int) returnType:kotlin.Unit [fake_override]
|
||||
overridden:
|
||||
protected/*protected and package*/ open fun removeRange (p0: kotlin.Int, p1: kotlin.Int): kotlin.Unit declared in java.util.ArrayList
|
||||
|
||||
+6
@@ -24440,6 +24440,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
runTest("compiler/testData/codegen/box/jvmField/kt47328_var.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt47739.kt")
|
||||
public void testKt47739() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/jvmField/kt47739.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("publicField.kt")
|
||||
public void testPublicField() throws Exception {
|
||||
|
||||
+6
@@ -24482,6 +24482,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/jvmField/kt47328_var.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt47739.kt")
|
||||
public void testKt47739() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/jvmField/kt47739.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("publicField.kt")
|
||||
public void testPublicField() throws Exception {
|
||||
|
||||
+5
@@ -20589,6 +20589,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/jvmField/kt47328_var.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("kt47739.kt")
|
||||
public void testKt47739() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/jvmField/kt47739.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("publicField.kt")
|
||||
public void testPublicField() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/jvmField/publicField.kt");
|
||||
|
||||
Reference in New Issue
Block a user