[LL FIR] add more restrictions to getNonLocalContainingOrThisDeclaration

^KTIJ-25437
KT-MR-10036
This commit is contained in:
Dmitrii Gridin
2023-05-09 11:18:45 +02:00
parent ff65324172
commit 09dbae5eca
26 changed files with 1518 additions and 1 deletions
@@ -125,7 +125,8 @@ internal fun PsiElement.getNonLocalContainingOrThisDeclaration(predicate: (KtDec
parent is KtCallableDeclaration &&
!notNullCandidate.isPartOf(parent) ||
parent is KtClassInitializer ||
parent is KtObjectLiteralExpression
parent is KtObjectLiteralExpression ||
parent is KtCallElement
) {
// Candidate turned out to be local. Let's find another one.
candidate = null
@@ -0,0 +1,8 @@
package one
annotation class Anno(val s: String)
@Anno(f<caret>un(): String {
}())
class TopLevelClass
@@ -0,0 +1,293 @@
RAW_FIR:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
SUPER_TYPES:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
TYPES:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
STATUS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
EXPECT_ACTUAL_MATCHING:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
ARGUMENTS_OF_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
CONTRACTS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
ANNOTATIONS_ARGUMENTS_MAPPING:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(RAW_FIR)] annotations container
public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
FILE RAW TO BODY:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideAnnotationCall.kt
[ResolvedTo(BODY_RESOLVE)] annotations container
public final [ResolvedTo(BODY_RESOLVE)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=one/Anno.s] s: R|kotlin/String|): R|one/Anno| {
super<R|kotlin/Any|>()
}
public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
@R|one/Anno|[Types](s = [ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()) public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|kotlin/Any|>()
}
}
@@ -0,0 +1,8 @@
package one
open class ClassWithParameter(i: () -> Unit)
class TopLevelClass : ClassWithParameter({
fun fo<caret>o(param: String) {
}
})
@@ -0,0 +1,293 @@
RAW_FIR:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
SUPER_TYPES:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
TYPES:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
STATUS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
EXPECT_ACTUAL_MATCHING:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
ARGUMENTS_OF_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
CONTRACTS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
ANNOTATIONS_ARGUMENTS_MAPPING:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
FILE RAW TO BODY:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
[ResolvedTo(BODY_RESOLVE)] annotations container
public open [ResolvedTo(BODY_RESOLVE)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(BODY_RESOLVE)] i: R|() -> kotlin/Unit|): R|one/ClassWithParameter| {
super<R|kotlin/Any|>()
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
}
}
)
}
}
@@ -0,0 +1,10 @@
package one
open class ClassWithParameter(s: String)
class TopLevelClass : ClassWithParameter("${
{
fun s<caret>tr(): String = 42
str()
}()
}")
@@ -0,0 +1,321 @@
RAW_FIR:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
SUPER_TYPES:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
TYPES:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
STATUS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
EXPECT_ACTUAL_MATCHING:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
ARGUMENTS_OF_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
CONTRACTS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
ANNOTATIONS_ARGUMENTS_MAPPING:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
FILE RAW TO BODY:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideLambdaCallInsideStringTemplate.kt
[ResolvedTo(BODY_RESOLVE)] annotations container
public open [ResolvedTo(BODY_RESOLVE)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(BODY_RESOLVE)] s: R|kotlin/String|): R|one/ClassWithParameter| {
super<R|kotlin/Any|>()
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun str(): R|kotlin/String| {
^str Int(42)
}
^ R|<local>/str|()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
@@ -0,0 +1,9 @@
package one
open class ClassWithParameter(s: String)
class TopLevelClass : ClassWithParameter("${
fu<caret>n(): String {
return ""
}()
}")
@@ -0,0 +1,265 @@
RAW_FIR:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
SUPER_TYPES:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
TYPES:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
STATUS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
EXPECT_ACTUAL_MATCHING:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
ARGUMENTS_OF_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
CONTRACTS:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
ANNOTATIONS_ARGUMENTS_MAPPING:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] s: R|kotlin/String|): R|one/ClassWithParameter| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
FILE RAW TO BODY:
FILE: [ResolvedTo(IMPORTS)] localFunctionInsideStringTemplate.kt
[ResolvedTo(BODY_RESOLVE)] annotations container
public open [ResolvedTo(BODY_RESOLVE)] class ClassWithParameter : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(BODY_RESOLVE)] s: R|kotlin/String|): R|one/ClassWithParameter| {
super<R|kotlin/Any|>()
}
}
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>(<strcat>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String()
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()))
}
}
@@ -0,0 +1,17 @@
package one
class A constructor(a: Int) {
fun boo() {
fun bar() {
}
}
val i: Int = 42
init {
fun foo() {
}
}
}
@@ -0,0 +1,17 @@
package one
/* anchor --> */class A /* anchor --> */constructor(/* anchor --> */a: Int/* <-- */)/* <-- */ {
/* anchor --> */fun boo() {
fun bar() {
}
}/* <-- */
/* anchor --> */val i: Int = 42/* <-- */
/* anchor --> */init {
fun foo() {
}
}/* <-- */
}/* <-- */
@@ -0,0 +1,8 @@
package one
annotation class Anno(val s: String)
@Anno(fun(): String {
}())
class TopLevelClass
@@ -0,0 +1,8 @@
package one
/* anchor --> */annotation class Anno/* anchor --> */(/* anchor --> */val s: String/* <-- */)/* <-- *//* <-- */
/* anchor --> */@Anno(fun(): String {
}())
class TopLevelClass/* <-- */
@@ -0,0 +1,8 @@
package one
open class ClassWithParameter(i: () -> Unit)
class TopLevelClass : ClassWithParameter({
fun foo(param: String) {
}
})
@@ -0,0 +1,8 @@
package one
/* anchor --> */open class ClassWithParameter/* anchor --> */(/* anchor --> */i: () -> Unit/* <-- */)/* <-- *//* <-- */
/* anchor --> */class TopLevelClass : ClassWithParameter({
fun foo(param: String) {
}
})/* <-- */
@@ -0,0 +1,10 @@
package one
open class ClassWithParameter(s: String)
class TopLevelClass : ClassWithParameter("${
{
fun str(): String = 42
str()
}()
}")
@@ -0,0 +1,10 @@
package one
/* anchor --> */open class ClassWithParameter/* anchor --> */(/* anchor --> */s: String/* <-- */)/* <-- *//* <-- */
/* anchor --> */class TopLevelClass : ClassWithParameter("${
{
fun str(): String = 42
str()
}()
}")/* <-- */
@@ -0,0 +1,9 @@
package one
open class ClassWithParameter(s: String)
class TopLevelClass : ClassWithParameter("${
fun(): String {
return ""
}()
}")
@@ -0,0 +1,9 @@
package one
/* anchor --> */open class ClassWithParameter/* anchor --> */(/* anchor --> */s: String/* <-- */)/* <-- *//* <-- */
/* anchor --> */class TopLevelClass : ClassWithParameter("${
fun(): String {
return ""
}()
}")/* <-- */
@@ -0,0 +1,12 @@
package one
interface Interface {
fun foo(param: String)
}
open class ClassWithParameter(i: Interface)
class TopLevelClass : ClassWithParameter(object : Interface {
override fun foo(param: String) {
}
})
@@ -0,0 +1,12 @@
package one
/* anchor --> */interface Interface {
/* anchor --> */fun foo(/* anchor --> */param: String/* <-- */)/* <-- */
}/* <-- */
/* anchor --> */open class ClassWithParameter/* anchor --> */(/* anchor --> */i: Interface/* <-- */)/* <-- *//* <-- */
/* anchor --> */class TopLevelClass : ClassWithParameter(object : Interface {
override fun foo(param: String) {
}
})/* <-- */
@@ -0,0 +1,67 @@
/*
* 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.
*/
package org.jetbrains.kotlin.analysis.low.level.api.fir
import com.intellij.psi.PsiComment
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.impl.source.tree.LeafPsiElement
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLocalContainingOrThisDeclaration
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AbstractLowLevelApiSingleFileTest
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirSourceTestConfigurator
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
import org.jetbrains.kotlin.test.services.TestModuleStructure
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.assertions
abstract class AbstractFirNonLocalDeclarationAnchorTest : AbstractLowLevelApiSingleFileTest() {
override val configurator: AnalysisApiTestConfigurator = AnalysisApiFirSourceTestConfigurator(analyseInDependentSession = false)
override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) {
val anchors = hashSetOf<KtDeclaration>()
ktFile.forEachDescendantOfType<PsiElement> {
it.getNonLocalContainingOrThisDeclaration()?.let(anchors::add)
}
val text = buildString {
ktFile.accept(object : PsiElementVisitor() {
override fun visitElement(element: PsiElement) {
val isAnchor = element in anchors
if (isAnchor) {
append("/* anchor --> */")
}
if (element is LeafPsiElement) {
append(element.text)
}
element.acceptChildren(this)
if (isAnchor) {
append("/* <-- */")
}
}
override fun visitComment(comment: PsiComment) {}
})
}
testServices.assertions.assertEqualsToTestDataFileSibling(text)
}
override fun configureTest(builder: TestConfigurationBuilder) {
super.configureTest(builder)
with(builder) {
defaultDirectives {
+ConfigurationDirectives.WITH_STDLIB
}
}
}
}
@@ -0,0 +1,62 @@
/*
* 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.
*/
package org.jetbrains.kotlin.analysis.low.level.api.fir;
import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("analysis/low-level-api-fir/testdata/nonLocalDeclarationAnchors")
@TestDataPath("$PROJECT_ROOT")
public class FirNonLocalDeclarationAnchorTestGenerated extends AbstractFirNonLocalDeclarationAnchorTest {
@Test
public void testAllFilesPresentInNonLocalDeclarationAnchors() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testdata/nonLocalDeclarationAnchors"), Pattern.compile("^(.+)\\.kt$"), null, true);
}
@Test
@TestMetadata("classWithMembers.kt")
public void testClassWithMembers() throws Exception {
runTest("analysis/low-level-api-fir/testdata/nonLocalDeclarationAnchors/classWithMembers.kt");
}
@Test
@TestMetadata("localFunctionInsideAnnotationCall.kt")
public void testLocalFunctionInsideAnnotationCall() throws Exception {
runTest("analysis/low-level-api-fir/testdata/nonLocalDeclarationAnchors/localFunctionInsideAnnotationCall.kt");
}
@Test
@TestMetadata("localFunctionInsideFunctionLiteral.kt")
public void testLocalFunctionInsideFunctionLiteral() throws Exception {
runTest("analysis/low-level-api-fir/testdata/nonLocalDeclarationAnchors/localFunctionInsideFunctionLiteral.kt");
}
@Test
@TestMetadata("localFunctionInsideLambdaCallInsideStringTemplate.kt")
public void testLocalFunctionInsideLambdaCallInsideStringTemplate() throws Exception {
runTest("analysis/low-level-api-fir/testdata/nonLocalDeclarationAnchors/localFunctionInsideLambdaCallInsideStringTemplate.kt");
}
@Test
@TestMetadata("localFunctionInsideStringTemplate.kt")
public void testLocalFunctionInsideStringTemplate() throws Exception {
runTest("analysis/low-level-api-fir/testdata/nonLocalDeclarationAnchors/localFunctionInsideStringTemplate.kt");
}
@Test
@TestMetadata("localFunctionInsideSuperEntryCall.kt")
public void testLocalFunctionInsideSuperEntryCall() throws Exception {
runTest("analysis/low-level-api-fir/testdata/nonLocalDeclarationAnchors/localFunctionInsideSuperEntryCall.kt");
}
}
@@ -210,6 +210,30 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst
runTest("analysis/low-level-api-fir/testdata/lazyResolve/localConstructor.kt");
}
@Test
@TestMetadata("localFunctionInsideAnnotationCall.kt")
public void testLocalFunctionInsideAnnotationCall() throws Exception {
runTest("analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideAnnotationCall.kt");
}
@Test
@TestMetadata("localFunctionInsideFunctionLiteral.kt")
public void testLocalFunctionInsideFunctionLiteral() throws Exception {
runTest("analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideFunctionLiteral.kt");
}
@Test
@TestMetadata("localFunctionInsideLambdaCallInsideStringTemplate.kt")
public void testLocalFunctionInsideLambdaCallInsideStringTemplate() throws Exception {
runTest("analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideLambdaCallInsideStringTemplate.kt");
}
@Test
@TestMetadata("localFunctionInsideStringTemplate.kt")
public void testLocalFunctionInsideStringTemplate() throws Exception {
runTest("analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideStringTemplate.kt");
}
@Test
@TestMetadata("localFunctionInsideSuperEntryCall.kt")
public void testLocalFunctionInsideSuperEntryCall() throws Exception {
@@ -210,6 +210,30 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou
runTest("analysis/low-level-api-fir/testdata/lazyResolve/localConstructor.kt");
}
@Test
@TestMetadata("localFunctionInsideAnnotationCall.kt")
public void testLocalFunctionInsideAnnotationCall() throws Exception {
runTest("analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideAnnotationCall.kt");
}
@Test
@TestMetadata("localFunctionInsideFunctionLiteral.kt")
public void testLocalFunctionInsideFunctionLiteral() throws Exception {
runTest("analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideFunctionLiteral.kt");
}
@Test
@TestMetadata("localFunctionInsideLambdaCallInsideStringTemplate.kt")
public void testLocalFunctionInsideLambdaCallInsideStringTemplate() throws Exception {
runTest("analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideLambdaCallInsideStringTemplate.kt");
}
@Test
@TestMetadata("localFunctionInsideStringTemplate.kt")
public void testLocalFunctionInsideStringTemplate() throws Exception {
runTest("analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideStringTemplate.kt");
}
@Test
@TestMetadata("localFunctionInsideSuperEntryCall.kt")
public void testLocalFunctionInsideSuperEntryCall() throws Exception {
@@ -95,6 +95,10 @@ internal fun TestGroupSuite.generateFirLowLevelApiTests() {
testClass<AbstractFileBasedKotlinDeclarationProviderTest> {
model("fileBasedDeclarationProvider", pattern = TestGeneratorUtil.KT_OR_KTS)
}
testClass<AbstractFirNonLocalDeclarationAnchorTest> {
model("nonLocalDeclarationAnchors")
}
}
testGroup(