IR text tests: Add test with the implementation of a private interface

This commit is contained in:
Dmitriy Dolovov
2023-11-21 14:08:47 +01:00
committed by Space Team
parent 02604060ae
commit e0e50e183e
14 changed files with 426 additions and 0 deletions
@@ -292,6 +292,12 @@ public class FirLightTreeJvmIrTextTestGenerated extends AbstractFirLightTreeJvmI
runTest("compiler/testData/ir/irText/classes/primaryConstructorWithSuperConstructorCall.kt");
}
@Test
@TestMetadata("privateInterface.kt")
public void testPrivateInterface() throws Exception {
runTest("compiler/testData/ir/irText/classes/privateInterface.kt");
}
@Test
@TestMetadata("qualifiedSuperCalls.kt")
public void testQualifiedSuperCalls() throws Exception {
@@ -292,6 +292,12 @@ public class FirPsiJvmIrTextTestGenerated extends AbstractFirPsiJvmIrTextTest {
runTest("compiler/testData/ir/irText/classes/primaryConstructorWithSuperConstructorCall.kt");
}
@Test
@TestMetadata("privateInterface.kt")
public void testPrivateInterface() throws Exception {
runTest("compiler/testData/ir/irText/classes/privateInterface.kt");
}
@Test
@TestMetadata("qualifiedSuperCalls.kt")
public void testQualifiedSuperCalls() throws Exception {
@@ -0,0 +1,130 @@
FILE fqName:<root> fileName:/privateInterface.kt
CLASS INTERFACE name:I modality:ABSTRACT visibility:private superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.I
FUN name:fooString visibility:public modality:ABSTRACT <> ($this:<root>.I) returnType:kotlin.String
$this: VALUE_PARAMETER name:<this> type:<root>.I
FUN name:barString visibility:public modality:OPEN <> ($this:<root>.I) returnType:kotlin.String
$this: VALUE_PARAMETER name:<this> type:<root>.I
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun barString (): kotlin.String declared in <root>.I'
CONST String type=kotlin.String value="bar@I"
FUN name:bazString visibility:public modality:OPEN <> ($this:<root>.I) returnType:kotlin.String
$this: VALUE_PARAMETER name:<this> type:<root>.I
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun bazString (): kotlin.String declared in <root>.I'
CONST String type=kotlin.String value="baz@I"
FUN name:fooUnit visibility:public modality:ABSTRACT <> ($this:<root>.I) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.I
FUN name:barUnit visibility:public modality:OPEN <> ($this:<root>.I) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.I
BLOCK_BODY
FUN name:bazUnit visibility:public modality:OPEN <> ($this:<root>.I) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.I
BLOCK_BODY
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 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
CLASS CLASS name:C1 modality:OPEN visibility:public superTypes:[<root>.I]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.C1
CONSTRUCTOR visibility:public <> () returnType:<root>.C1 [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C1 modality:OPEN visibility:public superTypes:[<root>.I]'
FUN name:fooString visibility:public modality:OPEN <> ($this:<root>.C1) returnType:kotlin.String
overridden:
public abstract fun fooString (): kotlin.String declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:<root>.C1
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun fooString (): kotlin.String declared in <root>.C1'
CONST String type=kotlin.String value="foo@C1"
FUN name:barString visibility:public modality:OPEN <> ($this:<root>.C1) returnType:kotlin.String
overridden:
public open fun barString (): kotlin.String declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:<root>.C1
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun barString (): kotlin.String declared in <root>.C1'
CONST String type=kotlin.String value="bar@C1"
FUN name:fooUnit visibility:public modality:OPEN <> ($this:<root>.C1) returnType:kotlin.Unit
overridden:
public abstract fun fooUnit (): kotlin.Unit declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:<root>.C1
BLOCK_BODY
FUN name:barUnit visibility:public modality:OPEN <> ($this:<root>.C1) returnType:kotlin.Unit
overridden:
public open fun barUnit (): kotlin.Unit declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:<root>.C1
BLOCK_BODY
FUN FAKE_OVERRIDE name:bazString visibility:public modality:OPEN <> ($this:<root>.I) returnType:kotlin.String [fake_override]
overridden:
public open fun bazString (): kotlin.String declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:<root>.I
FUN FAKE_OVERRIDE name:bazUnit visibility:public modality:OPEN <> ($this:<root>.I) returnType:kotlin.Unit [fake_override]
overridden:
public open fun bazUnit (): kotlin.Unit declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:<root>.I
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 <root>.I
$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 <root>.I
$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 <root>.I
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:C2 modality:FINAL visibility:public superTypes:[<root>.C1]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.C2
CONSTRUCTOR visibility:public <> () returnType:<root>.C2 [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.C1'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C2 modality:FINAL visibility:public superTypes:[<root>.C1]'
FUN FAKE_OVERRIDE name:fooString visibility:public modality:OPEN <> ($this:<root>.C1) returnType:kotlin.String [fake_override]
overridden:
public open fun fooString (): kotlin.String declared in <root>.C1
$this: VALUE_PARAMETER name:<this> type:<root>.C1
FUN FAKE_OVERRIDE name:barString visibility:public modality:OPEN <> ($this:<root>.C1) returnType:kotlin.String [fake_override]
overridden:
public open fun barString (): kotlin.String declared in <root>.C1
$this: VALUE_PARAMETER name:<this> type:<root>.C1
FUN FAKE_OVERRIDE name:fooUnit visibility:public modality:OPEN <> ($this:<root>.C1) returnType:kotlin.Unit [fake_override]
overridden:
public open fun fooUnit (): kotlin.Unit declared in <root>.C1
$this: VALUE_PARAMETER name:<this> type:<root>.C1
FUN FAKE_OVERRIDE name:barUnit visibility:public modality:OPEN <> ($this:<root>.C1) returnType:kotlin.Unit [fake_override]
overridden:
public open fun barUnit (): kotlin.Unit declared in <root>.C1
$this: VALUE_PARAMETER name:<this> type:<root>.C1
FUN FAKE_OVERRIDE name:bazString visibility:public modality:OPEN <> ($this:<root>.I) returnType:kotlin.String [fake_override]
overridden:
public open fun bazString (): kotlin.String declared in <root>.C1
$this: VALUE_PARAMETER name:<this> type:<root>.I
FUN FAKE_OVERRIDE name:bazUnit visibility:public modality:OPEN <> ($this:<root>.I) returnType:kotlin.Unit [fake_override]
overridden:
public open fun bazUnit (): kotlin.Unit declared in <root>.C1
$this: VALUE_PARAMETER name:<this> type:<root>.I
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 <root>.C1
$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 <root>.C1
$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 <root>.C1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
+20
View File
@@ -0,0 +1,20 @@
// FIR_IDENTICAL
private interface I {
fun fooString(): String
fun barString(): String = "bar@I"
fun bazString(): String = "baz@I"
fun fooUnit(): Unit
fun barUnit() {}
fun bazUnit() {}
}
open class C1 : I {
override fun fooString() = "foo@C1"
override fun barString() = "bar@C1"
override fun fooUnit() {}
override fun barUnit() {}
}
class C2 : C1()
@@ -0,0 +1,53 @@
private interface I {
abstract fun fooString(): String
fun barString(): String {
return "bar@I"
}
fun bazString(): String {
return "baz@I"
}
abstract fun fooUnit()
fun barUnit() {
}
fun bazUnit() {
}
}
open class C1 : I {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
override fun fooString(): String {
return "foo@C1"
}
override fun barString(): String {
return "bar@C1"
}
override fun fooUnit() {
}
override fun barUnit() {
}
}
class C2 : C1 {
constructor() /* primary */ {
super/*C1*/()
/* <init>() */
}
}
@@ -0,0 +1,164 @@
// CHECK:
// Mangled name: C1
// Public signature: /C1|null[0]
open class C1 : I {
// CHECK:
// Mangled name: C1#<init>(){}
// Public signature: /C1.<init>|-5645683436151566731[0]
// Public signature debug description: <init>(){}
constructor() /* primary */
// CHECK JVM_IR:
// Mangled name: C1#bazString(){}kotlin.String
// Public signature: /C1.bazString|4745561783571976677[0]
// Public signature debug description: bazString(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: C1#bazString(){}
// Public signature: /C1.bazString|-4075144603640543449[0]
// Public signature debug description: bazString(){}
/* fake */ override fun bazString(): String
// CHECK:
// Mangled name: C1#bazUnit(){}
// Public signature: /C1.bazUnit|4140829435204136945[0]
// Public signature debug description: bazUnit(){}
/* fake */ override fun bazUnit(): Unit
// CHECK JVM_IR:
// Mangled name: C1#barString(){}kotlin.String
// Public signature: /C1.barString|1448966844562545716[0]
// Public signature debug description: barString(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: C1#barString(){}
// Public signature: /C1.barString|-1504802894060354159[0]
// Public signature debug description: barString(){}
override fun barString(): String
// CHECK:
// Mangled name: C1#barUnit(){}
// Public signature: /C1.barUnit|-8290436109529144257[0]
// Public signature debug description: barUnit(){}
override fun barUnit(): Unit
// CHECK JVM_IR:
// Mangled name: C1#fooString(){}kotlin.String
// Public signature: /C1.fooString|-3874429348411417233[0]
// Public signature debug description: fooString(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: C1#fooString(){}
// Public signature: /C1.fooString|-5005598722040110311[0]
// Public signature debug description: fooString(){}
override fun fooString(): String
// CHECK:
// Mangled name: C1#fooUnit(){}
// Public signature: /C1.fooUnit|-7476708133407795952[0]
// Public signature debug description: fooUnit(){}
override fun fooUnit(): Unit
}
// CHECK:
// Mangled name: C2
// Public signature: /C2|null[0]
class C2 : C1 {
// CHECK:
// Mangled name: C2#<init>(){}
// Public signature: /C2.<init>|-5645683436151566731[0]
// Public signature debug description: <init>(){}
constructor() /* primary */
// CHECK JVM_IR:
// Mangled name: C2#barString(){}kotlin.String
// Public signature: /C2.barString|1448966844562545716[0]
// Public signature debug description: barString(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: C2#barString(){}
// Public signature: /C2.barString|-1504802894060354159[0]
// Public signature debug description: barString(){}
/* fake */ override fun barString(): String
// CHECK:
// Mangled name: C2#barUnit(){}
// Public signature: /C2.barUnit|-8290436109529144257[0]
// Public signature debug description: barUnit(){}
/* fake */ override fun barUnit(): Unit
// CHECK JVM_IR:
// Mangled name: C2#bazString(){}kotlin.String
// Public signature: /C2.bazString|4745561783571976677[0]
// Public signature debug description: bazString(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: C2#bazString(){}
// Public signature: /C2.bazString|-4075144603640543449[0]
// Public signature debug description: bazString(){}
/* fake */ override fun bazString(): String
// CHECK:
// Mangled name: C2#bazUnit(){}
// Public signature: /C2.bazUnit|4140829435204136945[0]
// Public signature debug description: bazUnit(){}
/* fake */ override fun bazUnit(): Unit
// CHECK JVM_IR:
// Mangled name: C2#fooString(){}kotlin.String
// Public signature: /C2.fooString|-3874429348411417233[0]
// Public signature debug description: fooString(){}kotlin.String
// CHECK JS_IR NATIVE:
// Mangled name: C2#fooString(){}
// Public signature: /C2.fooString|-5005598722040110311[0]
// Public signature debug description: fooString(){}
/* fake */ override fun fooString(): String
// CHECK:
// Mangled name: C2#fooUnit(){}
// Public signature: /C2.fooUnit|-7476708133407795952[0]
// Public signature debug description: fooUnit(){}
/* fake */ override fun fooUnit(): Unit
}
// CHECK:
// Mangled name: I
// Public signature: [ File '/privateInterface.kt' <- /I|null[0] ]
private interface I {
// CHECK JVM_IR:
// Mangled name: I#barString(){}kotlin.String
// Public signature: [ File '/privateInterface.kt' <- /I.barString|1448966844562545716[0] ]
// CHECK JS_IR NATIVE:
// Mangled name: I#barString(){}
// Public signature: [ File '/privateInterface.kt' <- /I.barString|-1504802894060354159[0] ]
fun barString(): String
// CHECK:
// Mangled name: I#barUnit(){}
// Public signature: [ File '/privateInterface.kt' <- /I.barUnit|-8290436109529144257[0] ]
fun barUnit(): Unit
// CHECK JVM_IR:
// Mangled name: I#bazString(){}kotlin.String
// Public signature: [ File '/privateInterface.kt' <- /I.bazString|4745561783571976677[0] ]
// CHECK JS_IR NATIVE:
// Mangled name: I#bazString(){}
// Public signature: [ File '/privateInterface.kt' <- /I.bazString|-4075144603640543449[0] ]
fun bazString(): String
// CHECK:
// Mangled name: I#bazUnit(){}
// Public signature: [ File '/privateInterface.kt' <- /I.bazUnit|4140829435204136945[0] ]
fun bazUnit(): Unit
// CHECK JVM_IR:
// Mangled name: I#fooString(){}kotlin.String
// Public signature: [ File '/privateInterface.kt' <- /I.fooString|-3874429348411417233[0] ]
// CHECK JS_IR NATIVE:
// Mangled name: I#fooString(){}
// Public signature: [ File '/privateInterface.kt' <- /I.fooString|-5005598722040110311[0] ]
abstract fun fooString(): String
// CHECK:
// Mangled name: I#fooUnit(){}
// Public signature: [ File '/privateInterface.kt' <- /I.fooUnit|-7476708133407795952[0] ]
abstract fun fooUnit(): Unit
}
@@ -292,6 +292,12 @@ public class ClassicJvmIrTextTestGenerated extends AbstractClassicJvmIrTextTest
runTest("compiler/testData/ir/irText/classes/primaryConstructorWithSuperConstructorCall.kt");
}
@Test
@TestMetadata("privateInterface.kt")
public void testPrivateInterface() throws Exception {
runTest("compiler/testData/ir/irText/classes/privateInterface.kt");
}
@Test
@TestMetadata("qualifiedSuperCalls.kt")
public void testQualifiedSuperCalls() throws Exception {
@@ -212,6 +212,11 @@ public class KlibIrTextTestCaseGenerated extends AbstractKlibIrTextTestCase {
runTest("compiler/testData/ir/irText/classes/primaryConstructorWithSuperConstructorCall.kt");
}
@TestMetadata("privateInterface.kt")
public void testPrivateInterface() throws Exception {
runTest("compiler/testData/ir/irText/classes/privateInterface.kt");
}
@TestMetadata("qualifiedSuperCalls.kt")
public void testQualifiedSuperCalls() throws Exception {
runTest("compiler/testData/ir/irText/classes/qualifiedSuperCalls.kt");
@@ -238,6 +238,12 @@ public class FirLightTreeJsIrTextTestGenerated extends AbstractFirLightTreeJsIrT
runTest("compiler/testData/ir/irText/classes/primaryConstructorWithSuperConstructorCall.kt");
}
@Test
@TestMetadata("privateInterface.kt")
public void testPrivateInterface() throws Exception {
runTest("compiler/testData/ir/irText/classes/privateInterface.kt");
}
@Test
@TestMetadata("qualifiedSuperCalls.kt")
public void testQualifiedSuperCalls() throws Exception {
@@ -238,6 +238,12 @@ public class FirPsiJsIrTextTestGenerated extends AbstractFirPsiJsIrTextTest {
runTest("compiler/testData/ir/irText/classes/primaryConstructorWithSuperConstructorCall.kt");
}
@Test
@TestMetadata("privateInterface.kt")
public void testPrivateInterface() throws Exception {
runTest("compiler/testData/ir/irText/classes/privateInterface.kt");
}
@Test
@TestMetadata("qualifiedSuperCalls.kt")
public void testQualifiedSuperCalls() throws Exception {
@@ -238,6 +238,12 @@ public class ClassicJsIrTextTestGenerated extends AbstractClassicJsIrTextTest {
runTest("compiler/testData/ir/irText/classes/primaryConstructorWithSuperConstructorCall.kt");
}
@Test
@TestMetadata("privateInterface.kt")
public void testPrivateInterface() throws Exception {
runTest("compiler/testData/ir/irText/classes/privateInterface.kt");
}
@Test
@TestMetadata("qualifiedSuperCalls.kt")
public void testQualifiedSuperCalls() throws Exception {
@@ -238,6 +238,12 @@ public class ClassicNativeIrTextTestGenerated extends AbstractClassicNativeIrTex
runTest("compiler/testData/ir/irText/classes/primaryConstructorWithSuperConstructorCall.kt");
}
@Test
@TestMetadata("privateInterface.kt")
public void testPrivateInterface() throws Exception {
runTest("compiler/testData/ir/irText/classes/privateInterface.kt");
}
@Test
@TestMetadata("qualifiedSuperCalls.kt")
public void testQualifiedSuperCalls() throws Exception {
@@ -238,6 +238,12 @@ public class FirLightTreeNativeIrTextTestGenerated extends AbstractFirLightTreeN
runTest("compiler/testData/ir/irText/classes/primaryConstructorWithSuperConstructorCall.kt");
}
@Test
@TestMetadata("privateInterface.kt")
public void testPrivateInterface() throws Exception {
runTest("compiler/testData/ir/irText/classes/privateInterface.kt");
}
@Test
@TestMetadata("qualifiedSuperCalls.kt")
public void testQualifiedSuperCalls() throws Exception {
@@ -238,6 +238,12 @@ public class FirPsiNativeIrTextTestGenerated extends AbstractFirPsiNativeIrTextT
runTest("compiler/testData/ir/irText/classes/primaryConstructorWithSuperConstructorCall.kt");
}
@Test
@TestMetadata("privateInterface.kt")
public void testPrivateInterface() throws Exception {
runTest("compiler/testData/ir/irText/classes/privateInterface.kt");
}
@Test
@TestMetadata("qualifiedSuperCalls.kt")
public void testQualifiedSuperCalls() throws Exception {