K2: add more tests about false overrides

Related to KT-53197
This commit is contained in:
Mikhail Glukhikh
2022-09-20 11:23:21 +02:00
committed by Space
parent bcd7a531b9
commit de43877161
9 changed files with 157 additions and 0 deletions
@@ -2596,6 +2596,12 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest {
runTest("compiler/testData/ir/irText/firProblems/InnerClassInAnonymous.kt");
}
@Test
@TestMetadata("internalPotentialFakeOverride.kt")
public void testInternalPotentialFakeOverride() throws Exception {
runTest("compiler/testData/ir/irText/firProblems/internalPotentialFakeOverride.kt");
}
@Test
@TestMetadata("internalPotentialOverride.kt")
public void testInternalPotentialOverride() throws Exception {
@@ -2596,6 +2596,12 @@ public class LightTreeFir2IrTextTestGenerated extends AbstractLightTreeFir2IrTex
runTest("compiler/testData/ir/irText/firProblems/InnerClassInAnonymous.kt");
}
@Test
@TestMetadata("internalPotentialFakeOverride.kt")
public void testInternalPotentialFakeOverride() throws Exception {
runTest("compiler/testData/ir/irText/firProblems/internalPotentialFakeOverride.kt");
}
@Test
@TestMetadata("internalPotentialOverride.kt")
public void testInternalPotentialOverride() throws Exception {
@@ -0,0 +1,58 @@
Module: m1
FILE fqName:<root> fileName:/A.kt
CLASS CLASS name:A modality:OPEN visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.A
CONSTRUCTOR visibility:public <> () returnType:<root>.A [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:A modality:OPEN visibility:public superTypes:[kotlin.Any]'
FUN name:foo visibility:internal modality:OPEN <> ($this:<root>.A) returnType:kotlin.Int
$this: VALUE_PARAMETER name:<this> type:<root>.A
BLOCK_BODY
RETURN type=kotlin.Nothing from='internal open fun foo (): kotlin.Int declared in <root>.A'
CONST Int type=kotlin.Int value=1
PROPERTY name:bar visibility:internal modality:OPEN [val]
FIELD PROPERTY_BACKING_FIELD name:bar type:kotlin.Int visibility:private [final]
EXPRESSION_BODY
CONST Int type=kotlin.Int value=1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-bar> visibility:internal modality:OPEN <> ($this:<root>.A) returnType:kotlin.Int
correspondingProperty: PROPERTY name:bar visibility:internal modality:OPEN [val]
$this: VALUE_PARAMETER name:<this> type:<root>.A
BLOCK_BODY
RETURN type=kotlin.Nothing from='internal open fun <get-bar> (): kotlin.Int declared in <root>.A'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:bar type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.A declared in <root>.A.<get-bar>' type=<root>.A origin=null
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 [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
Module: m2
FILE fqName:<root> fileName:/B.kt
CLASS CLASS name:B modality:FINAL visibility:public superTypes:[<root>.A]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.B
CONSTRUCTOR visibility:public <> () returnType:<root>.B [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.A'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:B modality:FINAL visibility:public superTypes:[<root>.A]'
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 [fake_override,operator] declared in <root>.A
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.A
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String [fake_override] declared in <root>.A
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
@@ -0,0 +1,16 @@
// FIR_IDENTICAL
// TARGET_BACKEND: JVM_IR
// MODULE: m1
// FILE: A.kt
open class A {
internal open fun foo() : Int = 1
internal open val bar: Int = 1
}
// MODULE: m2(m1)
// FILE: B.kt
class B : A() {
}
@@ -0,0 +1,31 @@
// MODULE: m1
// FILE: A.kt
open class A {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
internal open fun foo(): Int {
return 1
}
internal open val bar: Int
field = 1
internal open get
}
// MODULE: m2
// FILE: B.kt
class B : A {
constructor() /* primary */ {
super/*A*/()
/* <init>() */
}
}
@@ -11,6 +11,17 @@ FILE fqName:<root> fileName:/A.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='internal open fun foo (): kotlin.Int declared in <root>.A'
CONST Int type=kotlin.Int value=1
PROPERTY name:bar visibility:internal modality:OPEN [val]
FIELD PROPERTY_BACKING_FIELD name:bar type:kotlin.Int visibility:private [final]
EXPRESSION_BODY
CONST Int type=kotlin.Int value=1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-bar> visibility:internal modality:OPEN <> ($this:<root>.A) returnType:kotlin.Int
correspondingProperty: PROPERTY name:bar visibility:internal modality:OPEN [val]
$this: VALUE_PARAMETER name:<this> type:<root>.A
BLOCK_BODY
RETURN type=kotlin.Nothing from='internal open fun <get-bar> (): kotlin.Int declared in <root>.A'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:bar type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.A declared in <root>.A.<get-bar>' type=<root>.A origin=null
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 [operator] declared in kotlin.Any
@@ -37,6 +48,17 @@ FILE fqName:<root> fileName:/B.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun foo (): kotlin.String declared in <root>.B'
CONST String type=kotlin.String value="OK"
PROPERTY name:bar visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:bar type:kotlin.Int visibility:private [final]
EXPRESSION_BODY
CONST Int type=kotlin.Int value=2
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-bar> visibility:public modality:FINAL <> ($this:<root>.B) returnType:kotlin.Int
correspondingProperty: PROPERTY name:bar visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.B
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-bar> (): kotlin.Int declared in <root>.B'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:bar type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.B declared in <root>.B.<get-bar>' type=<root>.B origin=null
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 [fake_override,operator] declared in <root>.A
@@ -5,6 +5,8 @@
open class A {
internal open fun foo() : Int = 1
internal open val bar: Int = 1
}
// MODULE: m2(m1)
@@ -12,4 +14,6 @@ open class A {
class B : A() {
fun foo() : String = "OK"
val bar: Int = 2
}
@@ -12,6 +12,10 @@ open class A {
return 1
}
internal open val bar: Int
field = 1
internal open get
}
// MODULE: m2
@@ -28,4 +32,8 @@ class B : A {
return "OK"
}
val bar: Int
field = 2
get
}
@@ -2596,6 +2596,12 @@ public class IrTextTestGenerated extends AbstractIrTextTest {
runTest("compiler/testData/ir/irText/firProblems/InnerClassInAnonymous.kt");
}
@Test
@TestMetadata("internalPotentialFakeOverride.kt")
public void testInternalPotentialFakeOverride() throws Exception {
runTest("compiler/testData/ir/irText/firProblems/internalPotentialFakeOverride.kt");
}
@Test
@TestMetadata("internalPotentialOverride.kt")
public void testInternalPotentialOverride() throws Exception {