Files
kotlin-fork/analysis/low-level-api-fir/testData/lazyResolve/delegatedFieldNestedNameClashScript.txt
T
Dmitrii Gridin 0b253dc815 [FIR] resolve delegate field return type in correct scope
We should resolve it in the same way as delegate constructor call
to avoid access to nested class scopes

^KT-63522 Fixed
^KT-63042
2023-11-21 08:11:21 +00:00

352 lines
17 KiB
Plaintext
Vendored

RAW_FIR:
FILE: [ResolvedTo(RAW_FIR)] delegatedFieldNestedNameClashScript.kts
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
SCRIPT: [ResolvedTo(RAW_FIR)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
public? final? [ResolvedTo(RAW_FIR)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : Base {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=second/MyClass.prop] prop: second.Base): R|second/MyClass| {
LAZY_super<<implicit>>
}
private final [ResolvedTo(RAW_FIR)] field $$delegate_0: Base = LAZY_EXPRESSION
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val prop: second.Base = R|<local>/prop|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] get(): second.Base
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
}
}
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] delegatedFieldNestedNameClashScript.kts
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
SCRIPT: [ResolvedTo(RAW_FIR)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
public? final? [ResolvedTo(RAW_FIR)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : Base {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=second/MyClass.prop] prop: second.Base): R|second/MyClass| {
LAZY_super<<implicit>>
}
private final [ResolvedTo(RAW_FIR)] field $$delegate_0: Base = LAZY_EXPRESSION
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val prop: second.Base = R|<local>/prop|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] get(): second.Base
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
}
}
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] delegatedFieldNestedNameClashScript.kts
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
SCRIPT: [ResolvedTo(RAW_FIR)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
public? final? [ResolvedTo(RAW_FIR)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : Base {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=second/MyClass.prop] prop: second.Base): R|second/MyClass| {
LAZY_super<<implicit>>
}
private final [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] field $$delegate_0: Base = LAZY_EXPRESSION
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val prop: second.Base = R|<local>/prop|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] get(): second.Base
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
}
}
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] delegatedFieldNestedNameClashScript.kts
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
SCRIPT: [ResolvedTo(RAW_FIR)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
public? final? [ResolvedTo(RAW_FIR)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : Base {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=second/MyClass.prop] prop: second.Base): R|second/MyClass| {
LAZY_super<<implicit>>
}
private final [ResolvedTo(COMPANION_GENERATION)] field $$delegate_0: Base = LAZY_EXPRESSION
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val prop: second.Base = R|<local>/prop|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] get(): second.Base
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
}
}
SUPER_TYPES:
FILE: [ResolvedTo(IMPORTS)] delegatedFieldNestedNameClashScript.kts
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
SCRIPT: [ResolvedTo(RAW_FIR)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public? final? [ResolvedTo(SUPER_TYPES)] interface Base : R|kotlin/Any| {
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
public? final? [ResolvedTo(SUPER_TYPES)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : R|second/Base| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=second/MyClass.prop] prop: second.Base): R|second/MyClass| {
LAZY_super<<implicit>>
}
private final [ResolvedTo(SUPER_TYPES)] field $$delegate_0: Base = LAZY_EXPRESSION
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val prop: second.Base = R|<local>/prop|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] get(): second.Base
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
}
}
TYPES:
FILE: [ResolvedTo(IMPORTS)] delegatedFieldNestedNameClashScript.kts
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
SCRIPT: [ResolvedTo(RAW_FIR)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public? final? [ResolvedTo(SUPER_TYPES)] interface Base : R|kotlin/Any| {
public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
public? final? [ResolvedTo(TYPES)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : R|second/Base| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=second/MyClass.prop] prop: second.Base): R|second/MyClass| {
LAZY_super<<implicit>>
}
private final [ResolvedTo(TYPES)] field $$delegate_0: R|second/Base| = LAZY_EXPRESSION
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val prop: second.Base = R|<local>/prop|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] get(): second.Base
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
}
}
STATUS:
FILE: [ResolvedTo(IMPORTS)] delegatedFieldNestedNameClashScript.kts
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
SCRIPT: [ResolvedTo(RAW_FIR)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public abstract [ResolvedTo(STATUS)] interface Base : R|kotlin/Any| {
public open [ResolvedTo(STATUS)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : R|second/Base| {
public [ResolvedTo(STATUS)] [ContainingClassKey=MyClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=second/MyClass.prop] prop: R|second/Base|): R|second/MyClass| {
LAZY_super<<implicit>>
}
private final [ResolvedTo(STATUS)] field $$delegate_0: R|second/Base| = LAZY_EXPRESSION
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val prop: R|second/Base| = R|<local>/prop|
public [ResolvedTo(STATUS)] [ContainingClassKey=MyClass] get(): R|second/Base|
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
}
}
EXPECT_ACTUAL_MATCHING:
FILE: [ResolvedTo(IMPORTS)] delegatedFieldNestedNameClashScript.kts
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
SCRIPT: [ResolvedTo(RAW_FIR)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public abstract [ResolvedTo(STATUS)] interface Base : R|kotlin/Any| {
public open [ResolvedTo(STATUS)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : R|second/Base| {
public [ResolvedTo(STATUS)] [ContainingClassKey=MyClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=second/MyClass.prop] prop: R|second/Base|): R|second/MyClass| {
LAZY_super<<implicit>>
}
private final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] field $$delegate_0: R|second/Base| = LAZY_EXPRESSION
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val prop: R|second/Base| = R|<local>/prop|
public [ResolvedTo(STATUS)] [ContainingClassKey=MyClass] get(): R|second/Base|
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
}
}
CONTRACTS:
FILE: [ResolvedTo(IMPORTS)] delegatedFieldNestedNameClashScript.kts
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: [ResolvedTo(TYPES)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public abstract [ResolvedTo(STATUS)] interface Base : R|kotlin/Any| {
public open [ResolvedTo(STATUS)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : R|second/Base| {
public [ResolvedTo(STATUS)] [ContainingClassKey=MyClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=second/MyClass.prop] prop: R|second/Base|): R|second/MyClass| {
LAZY_super<<implicit>>
}
private final [ResolvedTo(CONTRACTS)] field $$delegate_0: R|second/Base| = LAZY_EXPRESSION
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val prop: R|second/Base| = R|<local>/prop|
public [ResolvedTo(STATUS)] [ContainingClassKey=MyClass] get(): R|second/Base|
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] delegatedFieldNestedNameClashScript.kts
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: [ResolvedTo(TYPES)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public abstract [ResolvedTo(STATUS)] interface Base : R|kotlin/Any| {
public open [ResolvedTo(STATUS)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : R|second/Base| {
public [ResolvedTo(STATUS)] [ContainingClassKey=MyClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=second/MyClass.prop] prop: R|second/Base|): R|second/MyClass| {
LAZY_super<<implicit>>
}
private final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] field $$delegate_0: R|second/Base| = LAZY_EXPRESSION
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val prop: R|second/Base| = R|<local>/prop|
public [ResolvedTo(STATUS)] [ContainingClassKey=MyClass] get(): R|second/Base|
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
}
}
ANNOTATION_ARGUMENTS:
FILE: [ResolvedTo(IMPORTS)] delegatedFieldNestedNameClashScript.kts
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: [ResolvedTo(TYPES)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public abstract [ResolvedTo(STATUS)] interface Base : R|kotlin/Any| {
public open [ResolvedTo(STATUS)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : R|second/Base| {
public [ResolvedTo(STATUS)] [ContainingClassKey=MyClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=second/MyClass.prop] prop: R|second/Base|): R|second/MyClass| {
LAZY_super<<implicit>>
}
private final [ResolvedTo(ANNOTATION_ARGUMENTS)] field $$delegate_0: R|second/Base| = LAZY_EXPRESSION
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val prop: R|second/Base| = R|<local>/prop|
public [ResolvedTo(STATUS)] [ContainingClassKey=MyClass] get(): R|second/Base|
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
}
}
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] delegatedFieldNestedNameClashScript.kts
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: [ResolvedTo(TYPES)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public abstract [ResolvedTo(STATUS)] interface Base : R|kotlin/Any| {
public open [ResolvedTo(STATUS)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : R|second/Base| {
public [ResolvedTo(STATUS)] [ContainingClassKey=MyClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=second/MyClass.prop] prop: R|second/Base|): R|second/MyClass| {
LAZY_super<<implicit>>
}
private final [ResolvedTo(BODY_RESOLVE)] field $$delegate_0: R|second/Base| = R|<local>/prop|
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val prop: R|second/Base| = R|<local>/prop|
public [ResolvedTo(STATUS)] [ContainingClassKey=MyClass] get(): R|second/Base|
public? final? [ResolvedTo(RAW_FIR)] interface Base : R|kotlin/Any| {
}
}
FILE RAW TO BODY:
FILE: [ResolvedTo(BODY_RESOLVE)] delegatedFieldNestedNameClashScript.kts
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: [ResolvedTo(BODY_RESOLVE)] <script-delegatedFieldNestedNameClashScript.kts>
[ResolvedTo(BODY_RESOLVE)] lval args: R|kotlin/Array<kotlin/String>|
public abstract [ResolvedTo(BODY_RESOLVE)] interface Base : R|kotlin/Any| {
public open [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit| {
}
}
public final [ResolvedTo(BODY_RESOLVE)] [DelegateFieldsMapKey={0=FirFieldSymbol second/MyClass.$$delegate_0}] class MyClass : R|second/Base| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyClass] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=second/MyClass.prop] prop: R|second/Base|): R|second/MyClass| {
super<R|kotlin/Any|>()
}
private final [ResolvedTo(BODY_RESOLVE)] field $$delegate_0: R|second/Base| = R|<local>/prop|
public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true] val prop: R|second/Base| = R|<local>/prop|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyClass] get(): R|second/Base|
public abstract [ResolvedTo(BODY_RESOLVE)] interface Base : R|kotlin/Any| {
}
}