[LL FIR] fix designation path for synthetic declarations
A designation path for synthetic declarations like fake override or member delegate contained the wrong FirFile, because it was provided by the original declaration that is wrong. So we should pick up the file from our path, because it shouldn't be synthetic ^KT-59505 Fixed
This commit is contained in:
committed by
Space Team
parent
a3758bf70b
commit
f74d4494aa
+1
-1
@@ -274,7 +274,7 @@ fun FirElementWithResolveState.tryCollectDesignationWithFile(): FirDesignationWi
|
||||
}
|
||||
is FirDeclaration -> {
|
||||
val path = collectDesignationPath(this) ?: return null
|
||||
val firFile = getContainingFile() ?: return null
|
||||
val firFile = path.lastOrNull()?.getContainingFile() ?: getContainingFile() ?: return null
|
||||
FirDesignationWithFile(path, this, firFile)
|
||||
}
|
||||
else -> unexpectedElementError<FirElementWithResolveState>(this)
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
// MEMBER_NAME_FILTER: implicitType
|
||||
|
||||
class Aa<caret>a(i: Interface) : Interface by i
|
||||
|
||||
interface Interface {
|
||||
fun implicitType() = 42
|
||||
}
|
||||
+257
@@ -0,0 +1,257 @@
|
||||
RAW_FIR:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(STATUS)] fun implicitType(): <implicit> { LAZY_BLOCK }
|
||||
|
||||
}
|
||||
|
||||
IMPORTS:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(STATUS)] fun implicitType(): <implicit> { LAZY_BLOCK }
|
||||
|
||||
}
|
||||
|
||||
COMPILER_REQUIRED_ANNOTATIONS:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(STATUS)] fun implicitType(): <implicit> { LAZY_BLOCK }
|
||||
|
||||
}
|
||||
|
||||
COMPANION_GENERATION:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(STATUS)] fun implicitType(): <implicit> { LAZY_BLOCK }
|
||||
|
||||
}
|
||||
|
||||
SUPER_TYPES:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(STATUS)] fun implicitType(): <implicit> { LAZY_BLOCK }
|
||||
|
||||
}
|
||||
|
||||
TYPES:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(STATUS)] fun implicitType(): <implicit> { LAZY_BLOCK }
|
||||
|
||||
}
|
||||
|
||||
STATUS:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(STATUS)] fun implicitType(): <implicit> { LAZY_BLOCK }
|
||||
|
||||
}
|
||||
|
||||
EXPECT_ACTUAL_MATCHING:
|
||||
TARGET: public open [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(STATUS)] fun implicitType(): <implicit> { LAZY_BLOCK }
|
||||
|
||||
}
|
||||
|
||||
ARGUMENTS_OF_ANNOTATIONS:
|
||||
TARGET: public open [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(STATUS)] fun implicitType(): <implicit> { LAZY_BLOCK }
|
||||
|
||||
}
|
||||
|
||||
CONTRACTS:
|
||||
TARGET: public open [ResolvedTo(CONTRACTS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(STATUS)] fun implicitType(): <implicit> { LAZY_BLOCK }
|
||||
|
||||
}
|
||||
|
||||
IMPLICIT_TYPES_BODY_RESOLVE:
|
||||
TARGET: public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): R|kotlin/Int|
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun implicitType(): R|kotlin/Int| {
|
||||
^implicitType Int(42)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ANNOTATIONS_ARGUMENTS_MAPPING:
|
||||
TARGET: public open [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): R|kotlin/Int|
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun implicitType(): R|kotlin/Int| {
|
||||
^implicitType Int(42)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
BODY_RESOLVE:
|
||||
TARGET: public open [ResolvedTo(BODY_RESOLVE)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): R|kotlin/Int|
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun implicitType(): R|kotlin/Int| {
|
||||
^implicitType Int(42)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FILE RAW TO BODY:
|
||||
FILE: [ResolvedTo(IMPORTS)] delegateWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(BODY_RESOLVE)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Aaa] constructor([ResolvedTo(BODY_RESOLVE)] i: R|Interface|): R|Aaa| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
private final [ResolvedTo(BODY_RESOLVE)] field $$delegate_0: R|Interface| = R|<local>/i|
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(BODY_RESOLVE)] interface Interface : R|kotlin/Any| {
|
||||
public open [ResolvedTo(BODY_RESOLVE)] fun implicitType(): R|kotlin/Int| {
|
||||
^implicitType Int(42)
|
||||
}
|
||||
|
||||
}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
// SKIP_WHEN_OUT_OF_CONTENT_ROOT
|
||||
// MODULE: m1
|
||||
// FILE: Interface.kt
|
||||
interface Interface {
|
||||
fun implicitType() = 42
|
||||
}
|
||||
|
||||
// MODULE: m2(m1)
|
||||
// MEMBER_NAME_FILTER: implicitType
|
||||
// FILE: usage.kt
|
||||
class Aa<caret>a(i: Interface) : Interface by i
|
||||
Vendored
+193
@@ -0,0 +1,193 @@
|
||||
RAW_FIR:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
IMPORTS:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
COMPILER_REQUIRED_ANNOTATIONS:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
COMPANION_GENERATION:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
SUPER_TYPES:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
TYPES:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
STATUS:
|
||||
TARGET: public open [ResolvedTo(STATUS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
EXPECT_ACTUAL_MATCHING:
|
||||
TARGET: public open [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
ARGUMENTS_OF_ANNOTATIONS:
|
||||
TARGET: public open [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
CONTRACTS:
|
||||
TARGET: public open [ResolvedTo(CONTRACTS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0, FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType)] fun implicitType(): <implicit>
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
IMPLICIT_TYPES_BODY_RESOLVE:
|
||||
TARGET: public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): R|kotlin/Int|
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
ANNOTATIONS_ARGUMENTS_MAPPING:
|
||||
TARGET: public open [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): R|kotlin/Int|
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
BODY_RESOLVE:
|
||||
TARGET: public open [ResolvedTo(BODY_RESOLVE)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): R|kotlin/Int|
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| {
|
||||
LAZY_super<<implicit>>
|
||||
}
|
||||
|
||||
private final [ResolvedTo(STATUS)] field $$delegate_0: R|Interface| = LAZY_EXPRESSION
|
||||
|
||||
}
|
||||
|
||||
FILE RAW TO BODY:
|
||||
FILE: [ResolvedTo(IMPORTS)] usage.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public final [ResolvedTo(BODY_RESOLVE)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| {
|
||||
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Aaa] constructor([ResolvedTo(BODY_RESOLVE)] i: R|Interface|): R|Aaa| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
private final [ResolvedTo(BODY_RESOLVE)] field $$delegate_0: R|Interface| = R|<local>/i|
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// MEMBER_NAME_FILTER: property
|
||||
abstract class S<caret>ubClass: AbstractClass<Int>()
|
||||
|
||||
abstract class AbstractClass<T> {
|
||||
abstract val property: T
|
||||
}
|
||||
+304
@@ -0,0 +1,304 @@
|
||||
RAW_FIR:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
IMPORTS:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
COMPILER_REQUIRED_ANNOTATIONS:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
COMPANION_GENERATION:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
SUPER_TYPES:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
TYPES:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
STATUS:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
EXPECT_ACTUAL_MATCHING:
|
||||
TARGET: public abstract [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
ARGUMENTS_OF_ANNOTATIONS:
|
||||
TARGET: public abstract [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
CONTRACTS:
|
||||
TARGET: public abstract [ResolvedTo(CONTRACTS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
IMPLICIT_TYPES_BODY_RESOLVE:
|
||||
TARGET: public abstract [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
ANNOTATIONS_ARGUMENTS_MAPPING:
|
||||
TARGET: public abstract [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
BODY_RESOLVE:
|
||||
TARGET: public abstract [ResolvedTo(BODY_RESOLVE)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] val property: R|T|
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
FILE RAW TO BODY:
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverride.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(BODY_RESOLVE)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
super<R|AbstractClass<kotlin/Int>|>()
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(BODY_RESOLVE)] class AbstractClass<[ResolvedTo(BODY_RESOLVE)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(BODY_RESOLVE)] T>(): R|AbstractClass<T>| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public abstract [ResolvedTo(BODY_RESOLVE)] val property: R|T|
|
||||
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
// SKIP_WHEN_OUT_OF_CONTENT_ROOT
|
||||
// MODULE: m1
|
||||
// FILE: AbstractClass.kt
|
||||
abstract class AbstractClass<T> {
|
||||
abstract val property: T
|
||||
}
|
||||
|
||||
// MODULE: m2(m1)
|
||||
// MEMBER_NAME_FILTER: property
|
||||
// FILE: SubClass.kt
|
||||
abstract class S<caret>ubClass: AbstractClass<Int>()
|
||||
Vendored
+178
@@ -0,0 +1,178 @@
|
||||
RAW_FIR:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
IMPORTS:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
COMPILER_REQUIRED_ANNOTATIONS:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
COMPANION_GENERATION:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
SUPER_TYPES:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
TYPES:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
STATUS:
|
||||
TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
EXPECT_ACTUAL_MATCHING:
|
||||
TARGET: public abstract [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ARGUMENTS_OF_ANNOTATIONS:
|
||||
TARGET: public abstract [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
CONTRACTS:
|
||||
TARGET: public abstract [ResolvedTo(CONTRACTS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
IMPLICIT_TYPES_BODY_RESOLVE:
|
||||
TARGET: public abstract [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ANNOTATIONS_ARGUMENTS_MAPPING:
|
||||
TARGET: public abstract [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
BODY_RESOLVE:
|
||||
TARGET: public abstract [ResolvedTo(BODY_RESOLVE)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FILE RAW TO BODY:
|
||||
FILE: [ResolvedTo(IMPORTS)] SubClass.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(BODY_RESOLVE)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
super<R|AbstractClass<kotlin/Int>|>()
|
||||
}
|
||||
|
||||
}
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
// MEMBER_NAME_FILTER: property
|
||||
abstract class S<caret>ubClass: AbstractClass<Int>()
|
||||
|
||||
abstract class AbstractClass<T> {
|
||||
val property = foo()
|
||||
abstract fun foo(): T
|
||||
}
|
||||
Vendored
+332
@@ -0,0 +1,332 @@
|
||||
RAW_FIR:
|
||||
TARGET: public final [ResolvedTo(STATUS)] [FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor={T -> kotlin/Int}, baseSymbol=FirPropertySymbol /AbstractClass.property), SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: <implicit>
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(STATUS)] val property: <implicit> = LAZY_EXPRESSION
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): <implicit>
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
IMPORTS:
|
||||
TARGET: public final [ResolvedTo(STATUS)] [FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor={T -> kotlin/Int}, baseSymbol=FirPropertySymbol /AbstractClass.property), SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: <implicit>
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(STATUS)] val property: <implicit> = LAZY_EXPRESSION
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): <implicit>
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
COMPILER_REQUIRED_ANNOTATIONS:
|
||||
TARGET: public final [ResolvedTo(STATUS)] [FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor={T -> kotlin/Int}, baseSymbol=FirPropertySymbol /AbstractClass.property), SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: <implicit>
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(STATUS)] val property: <implicit> = LAZY_EXPRESSION
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): <implicit>
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
COMPANION_GENERATION:
|
||||
TARGET: public final [ResolvedTo(STATUS)] [FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor={T -> kotlin/Int}, baseSymbol=FirPropertySymbol /AbstractClass.property), SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: <implicit>
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(STATUS)] val property: <implicit> = LAZY_EXPRESSION
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): <implicit>
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
SUPER_TYPES:
|
||||
TARGET: public final [ResolvedTo(STATUS)] [FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor={T -> kotlin/Int}, baseSymbol=FirPropertySymbol /AbstractClass.property), SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: <implicit>
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(STATUS)] val property: <implicit> = LAZY_EXPRESSION
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): <implicit>
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
TYPES:
|
||||
TARGET: public final [ResolvedTo(STATUS)] [FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor={T -> kotlin/Int}, baseSymbol=FirPropertySymbol /AbstractClass.property), SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: <implicit>
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(STATUS)] val property: <implicit> = LAZY_EXPRESSION
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): <implicit>
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
STATUS:
|
||||
TARGET: public final [ResolvedTo(STATUS)] [FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor={T -> kotlin/Int}, baseSymbol=FirPropertySymbol /AbstractClass.property), SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: <implicit>
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(STATUS)] val property: <implicit> = LAZY_EXPRESSION
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): <implicit>
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
EXPECT_ACTUAL_MATCHING:
|
||||
TARGET: public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor={T -> kotlin/Int}, baseSymbol=FirPropertySymbol /AbstractClass.property), SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: <implicit>
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(STATUS)] val property: <implicit> = LAZY_EXPRESSION
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): <implicit>
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
ARGUMENTS_OF_ANNOTATIONS:
|
||||
TARGET: public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] [FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor={T -> kotlin/Int}, baseSymbol=FirPropertySymbol /AbstractClass.property), SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: <implicit>
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(STATUS)] val property: <implicit> = LAZY_EXPRESSION
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): <implicit>
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
CONTRACTS:
|
||||
TARGET: public final [ResolvedTo(CONTRACTS)] [FakeOverrideSubstitutionKey=FakeOverrideSubstitution(substitutor={T -> kotlin/Int}, baseSymbol=FirPropertySymbol /AbstractClass.property), SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: <implicit>
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(STATUS)] val property: <implicit> = LAZY_EXPRESSION
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): <implicit>
|
||||
|
||||
public abstract [ResolvedTo(STATUS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
IMPLICIT_TYPES_BODY_RESOLVE:
|
||||
TARGET: public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val property: R|T| = this@R|/AbstractClass|.R|/AbstractClass.foo|()
|
||||
public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
public abstract [ResolvedTo(CONTRACTS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
ANNOTATIONS_ARGUMENTS_MAPPING:
|
||||
TARGET: public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val property: R|T| = this@R|/AbstractClass|.R|/AbstractClass.foo|()
|
||||
public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
public abstract [ResolvedTo(CONTRACTS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
BODY_RESOLVE:
|
||||
TARGET: public final [ResolvedTo(BODY_RESOLVE)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int|
|
||||
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
LAZY_super<R|AbstractClass<kotlin/Int>|>
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass<T>| {
|
||||
LAZY_super<R|kotlin/Any|>
|
||||
}
|
||||
|
||||
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val property: R|T| = this@R|/AbstractClass|.R|/AbstractClass.foo|()
|
||||
public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
public abstract [ResolvedTo(CONTRACTS)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
|
||||
FILE RAW TO BODY:
|
||||
FILE: [ResolvedTo(IMPORTS)] substitutionFakeOverrideWithImplicitType.kt
|
||||
[ResolvedTo(BODY_RESOLVE)] annotations container
|
||||
public abstract [ResolvedTo(BODY_RESOLVE)] class SubClass : R|AbstractClass<kotlin/Int>| {
|
||||
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=SubClass] constructor(): R|SubClass| {
|
||||
super<R|AbstractClass<kotlin/Int>|>()
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(BODY_RESOLVE)] class AbstractClass<[ResolvedTo(BODY_RESOLVE)] T> : R|kotlin/Any| {
|
||||
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(BODY_RESOLVE)] T>(): R|AbstractClass<T>| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] val property: R|T| = this@R|/AbstractClass|.R|/AbstractClass.foo|()
|
||||
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=AbstractClass] get(): R|T|
|
||||
|
||||
public abstract [ResolvedTo(BODY_RESOLVE)] fun foo(): R|T|
|
||||
|
||||
}
|
||||
+3
-3
@@ -36,7 +36,7 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractFirLazyDeclaratio
|
||||
if (Directives.RESOLVE_FILE_ANNOTATIONS in moduleStructure.allDirectives) {
|
||||
val annotationContainer = firResolveSession.getOrBuildFirFile(ktFile).annotationsContainer
|
||||
val session = annotationContainer.moduleData.session as LLFirResolvableModuleSession
|
||||
fun(phase: FirResolvePhase) {
|
||||
annotationContainer to fun(phase: FirResolvePhase) {
|
||||
session.moduleComponents.firModuleLazyDeclarationResolver.lazyResolve(
|
||||
annotationContainer,
|
||||
session.getScopeSession(),
|
||||
@@ -46,8 +46,8 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractFirLazyDeclaratio
|
||||
} else {
|
||||
val ktDeclaration = testServices.expressionMarkerProvider.getElementOfTypeAtCaret<KtDeclaration>(ktFile)
|
||||
val declarationSymbol = ktDeclaration.resolveToFirSymbol(firResolveSession)
|
||||
val firDeclaration = chooseMemberDeclarationIfNeeded(declarationSymbol, moduleStructure)
|
||||
fun(phase: FirResolvePhase) {
|
||||
val firDeclaration = chooseMemberDeclarationIfNeeded(declarationSymbol, moduleStructure, firResolveSession)
|
||||
firDeclaration.fir to fun(phase: FirResolvePhase) {
|
||||
firDeclaration.lazyResolveToPhase(phase)
|
||||
}
|
||||
}
|
||||
|
||||
+65
-8
@@ -6,7 +6,10 @@
|
||||
package org.jetbrains.kotlin.analysis.low.level.api.fir
|
||||
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirResolveMultiDesignationCollector
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AbstractLowLevelApiSingleFileTest
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.FirElementFinder.findElementIn
|
||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.renderer.FirDeclarationRendererWithFilteredAttributes
|
||||
@@ -14,6 +17,7 @@ import org.jetbrains.kotlin.fir.renderer.FirErrorExpressionExtendedRenderer
|
||||
import org.jetbrains.kotlin.fir.renderer.FirFileAnnotationsContainerRenderer
|
||||
import org.jetbrains.kotlin.fir.renderer.FirRenderer
|
||||
import org.jetbrains.kotlin.fir.renderer.FirResolvePhaseRenderer
|
||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
@@ -35,7 +39,7 @@ abstract class AbstractFirLazyDeclarationResolveTestCase : AbstractLowLevelApiSi
|
||||
protected fun doLazyResolveTest(
|
||||
ktFile: KtFile,
|
||||
testServices: TestServices,
|
||||
resolverProvider: (LLFirResolveSession) -> ((FirResolvePhase) -> Unit),
|
||||
resolverProvider: (LLFirResolveSession) -> Pair<FirElementWithResolveState, ((FirResolvePhase) -> Unit)>,
|
||||
) {
|
||||
val resultBuilder = StringBuilder()
|
||||
val renderer = FirRenderer(
|
||||
@@ -48,18 +52,35 @@ abstract class AbstractFirLazyDeclarationResolveTestCase : AbstractLowLevelApiSi
|
||||
|
||||
resolveWithClearCaches(ktFile) { firResolveSession ->
|
||||
checkSession(firResolveSession)
|
||||
val resolver = resolverProvider(firResolveSession)
|
||||
|
||||
val firFile = firResolveSession.getOrBuildFirFile(ktFile)
|
||||
val (elementToResolve, resolver) = resolverProvider(firResolveSession)
|
||||
val designations = LLFirResolveMultiDesignationCollector.getDesignationsToResolve(elementToResolve)
|
||||
val filesToRender = listOf(firFile).plus(designations.map { it.firFile }).distinct()
|
||||
val shouldRenderDeclaration = filesToRender.all { file ->
|
||||
findElementIn<FirElementWithResolveState>(file) {
|
||||
it == elementToResolve
|
||||
} == null
|
||||
}
|
||||
|
||||
for (currentPhase in FirResolvePhase.entries) {
|
||||
if (currentPhase == FirResolvePhase.SEALED_CLASS_INHERITORS) continue
|
||||
resolver(currentPhase)
|
||||
|
||||
val firFile = firResolveSession.getOrBuildFirFile(ktFile)
|
||||
if (resultBuilder.isNotEmpty()) {
|
||||
resultBuilder.appendLine()
|
||||
}
|
||||
|
||||
resultBuilder.append("${currentPhase.name}:\n")
|
||||
renderer.renderElementAsString(firFile)
|
||||
resultBuilder.append("${currentPhase.name}:")
|
||||
if (shouldRenderDeclaration) {
|
||||
resultBuilder.append("\nTARGET: ")
|
||||
renderer.renderElementAsString(elementToResolve)
|
||||
}
|
||||
|
||||
for (file in filesToRender) {
|
||||
resultBuilder.appendLine()
|
||||
renderer.renderElementAsString(file)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +99,11 @@ abstract class AbstractFirLazyDeclarationResolveTestCase : AbstractLowLevelApiSi
|
||||
testServices.assertions.assertEqualsToTestDataFileSibling(resultBuilder.toString())
|
||||
}
|
||||
|
||||
protected fun chooseMemberDeclarationIfNeeded(symbol: FirBasedSymbol<*>, moduleStructure: TestModuleStructure): FirBasedSymbol<*> {
|
||||
protected fun chooseMemberDeclarationIfNeeded(
|
||||
symbol: FirBasedSymbol<*>,
|
||||
moduleStructure: TestModuleStructure,
|
||||
session: LLFirResolveSession,
|
||||
): FirBasedSymbol<*> {
|
||||
val directives = moduleStructure.allDirectives
|
||||
val memberClassFilters = listOfNotNull(
|
||||
directives.singleOrZeroValue(Directives.MEMBER_CLASS_FILTER),
|
||||
@@ -87,14 +112,46 @@ abstract class AbstractFirLazyDeclarationResolveTestCase : AbstractLowLevelApiSi
|
||||
|
||||
val classSymbol = symbol as FirClassSymbol
|
||||
val declarations = classSymbol.declarationSymbols
|
||||
val filteredSymbols = declarations.filter { declaration -> memberClassFilters.all { it.invoke(declaration) } }
|
||||
val filter = { declaration: FirBasedSymbol<*> -> memberClassFilters.all { it.invoke(declaration) } }
|
||||
val filteredSymbols = declarations.filter(filter)
|
||||
return when (filteredSymbols.size) {
|
||||
0 -> error("Empty result for:${declarations.joinToString("\n")}")
|
||||
0 -> deepSearch(classSymbol, session, filter) ?: error("Empty result for:${declarations.joinToString("\n")}")
|
||||
1 -> filteredSymbols.single()
|
||||
else -> error("Result ambiguity:\n${filteredSymbols.joinToString("\n")}")
|
||||
}
|
||||
}
|
||||
|
||||
private fun deepSearch(
|
||||
classSymbol: FirClassSymbol<*>,
|
||||
session: LLFirResolveSession,
|
||||
filter: (FirBasedSymbol<*>) -> Boolean,
|
||||
): FirBasedSymbol<*>? {
|
||||
val scope = classSymbol.unsubstitutedScope(
|
||||
session.useSiteFirSession,
|
||||
session.getScopeSessionFor(session.useSiteFirSession),
|
||||
false,
|
||||
FirResolvePhase.STATUS,
|
||||
)
|
||||
|
||||
val names = scope.getCallableNames()
|
||||
val declarations = mutableListOf<FirBasedSymbol<*>>()
|
||||
for (name in names) {
|
||||
scope.processFunctionsByName(name) {
|
||||
if (filter(it)) {
|
||||
declarations += it
|
||||
}
|
||||
}
|
||||
|
||||
scope.processPropertiesByName(name) {
|
||||
if (filter(it)) {
|
||||
declarations += it
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return declarations.singleOrNull() ?: error("Can't choose from:\n${declarations.joinToString("\n")}")
|
||||
}
|
||||
|
||||
override fun configureTest(builder: TestConfigurationBuilder) {
|
||||
super.configureTest(builder)
|
||||
with(builder) {
|
||||
|
||||
+2
-2
@@ -47,8 +47,8 @@ abstract class AbstractStdLibSourcesLazyDeclarationResolveTest : AbstractFirLazy
|
||||
|
||||
doLazyResolveTest(file, testServices) { firSession ->
|
||||
val regularClass = findRegularClass(classId, module, firSession)
|
||||
val declarationToResolve = chooseMemberDeclarationIfNeeded(regularClass, moduleStructure)
|
||||
fun(phase: FirResolvePhase) {
|
||||
val declarationToResolve = chooseMemberDeclarationIfNeeded(regularClass, moduleStructure, firSession)
|
||||
declarationToResolve.fir to fun(phase: FirResolvePhase) {
|
||||
declarationToResolve.lazyResolveToPhase(phase)
|
||||
}
|
||||
}
|
||||
|
||||
+30
@@ -162,6 +162,18 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/dataComponent2.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegateWithImplicitType.kt")
|
||||
public void testDelegateWithImplicitType() throws Exception {
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/delegateWithImplicitType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegateWithImplicitTypeInDifferentModules.kt")
|
||||
public void testDelegateWithImplicitTypeInDifferentModules() throws Exception {
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/delegateWithImplicitTypeInDifferentModules.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegatedField.kt")
|
||||
public void testDelegatedField() throws Exception {
|
||||
@@ -402,6 +414,24 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/secondaryConstructorParameter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("substitutionFakeOverride.kt")
|
||||
public void testSubstitutionFakeOverride() throws Exception {
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/substitutionFakeOverride.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("substitutionFakeOverrideInDifferentModules.kt")
|
||||
public void testSubstitutionFakeOverrideInDifferentModules() throws Exception {
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/substitutionFakeOverrideInDifferentModules.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("substitutionFakeOverrideWithImplicitType.kt")
|
||||
public void testSubstitutionFakeOverrideWithImplicitType() throws Exception {
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/substitutionFakeOverrideWithImplicitType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("superTypes.kt")
|
||||
public void testSuperTypes() throws Exception {
|
||||
|
||||
+30
@@ -162,6 +162,18 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/dataComponent2.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegateWithImplicitType.kt")
|
||||
public void testDelegateWithImplicitType() throws Exception {
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/delegateWithImplicitType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegateWithImplicitTypeInDifferentModules.kt")
|
||||
public void testDelegateWithImplicitTypeInDifferentModules() throws Exception {
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/delegateWithImplicitTypeInDifferentModules.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegatedField.kt")
|
||||
public void testDelegatedField() throws Exception {
|
||||
@@ -402,6 +414,24 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/secondaryConstructorParameter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("substitutionFakeOverride.kt")
|
||||
public void testSubstitutionFakeOverride() throws Exception {
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/substitutionFakeOverride.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("substitutionFakeOverrideInDifferentModules.kt")
|
||||
public void testSubstitutionFakeOverrideInDifferentModules() throws Exception {
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/substitutionFakeOverrideInDifferentModules.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("substitutionFakeOverrideWithImplicitType.kt")
|
||||
public void testSubstitutionFakeOverrideWithImplicitType() throws Exception {
|
||||
runTest("analysis/low-level-api-fir/testdata/lazyResolve/substitutionFakeOverrideWithImplicitType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("superTypes.kt")
|
||||
public void testSuperTypes() throws Exception {
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.test.services.TestServices
|
||||
|
||||
abstract class AbstractLowLevelApiSingleFileTest : AbstractAnalysisApiBasedTest() {
|
||||
final override fun doTestByModuleStructure(moduleStructure: TestModuleStructure, testServices: TestServices) {
|
||||
val singleModule = moduleStructure.modules.single()
|
||||
val singleModule = moduleStructure.modules.last()
|
||||
val singleFile = testServices.ktModuleProvider.getModuleFiles(singleModule).filterIsInstance<KtFile>().first()
|
||||
doTestByFileStructure(singleFile, moduleStructure, testServices)
|
||||
}
|
||||
|
||||
+1
@@ -21,6 +21,7 @@ abstract class ConeSubstitutor : TypeSubstitutorMarker {
|
||||
return null
|
||||
}
|
||||
|
||||
override fun toString(): String = "Empty"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -207,7 +207,11 @@ class DelegatedWrapperData<D : FirCallableDeclaration>(
|
||||
val wrapped: D,
|
||||
val containingClass: ConeClassLikeLookupTag,
|
||||
val delegateField: FirField,
|
||||
)
|
||||
) {
|
||||
override fun toString(): String = "[${::wrapped.name}=${wrapped.symbol}, " +
|
||||
"${::containingClass.name}=$containingClass, " +
|
||||
"${::delegateField.name}=${delegateField.symbol}"
|
||||
}
|
||||
|
||||
var <D : FirCallableDeclaration>
|
||||
D.delegatedWrapperData: DelegatedWrapperData<D>? by FirDeclarationDataRegistry.data(DelegatedWrapperDataKey)
|
||||
|
||||
Reference in New Issue
Block a user