diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java index 1f27dbea070..4e06cc2514c 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java @@ -1717,6 +1717,11 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/firProblems"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @TestMetadata("candidateSymbol.kt") + public void testCandidateSymbol() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/candidateSymbol.kt"); + } + @TestMetadata("DeepCopyIrTree.kt") public void testDeepCopyIrTree() throws Exception { runTest("compiler/testData/ir/irText/firProblems/DeepCopyIrTree.kt"); diff --git a/compiler/testData/ir/irText/firProblems/candidateSymbol.fir.txt b/compiler/testData/ir/irText/firProblems/candidateSymbol.fir.txt new file mode 100644 index 00000000000..4d1fe4d9f52 --- /dev/null +++ b/compiler/testData/ir/irText/firProblems/candidateSymbol.fir.txt @@ -0,0 +1,149 @@ +FILE fqName: fileName:/candidateSymbol.kt + CLASS CLASS name:Candidate modality:FINAL visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Candidate + CONSTRUCTOR visibility:public <> (symbol:.AbstractFirBasedSymbol<*>) returnType:.Candidate [primary] + VALUE_PARAMETER name:symbol index:0 type:.AbstractFirBasedSymbol<*> + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Candidate modality:FINAL visibility:public superTypes:[kotlin.Any]' + PROPERTY name:symbol visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:symbol type:.AbstractFirBasedSymbol<*> visibility:private [final] + EXPRESSION_BODY + GET_VAR 'symbol: .AbstractFirBasedSymbol<*> declared in .Candidate.' type=.AbstractFirBasedSymbol<*> origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.Candidate) returnType:.AbstractFirBasedSymbol<*> + correspondingProperty: PROPERTY name:symbol visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.Candidate + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .AbstractFirBasedSymbol<*> declared in .Candidate' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:symbol type:.AbstractFirBasedSymbol<*> visibility:private [final]' type=.AbstractFirBasedSymbol<*> origin=null + receiver: GET_VAR ': .Candidate declared in .Candidate.' type=.Candidate 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: 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: 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: type:kotlin.Any + CLASS CLASS name:AbstractFirBasedSymbol modality:ABSTRACT visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.AbstractFirBasedSymbol.AbstractFirBasedSymbol> + TYPE_PARAMETER name:E index:0 variance: superTypes:[.FirSymbolOwner.AbstractFirBasedSymbol>; .FirDeclaration] + CONSTRUCTOR visibility:public <> () returnType:.AbstractFirBasedSymbol.AbstractFirBasedSymbol> [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:AbstractFirBasedSymbol modality:ABSTRACT visibility:public superTypes:[kotlin.Any]' + PROPERTY name:fir visibility:public modality:FINAL [lateinit,var] + FIELD PROPERTY_BACKING_FIELD name:fir type:E of .AbstractFirBasedSymbol visibility:public + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.AbstractFirBasedSymbol.AbstractFirBasedSymbol>) returnType:E of .AbstractFirBasedSymbol + correspondingProperty: PROPERTY name:fir visibility:public modality:FINAL [lateinit,var] + $this: VALUE_PARAMETER name: type:.AbstractFirBasedSymbol.AbstractFirBasedSymbol> + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): E of .AbstractFirBasedSymbol declared in .AbstractFirBasedSymbol' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:fir type:E of .AbstractFirBasedSymbol visibility:public' type=E of .AbstractFirBasedSymbol origin=null + receiver: GET_VAR ': .AbstractFirBasedSymbol.AbstractFirBasedSymbol> declared in .AbstractFirBasedSymbol.' type=.AbstractFirBasedSymbol.AbstractFirBasedSymbol> origin=null + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.AbstractFirBasedSymbol.AbstractFirBasedSymbol>, :E of .AbstractFirBasedSymbol) returnType:kotlin.Unit + correspondingProperty: PROPERTY name:fir visibility:public modality:FINAL [lateinit,var] + $this: VALUE_PARAMETER name: type:.AbstractFirBasedSymbol.AbstractFirBasedSymbol> + VALUE_PARAMETER name: index:0 type:E of .AbstractFirBasedSymbol + BLOCK_BODY + SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:fir type:E of .AbstractFirBasedSymbol visibility:public' type=kotlin.Unit origin=null + receiver: GET_VAR ': .AbstractFirBasedSymbol.AbstractFirBasedSymbol> declared in .AbstractFirBasedSymbol.' type=.AbstractFirBasedSymbol.AbstractFirBasedSymbol> origin=null + value: GET_VAR ': E of .AbstractFirBasedSymbol declared in .AbstractFirBasedSymbol.' type=E of .AbstractFirBasedSymbol 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: 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: 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: type:kotlin.Any + CLASS INTERFACE name:FirDeclaration modality:ABSTRACT visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirDeclaration + 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: 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: 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: type:kotlin.Any + CLASS INTERFACE name:FirSymbolOwner modality:ABSTRACT visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirSymbolOwner.FirSymbolOwner> + TYPE_PARAMETER name:E index:0 variance: superTypes:[.FirSymbolOwner.FirSymbolOwner>; .FirDeclaration] + PROPERTY name:symbol visibility:public modality:ABSTRACT [val] + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:ABSTRACT <> ($this:.FirSymbolOwner.FirSymbolOwner>) returnType:.AbstractFirBasedSymbol.FirSymbolOwner> + correspondingProperty: PROPERTY name:symbol visibility:public modality:ABSTRACT [val] + $this: VALUE_PARAMETER name: type:.FirSymbolOwner.FirSymbolOwner> + 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: 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: 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: type:kotlin.Any + CLASS INTERFACE name:FirCallableMemberDeclaration modality:ABSTRACT visibility:public superTypes:[.FirSymbolOwner.FirCallableMemberDeclaration>; .FirDeclaration] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirCallableMemberDeclaration.FirCallableMemberDeclaration> + TYPE_PARAMETER name:F index:0 variance: superTypes:[.FirCallableMemberDeclaration.FirCallableMemberDeclaration>] + PROPERTY name:symbol visibility:public modality:ABSTRACT [val] + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:ABSTRACT <> ($this:.FirCallableMemberDeclaration.FirCallableMemberDeclaration>) returnType:.AbstractFirBasedSymbol.FirCallableMemberDeclaration> + correspondingProperty: PROPERTY name:symbol visibility:public modality:ABSTRACT [val] + overridden: + public abstract fun (): .AbstractFirBasedSymbol.FirSymbolOwner> declared in .FirSymbolOwner + $this: VALUE_PARAMETER name: type:.FirCallableMemberDeclaration.FirCallableMemberDeclaration> + 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: 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: 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: type:kotlin.Any + FUN name:foo visibility:public modality:FINAL <> (candidate:.Candidate) returnType:kotlin.Unit + VALUE_PARAMETER name:candidate index:0 type:.Candidate + BLOCK_BODY + VAR name:me type:.FirSymbolOwner.AbstractFirBasedSymbol> [val] + CALL 'public final fun (): E of .AbstractFirBasedSymbol declared in .AbstractFirBasedSymbol' type=.FirSymbolOwner.AbstractFirBasedSymbol> origin=GET_PROPERTY + $this: CALL 'public final fun (): .AbstractFirBasedSymbol<*> declared in .Candidate' type=.AbstractFirBasedSymbol<*> origin=GET_PROPERTY + $this: GET_VAR 'candidate: .Candidate declared in .foo' type=.Candidate origin=null + WHEN type=kotlin.Unit origin=IF + BRANCH + if: WHEN type=kotlin.Boolean origin=ANDAND + BRANCH + if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=.FirCallableMemberDeclaration<*> + GET_VAR 'val me: .FirSymbolOwner.AbstractFirBasedSymbol> [val] declared in .foo' type=.FirSymbolOwner.AbstractFirBasedSymbol> origin=null + then: CALL 'public final fun not (): kotlin.Boolean [operator] declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ + $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ + arg0: CALL 'public abstract fun (): .AbstractFirBasedSymbol.FirCallableMemberDeclaration> declared in .FirCallableMemberDeclaration' type=.AbstractFirBasedSymbol<.FirCallableMemberDeclaration.FirCallableMemberDeclaration>> origin=GET_PROPERTY + $this: TYPE_OP type=.FirCallableMemberDeclaration<*> origin=IMPLICIT_CAST typeOperand=.FirCallableMemberDeclaration<*> + GET_VAR 'val me: .FirSymbolOwner.AbstractFirBasedSymbol> [val] declared in .foo' type=.FirSymbolOwner.AbstractFirBasedSymbol> origin=null + arg1: CONST Null type=kotlin.Nothing? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CONST Boolean type=kotlin.Boolean value=false + then: BLOCK type=kotlin.Unit origin=null diff --git a/compiler/testData/ir/irText/firProblems/candidateSymbol.kt b/compiler/testData/ir/irText/firProblems/candidateSymbol.kt new file mode 100644 index 00000000000..843520eba4e --- /dev/null +++ b/compiler/testData/ir/irText/firProblems/candidateSymbol.kt @@ -0,0 +1,20 @@ +class Candidate(val symbol: AbstractFirBasedSymbol<*>) + +abstract class AbstractFirBasedSymbol where E : FirSymbolOwner, E : FirDeclaration { + lateinit var fir: E +} + +interface FirDeclaration + +interface FirSymbolOwner where E : FirSymbolOwner, E : FirDeclaration { + val symbol: AbstractFirBasedSymbol +} + +interface FirCallableMemberDeclaration> : FirSymbolOwner, FirDeclaration { + override val symbol: AbstractFirBasedSymbol +} + +fun foo(candidate: Candidate) { + val me = candidate.symbol.fir + if (me is FirCallableMemberDeclaration<*> && me.symbol != null) {} +} \ No newline at end of file diff --git a/compiler/testData/ir/irText/firProblems/candidateSymbol.txt b/compiler/testData/ir/irText/firProblems/candidateSymbol.txt new file mode 100644 index 00000000000..0ca369b103f --- /dev/null +++ b/compiler/testData/ir/irText/firProblems/candidateSymbol.txt @@ -0,0 +1,152 @@ +FILE fqName: fileName:/candidateSymbol.kt + CLASS CLASS name:Candidate modality:FINAL visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Candidate + CONSTRUCTOR visibility:public <> (symbol:.AbstractFirBasedSymbol<*>) returnType:.Candidate [primary] + VALUE_PARAMETER name:symbol index:0 type:.AbstractFirBasedSymbol<*> + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Candidate modality:FINAL visibility:public superTypes:[kotlin.Any]' + PROPERTY name:symbol visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:symbol type:.AbstractFirBasedSymbol<*> visibility:private [final] + EXPRESSION_BODY + GET_VAR 'symbol: .AbstractFirBasedSymbol<*> declared in .Candidate.' type=.AbstractFirBasedSymbol<*> origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.Candidate) returnType:.AbstractFirBasedSymbol<*> + correspondingProperty: PROPERTY name:symbol visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.Candidate + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .AbstractFirBasedSymbol<*> declared in .Candidate' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:symbol type:.AbstractFirBasedSymbol<*> visibility:private [final]' type=.AbstractFirBasedSymbol<*> origin=null + receiver: GET_VAR ': .Candidate declared in .Candidate.' type=.Candidate 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: 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: 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: type:kotlin.Any + CLASS CLASS name:AbstractFirBasedSymbol modality:ABSTRACT visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.AbstractFirBasedSymbol.AbstractFirBasedSymbol> + TYPE_PARAMETER name:E index:0 variance: superTypes:[.FirSymbolOwner.AbstractFirBasedSymbol>; .FirDeclaration] + CONSTRUCTOR visibility:public <> () returnType:.AbstractFirBasedSymbol.AbstractFirBasedSymbol> [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:AbstractFirBasedSymbol modality:ABSTRACT visibility:public superTypes:[kotlin.Any]' + PROPERTY name:fir visibility:public modality:FINAL [lateinit,var] + FIELD PROPERTY_BACKING_FIELD name:fir type:E of .AbstractFirBasedSymbol visibility:public + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.AbstractFirBasedSymbol.AbstractFirBasedSymbol>) returnType:E of .AbstractFirBasedSymbol + correspondingProperty: PROPERTY name:fir visibility:public modality:FINAL [lateinit,var] + $this: VALUE_PARAMETER name: type:.AbstractFirBasedSymbol.AbstractFirBasedSymbol> + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): E of .AbstractFirBasedSymbol declared in .AbstractFirBasedSymbol' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:fir type:E of .AbstractFirBasedSymbol visibility:public' type=E of .AbstractFirBasedSymbol origin=null + receiver: GET_VAR ': .AbstractFirBasedSymbol.AbstractFirBasedSymbol> declared in .AbstractFirBasedSymbol.' type=.AbstractFirBasedSymbol.AbstractFirBasedSymbol> origin=null + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.AbstractFirBasedSymbol.AbstractFirBasedSymbol>, :E of .AbstractFirBasedSymbol) returnType:kotlin.Unit + correspondingProperty: PROPERTY name:fir visibility:public modality:FINAL [lateinit,var] + $this: VALUE_PARAMETER name: type:.AbstractFirBasedSymbol.AbstractFirBasedSymbol> + VALUE_PARAMETER name: index:0 type:E of .AbstractFirBasedSymbol + BLOCK_BODY + SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:fir type:E of .AbstractFirBasedSymbol visibility:public' type=kotlin.Unit origin=null + receiver: GET_VAR ': .AbstractFirBasedSymbol.AbstractFirBasedSymbol> declared in .AbstractFirBasedSymbol.' type=.AbstractFirBasedSymbol.AbstractFirBasedSymbol> origin=null + value: GET_VAR ': E of .AbstractFirBasedSymbol declared in .AbstractFirBasedSymbol.' type=E of .AbstractFirBasedSymbol 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: 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: 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: type:kotlin.Any + CLASS INTERFACE name:FirDeclaration modality:ABSTRACT visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirDeclaration + 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: 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: 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: type:kotlin.Any + CLASS INTERFACE name:FirSymbolOwner modality:ABSTRACT visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirSymbolOwner.FirSymbolOwner> + TYPE_PARAMETER name:E index:0 variance: superTypes:[.FirSymbolOwner.FirSymbolOwner>; .FirDeclaration] + PROPERTY name:symbol visibility:public modality:ABSTRACT [val] + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:ABSTRACT <> ($this:.FirSymbolOwner.FirSymbolOwner>) returnType:.AbstractFirBasedSymbol.FirSymbolOwner> + correspondingProperty: PROPERTY name:symbol visibility:public modality:ABSTRACT [val] + $this: VALUE_PARAMETER name: type:.FirSymbolOwner.FirSymbolOwner> + 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: 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: 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: type:kotlin.Any + CLASS INTERFACE name:FirCallableMemberDeclaration modality:ABSTRACT visibility:public superTypes:[.FirSymbolOwner.FirCallableMemberDeclaration>; .FirDeclaration] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirCallableMemberDeclaration.FirCallableMemberDeclaration> + TYPE_PARAMETER name:F index:0 variance: superTypes:[.FirCallableMemberDeclaration.FirCallableMemberDeclaration>] + PROPERTY name:symbol visibility:public modality:ABSTRACT [val] + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:ABSTRACT <> ($this:.FirCallableMemberDeclaration.FirCallableMemberDeclaration>) returnType:.AbstractFirBasedSymbol.FirCallableMemberDeclaration> + correspondingProperty: PROPERTY name:symbol visibility:public modality:ABSTRACT [val] + overridden: + public abstract fun (): .AbstractFirBasedSymbol.FirSymbolOwner> declared in .FirSymbolOwner + $this: VALUE_PARAMETER name: type:.FirCallableMemberDeclaration.FirCallableMemberDeclaration> + 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 .FirSymbolOwner + public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in .FirDeclaration + $this: VALUE_PARAMETER name: 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 .FirSymbolOwner + public open fun hashCode (): kotlin.Int [fake_override] declared in .FirDeclaration + $this: VALUE_PARAMETER name: 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 .FirSymbolOwner + public open fun toString (): kotlin.String [fake_override] declared in .FirDeclaration + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN name:foo visibility:public modality:FINAL <> (candidate:.Candidate) returnType:kotlin.Unit + VALUE_PARAMETER name:candidate index:0 type:.Candidate + BLOCK_BODY + VAR name:me type:.FirSymbolOwner<*> [val] + CALL 'public final fun (): E of .AbstractFirBasedSymbol declared in .AbstractFirBasedSymbol' type=.FirSymbolOwner<*> origin=GET_PROPERTY + $this: CALL 'public final fun (): .AbstractFirBasedSymbol<*> declared in .Candidate' type=.AbstractFirBasedSymbol<*> origin=GET_PROPERTY + $this: GET_VAR 'candidate: .Candidate declared in .foo' type=.Candidate origin=null + WHEN type=kotlin.Unit origin=IF + BRANCH + if: WHEN type=kotlin.Boolean origin=ANDAND + BRANCH + if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=.FirCallableMemberDeclaration<*> + GET_VAR 'val me: .FirSymbolOwner<*> [val] declared in .foo' type=.FirSymbolOwner<*> origin=null + then: CALL 'public final fun not (): kotlin.Boolean [operator] declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ + $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ + arg0: CALL 'public abstract fun (): .AbstractFirBasedSymbol.FirCallableMemberDeclaration> declared in .FirCallableMemberDeclaration' type=.AbstractFirBasedSymbol.FirCallableMemberDeclaration<*>> origin=GET_PROPERTY + $this: TYPE_OP type=.FirCallableMemberDeclaration.FirCallableMemberDeclaration<*>> origin=IMPLICIT_CAST typeOperand=.FirCallableMemberDeclaration.FirCallableMemberDeclaration<*>> + GET_VAR 'val me: .FirSymbolOwner<*> [val] declared in .foo' type=.FirSymbolOwner<*> origin=null + arg1: CONST Null type=kotlin.Nothing? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CONST Boolean type=kotlin.Boolean value=false + then: BLOCK type=kotlin.Unit origin=null diff --git a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java index 1327dad853e..5bdde0fd673 100644 --- a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java @@ -1716,6 +1716,11 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/firProblems"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @TestMetadata("candidateSymbol.kt") + public void testCandidateSymbol() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/candidateSymbol.kt"); + } + @TestMetadata("DeepCopyIrTree.kt") public void testDeepCopyIrTree() throws Exception { runTest("compiler/testData/ir/irText/firProblems/DeepCopyIrTree.kt");