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");
|
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
|
@Test
|
||||||
@TestMetadata("publicField.kt")
|
@TestMetadata("publicField.kt")
|
||||||
public void testPublicField() throws Exception {
|
public void testPublicField() throws Exception {
|
||||||
|
|||||||
@@ -153,7 +153,8 @@ abstract class DeclarationStubGenerator(
|
|||||||
descriptor.name, descriptor.visibility, descriptor.modality,
|
descriptor.name, descriptor.visibility, descriptor.modality,
|
||||||
descriptor.isVar, descriptor.isConst, descriptor.isLateInit,
|
descriptor.isVar, descriptor.isConst, descriptor.isLateInit,
|
||||||
descriptor.isDelegated, descriptor.isEffectivelyExternal(), descriptor.isExpect,
|
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,
|
stubGenerator = this, typeTranslator,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -165,7 +166,9 @@ abstract class DeclarationStubGenerator(
|
|||||||
return referenced.owner
|
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(
|
IrLazyField(
|
||||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, computeOrigin(descriptor),
|
UNDEFINED_OFFSET, UNDEFINED_OFFSET, computeOrigin(descriptor),
|
||||||
it, 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
|
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]
|
PROPERTY name:size visibility:public modality:OPEN [val]
|
||||||
overridden:
|
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
|
FUN name:<get-size> visibility:public modality:OPEN <> ($this:<root>.InlineMutableSet) returnType:kotlin.Int
|
||||||
correspondingProperty: PROPERTY name:size visibility:public modality:OPEN [val]
|
correspondingProperty: PROPERTY name:size visibility:public modality:OPEN [val]
|
||||||
overridden:
|
overridden:
|
||||||
|
|||||||
+1
-1
@@ -234,7 +234,7 @@ FILE fqName:<root> fileName:/kt30020.kt
|
|||||||
VALUE_PARAMETER name:toIndex index:1 type:kotlin.Int
|
VALUE_PARAMETER name:toIndex index:1 type:kotlin.Int
|
||||||
PROPERTY FAKE_OVERRIDE name:size visibility:public modality:ABSTRACT [fake_override,val]
|
PROPERTY FAKE_OVERRIDE name:size visibility:public modality:ABSTRACT [fake_override,val]
|
||||||
overridden:
|
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]
|
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]
|
correspondingProperty: PROPERTY FAKE_OVERRIDE name:size visibility:public modality:ABSTRACT [fake_override,val]
|
||||||
overridden:
|
overridden:
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ FILE fqName:<root> fileName:/AbstractMutableMap.kt
|
|||||||
CONST Null type=kotlin.Nothing? value=null
|
CONST Null type=kotlin.Nothing? value=null
|
||||||
PROPERTY name:entries visibility:public modality:OPEN [val]
|
PROPERTY name:entries visibility:public modality:OPEN [val]
|
||||||
overridden:
|
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>>
|
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]
|
correspondingProperty: PROPERTY name:entries visibility:public modality:OPEN [val]
|
||||||
overridden:
|
overridden:
|
||||||
@@ -154,7 +154,7 @@ FILE fqName:<root> fileName:/AbstractMutableMap.kt
|
|||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||||
PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:OPEN [fake_override,val]
|
PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:OPEN [fake_override,val]
|
||||||
overridden:
|
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]
|
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]
|
correspondingProperty: PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:OPEN [fake_override,val]
|
||||||
overridden:
|
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>
|
$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]
|
PROPERTY FAKE_OVERRIDE name:size visibility:public modality:OPEN [fake_override,val]
|
||||||
overridden:
|
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]
|
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]
|
correspondingProperty: PROPERTY FAKE_OVERRIDE name:size visibility:public modality:OPEN [fake_override,val]
|
||||||
overridden:
|
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>
|
$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]
|
PROPERTY FAKE_OVERRIDE name:values visibility:public modality:OPEN [fake_override,val]
|
||||||
overridden:
|
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]
|
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]
|
correspondingProperty: PROPERTY FAKE_OVERRIDE name:values visibility:public modality:OPEN [fake_override,val]
|
||||||
overridden:
|
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
|
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]
|
PROPERTY DELEGATED_MEMBER name:size visibility:public modality:OPEN [val]
|
||||||
overridden:
|
overridden:
|
||||||
public abstract size: kotlin.Int [val]
|
public abstract size: kotlin.Int [fake_override,val]
|
||||||
public abstract size: kotlin.Int [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
|
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]
|
correspondingProperty: PROPERTY DELEGATED_MEMBER name:size visibility:public modality:OPEN [val]
|
||||||
overridden:
|
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>>]'
|
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]
|
PROPERTY FAKE_OVERRIDE name:modCount visibility:protected/*protected and package*/ modality:FINAL [fake_override,var]
|
||||||
overridden:
|
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]
|
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:
|
overridden:
|
||||||
protected/*protected and package*/ open fun removeRange (p0: kotlin.Int, p1: kotlin.Int): kotlin.Unit declared in java.util.ArrayList
|
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");
|
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
|
@Test
|
||||||
@TestMetadata("publicField.kt")
|
@TestMetadata("publicField.kt")
|
||||||
public void testPublicField() throws Exception {
|
public void testPublicField() throws Exception {
|
||||||
|
|||||||
+6
@@ -24482,6 +24482,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/jvmField/kt47328_var.kt");
|
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
|
@Test
|
||||||
@TestMetadata("publicField.kt")
|
@TestMetadata("publicField.kt")
|
||||||
public void testPublicField() throws Exception {
|
public void testPublicField() throws Exception {
|
||||||
|
|||||||
+5
@@ -20589,6 +20589,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/jvmField/kt47328_var.kt");
|
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")
|
@TestMetadata("publicField.kt")
|
||||||
public void testPublicField() throws Exception {
|
public void testPublicField() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/jvmField/publicField.kt");
|
runTest("compiler/testData/codegen/box/jvmField/publicField.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user