FIR2IR: don't generate IrGetObject for anonymous objects

This commit is contained in:
Mikhail Glukhikh
2021-01-20 11:49:39 +03:00
parent 06ee768c6a
commit 9e5c9efadf
8 changed files with 585 additions and 1 deletions
@@ -2074,6 +2074,12 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest {
runTest("compiler/testData/ir/irText/firProblems/AnnotationInAnnotation.kt");
}
@Test
@TestMetadata("AnnotationLoader.kt")
public void testAnnotationLoader() throws Exception {
runTest("compiler/testData/ir/irText/firProblems/AnnotationLoader.kt");
}
@Test
@TestMetadata("candidateSymbol.kt")
public void testCandidateSymbol() throws Exception {
@@ -385,7 +385,8 @@ class Fir2IrVisitor(
// Object case
val firClass = boundSymbol.fir as FirClass
val irClass = classifierStorage.getCachedIrClass(firClass)!!
if (firClass.classKind == ClassKind.OBJECT && !isThisForClassPhysicallyAvailable(irClass)) {
// NB: IR generates anonymous objects as classes, not singleton objects
if (firClass is FirRegularClass && firClass.classKind == ClassKind.OBJECT && !isThisForClassPhysicallyAvailable(irClass)) {
return thisReceiverExpression.convertWithOffsets { startOffset, endOffset ->
IrGetObjectValueImpl(startOffset, endOffset, irClass.defaultType, irClass.symbol)
}
@@ -0,0 +1,90 @@
interface Visitor {
abstract fun visit()
fun visitArray(): Visitor? {
return null
}
fun visitAnnotation(): Visitor? {
return null
}
}
class AnnotationLoader {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
fun loadAnnotation(): Visitor? {
return { // BLOCK
local class <no name provided> : Visitor {
private constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
override fun visit() {
}
override fun visitArray(): Visitor? {
return { // BLOCK
local class <no name provided> : Visitor {
private constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
override fun visit() {
<this>.foo()
}
}
<no name provided>()
}
}
override fun visitAnnotation(): Visitor? {
val visitor: Visitor = CHECK_NOT_NULL<Visitor>(arg0 = <this>.loadAnnotation())
return { // BLOCK
local class <no name provided> : Visitor {
private constructor() /* primary */ {
super/*Any*/()
/* <init>() */
<this>.#<$$delegate_0> = visitor
}
override fun visit() {
}
override fun visitArray(): Visitor? {
return <this>.#<$$delegate_0>.visitArray()
}
override fun visitAnnotation(): Visitor? {
return <this>.#<$$delegate_0>.visitAnnotation()
}
local /* final field */ val <$$delegate_0>: Visitor
}
<no name provided>()
}
}
private fun foo() {
}
}
<no name provided>()
}
}
}
@@ -0,0 +1,181 @@
FILE fqName:<root> fileName:/AnnotationLoader.kt
CLASS INTERFACE name:Visitor modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Visitor
FUN name:visit visibility:public modality:ABSTRACT <> ($this:<root>.Visitor) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.Visitor
FUN name:visitArray visibility:public modality:OPEN <> ($this:<root>.Visitor) returnType:<root>.Visitor?
$this: VALUE_PARAMETER name:<this> type:<root>.Visitor
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor'
CONST Null type=kotlin.Nothing? value=null
FUN name:visitAnnotation visibility:public modality:OPEN <> ($this:<root>.Visitor) returnType:<root>.Visitor?
$this: VALUE_PARAMETER name:<this> type:<root>.Visitor
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun visitAnnotation (): <root>.Visitor? declared in <root>.Visitor'
CONST Null type=kotlin.Nothing? value=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
CLASS CLASS name:AnnotationLoader modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.AnnotationLoader
CONSTRUCTOR visibility:public <> () returnType:<root>.AnnotationLoader [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:AnnotationLoader modality:FINAL visibility:public superTypes:[kotlin.Any]'
FUN name:loadAnnotation visibility:public modality:FINAL <> ($this:<root>.AnnotationLoader) returnType:<root>.Visitor?
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun loadAnnotation (): <root>.Visitor? declared in <root>.AnnotationLoader'
BLOCK type=<root>.AnnotationLoader.loadAnnotation.<no name provided> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>
CONSTRUCTOR visibility:private <> () returnType:<root>.AnnotationLoader.loadAnnotation.<no name provided> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]'
FUN name:visit visibility:public modality:FINAL <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>) returnType:kotlin.Unit
overridden:
public abstract fun visit (): kotlin.Unit declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>
BLOCK_BODY
FUN name:visitArray visibility:public modality:FINAL <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>) returnType:<root>.Visitor?
overridden:
public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun visitArray (): <root>.Visitor? declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>'
BLOCK type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided>
CONSTRUCTOR visibility:private <> () returnType:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]'
FUN name:visit visibility:public modality:FINAL <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided>) returnType:kotlin.Unit
overridden:
public abstract fun visit (): kotlin.Unit declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided>
BLOCK_BODY
CALL 'private final fun foo (): kotlin.Unit declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <root>.AnnotationLoader.loadAnnotation.<no name provided> declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray' type=<root>.AnnotationLoader.loadAnnotation.<no name provided> origin=null
FUN FAKE_OVERRIDE name:visitArray visibility:public modality:OPEN <> ($this:<root>.Visitor) returnType:<root>.Visitor? [fake_override]
overridden:
public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.Visitor
FUN FAKE_OVERRIDE name:visitAnnotation visibility:public modality:OPEN <> ($this:<root>.Visitor) returnType:<root>.Visitor? [fake_override]
overridden:
public open fun visitAnnotation (): <root>.Visitor? declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.Visitor
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
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided>' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided> origin=OBJECT_LITERAL
FUN name:visitAnnotation visibility:public modality:FINAL <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>) returnType:<root>.Visitor?
overridden:
public open fun visitAnnotation (): <root>.Visitor? declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>
BLOCK_BODY
VAR name:visitor type:<root>.Visitor [val]
CALL 'public final fun CHECK_NOT_NULL <T0> (arg0: T0 of kotlin.internal.ir.CHECK_NOT_NULL?): T0 of kotlin.internal.ir.CHECK_NOT_NULL declared in kotlin.internal.ir' type=<root>.Visitor origin=EXCLEXCL
<T0>: <root>.Visitor
arg0: CALL 'public final fun loadAnnotation (): <root>.Visitor? declared in <root>.AnnotationLoader' type=<root>.Visitor? origin=null
$this: GET_VAR '<this>: <root>.AnnotationLoader declared in <root>.AnnotationLoader.loadAnnotation' type=<root>.AnnotationLoader origin=null
RETURN type=kotlin.Nothing from='public final fun visitAnnotation (): <root>.Visitor? declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>'
BLOCK type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>
CONSTRUCTOR visibility:private <> () returnType:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Visitor visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=null
value: GET_VAR 'val visitor: <root>.Visitor [val] declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation' type=<root>.Visitor origin=null
FUN name:visit visibility:public modality:FINAL <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:kotlin.Unit
overridden:
public abstract fun visit (): kotlin.Unit declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>
BLOCK_BODY
FUN DELEGATED_MEMBER name:visitArray visibility:public modality:OPEN <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:<root>.Visitor?
overridden:
public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun visitArray (): <root>.Visitor? declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>'
CALL 'public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor' type=<root>.Visitor? origin=null
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Visitor visibility:local [final]' type=<root>.Visitor origin=null
receiver: GET_VAR '<this>: <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>.visitArray' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=null
FUN DELEGATED_MEMBER name:visitAnnotation visibility:public modality:OPEN <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:<root>.Visitor?
overridden:
public open fun visitAnnotation (): <root>.Visitor? declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun visitAnnotation (): <root>.Visitor? declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>'
CALL 'public open fun visitAnnotation (): <root>.Visitor? declared in <root>.Visitor' type=<root>.Visitor? origin=null
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Visitor visibility:local [final]' type=<root>.Visitor origin=null
receiver: GET_VAR '<this>: <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>.visitAnnotation' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.Visitor visibility:local [final]
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
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=OBJECT_LITERAL
FUN name:foo visibility:private modality:FINAL <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>
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 [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
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>' type=<root>.AnnotationLoader.loadAnnotation.<no name provided> origin=OBJECT_LITERAL
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
@@ -0,0 +1,32 @@
interface Visitor {
fun visit()
fun visitArray(): Visitor? = null
fun visitAnnotation(): Visitor? = null
}
class AnnotationLoader {
fun loadAnnotation(): Visitor? {
return object : Visitor {
override fun visit() {}
override fun visitArray(): Visitor? {
return object : Visitor {
override fun visit() {
foo()
}
}
}
override fun visitAnnotation(): Visitor? {
val visitor = loadAnnotation()!!
return object : Visitor by visitor {
override fun visit() {}
}
}
private fun foo() {}
}
}
}
@@ -0,0 +1,88 @@
interface Visitor {
abstract fun visit()
fun visitArray(): Visitor? {
return null
}
fun visitAnnotation(): Visitor? {
return null
}
}
class AnnotationLoader {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
fun loadAnnotation(): Visitor? {
return { // BLOCK
local class <no name provided> : Visitor {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
override fun visit() {
}
override fun visitArray(): Visitor? {
return { // BLOCK
local class <no name provided> : Visitor {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
override fun visit() {
<this>.foo()
}
}
<no name provided>()
}
}
override fun visitAnnotation(): Visitor? {
val visitor: Visitor = CHECK_NOT_NULL<Visitor>(arg0 = <this>.loadAnnotation())
return { // BLOCK
local class <no name provided> : Visitor {
constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
private /* final field */ val $$delegate_0: Visitor = visitor
override fun visitAnnotation(): Visitor? {
return <this>.#$$delegate_0.visitAnnotation()
}
override fun visitArray(): Visitor? {
return <this>.#$$delegate_0.visitArray()
}
override fun visit() {
}
}
<no name provided>()
}
}
private fun foo() {
}
}
<no name provided>()
}
}
}
@@ -0,0 +1,180 @@
FILE fqName:<root> fileName:/AnnotationLoader.kt
CLASS INTERFACE name:Visitor modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Visitor
FUN name:visit visibility:public modality:ABSTRACT <> ($this:<root>.Visitor) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.Visitor
FUN name:visitArray visibility:public modality:OPEN <> ($this:<root>.Visitor) returnType:<root>.Visitor?
$this: VALUE_PARAMETER name:<this> type:<root>.Visitor
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor'
CONST Null type=kotlin.Nothing? value=null
FUN name:visitAnnotation visibility:public modality:OPEN <> ($this:<root>.Visitor) returnType:<root>.Visitor?
$this: VALUE_PARAMETER name:<this> type:<root>.Visitor
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun visitAnnotation (): <root>.Visitor? declared in <root>.Visitor'
CONST Null type=kotlin.Nothing? value=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
CLASS CLASS name:AnnotationLoader modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.AnnotationLoader
CONSTRUCTOR visibility:public <> () returnType:<root>.AnnotationLoader [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:AnnotationLoader modality:FINAL visibility:public superTypes:[kotlin.Any]'
FUN name:loadAnnotation visibility:public modality:FINAL <> ($this:<root>.AnnotationLoader) returnType:<root>.Visitor?
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun loadAnnotation (): <root>.Visitor? declared in <root>.AnnotationLoader'
BLOCK type=<root>.AnnotationLoader.loadAnnotation.<no name provided> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>
CONSTRUCTOR visibility:public <> () returnType:<root>.AnnotationLoader.loadAnnotation.<no name provided> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]'
FUN name:visit visibility:public modality:OPEN <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>) returnType:kotlin.Unit
overridden:
public abstract fun visit (): kotlin.Unit declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>
BLOCK_BODY
FUN name:visitArray visibility:public modality:OPEN <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>) returnType:<root>.Visitor?
overridden:
public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun visitArray (): <root>.Visitor? declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>'
BLOCK type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided>
CONSTRUCTOR visibility:public <> () returnType:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]'
FUN name:visit visibility:public modality:OPEN <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided>) returnType:kotlin.Unit
overridden:
public abstract fun visit (): kotlin.Unit declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided>
BLOCK_BODY
CALL 'private final fun foo (): kotlin.Unit declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <root>.AnnotationLoader.loadAnnotation.<no name provided> declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray' type=<root>.AnnotationLoader.loadAnnotation.<no name provided> 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>.Visitor
$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>.Visitor
$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>.Visitor
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:visitAnnotation visibility:public modality:OPEN <> ($this:<root>.Visitor) returnType:<root>.Visitor? [fake_override]
overridden:
public open fun visitAnnotation (): <root>.Visitor? declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.Visitor
FUN FAKE_OVERRIDE name:visitArray visibility:public modality:OPEN <> ($this:<root>.Visitor) returnType:<root>.Visitor? [fake_override]
overridden:
public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.Visitor
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided>' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitArray.<no name provided> origin=OBJECT_LITERAL
FUN name:visitAnnotation visibility:public modality:OPEN <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>) returnType:<root>.Visitor?
overridden:
public open fun visitAnnotation (): <root>.Visitor? declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>
BLOCK_BODY
VAR name:visitor type:<root>.Visitor [val]
CALL 'public final fun CHECK_NOT_NULL <T0> (arg0: T0 of kotlin.internal.ir.CHECK_NOT_NULL?): T0 of kotlin.internal.ir.CHECK_NOT_NULL declared in kotlin.internal.ir' type=<root>.Visitor origin=EXCLEXCL
<T0>: <root>.Visitor
arg0: CALL 'public final fun loadAnnotation (): <root>.Visitor? declared in <root>.AnnotationLoader' type=<root>.Visitor? origin=null
$this: GET_VAR '<this>: <root>.AnnotationLoader declared in <root>.AnnotationLoader.loadAnnotation' type=<root>.AnnotationLoader origin=null
RETURN type=kotlin.Nothing from='public open fun visitAnnotation (): <root>.Visitor? declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>'
BLOCK type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>
CONSTRUCTOR visibility:public <> () returnType:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Visitor]'
FIELD DELEGATE name:$$delegate_0 type:<root>.Visitor visibility:private [final]
EXPRESSION_BODY
GET_VAR 'val visitor: <root>.Visitor [val] declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation' type=<root>.Visitor origin=null
FUN DELEGATED_MEMBER name:visitAnnotation visibility:public modality:OPEN <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:<root>.Visitor?
overridden:
public open fun visitAnnotation (): <root>.Visitor? declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun visitAnnotation (): <root>.Visitor? declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>'
CALL 'public open fun visitAnnotation (): <root>.Visitor? declared in <root>.Visitor' type=<root>.Visitor? origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.Visitor visibility:private [final]' type=<root>.Visitor origin=null
receiver: GET_VAR '<this>: <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>.visitAnnotation' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=null
FUN DELEGATED_MEMBER name:visitArray visibility:public modality:OPEN <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:<root>.Visitor?
overridden:
public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun visitArray (): <root>.Visitor? declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>'
CALL 'public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor' type=<root>.Visitor? origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.Visitor visibility:private [final]' type=<root>.Visitor origin=null
receiver: GET_VAR '<this>: <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>.visitArray' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=null
FUN name:visit visibility:public modality:OPEN <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:kotlin.Unit
overridden:
public abstract fun visit (): kotlin.Unit declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>
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 [fake_override,operator] declared in <root>.Visitor
$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>.Visitor
$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>.Visitor
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=OBJECT_LITERAL
FUN name:foo visibility:private modality:FINAL <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>
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 [fake_override,operator] declared in <root>.Visitor
$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>.Visitor
$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>.Visitor
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>' type=<root>.AnnotationLoader.loadAnnotation.<no name provided> origin=OBJECT_LITERAL
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
@@ -2074,6 +2074,12 @@ public class IrTextTestGenerated extends AbstractIrTextTest {
runTest("compiler/testData/ir/irText/firProblems/AnnotationInAnnotation.kt");
}
@Test
@TestMetadata("AnnotationLoader.kt")
public void testAnnotationLoader() throws Exception {
runTest("compiler/testData/ir/irText/firProblems/AnnotationLoader.kt");
}
@Test
@TestMetadata("candidateSymbol.kt")
public void testCandidateSymbol() throws Exception {