From d3043b6f1cdf4025f6a90a6eed59a76490361ceb Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Mon, 8 May 2023 15:44:12 +0200 Subject: [PATCH] [LL FIR] do not treat declarations from object literal as non-local ^KTIJ-25437 Fixed --- .../fir/element/builder/FirElementBuilder.kt | 7 +- .../level/api/fir/util/declarationUtils.kt | 38 +- .../localFunctionInsideSuperEntryCall.kt | 12 + .../localFunctionInsideSuperEntryCall.txt | 405 ++++++++++++++++++ .../localParameterInsideSuperEntryCall.kt | 12 + .../localParameterInsideSuperEntryCall.txt | 405 ++++++++++++++++++ ...otLazyDeclarationResolveTestGenerated.java | 12 + ...ceLazyDeclarationResolveTestGenerated.java | 12 + 8 files changed, 894 insertions(+), 9 deletions(-) create mode 100644 analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideSuperEntryCall.kt create mode 100644 analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideSuperEntryCall.txt create mode 100644 analysis/low-level-api-fir/testdata/lazyResolve/localParameterInsideSuperEntryCall.kt create mode 100644 analysis/low-level-api-fir/testdata/lazyResolve/localParameterInsideSuperEntryCall.txt diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/element/builder/FirElementBuilder.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/element/builder/FirElementBuilder.kt index 83873e4941b..0bb6004dda0 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/element/builder/FirElementBuilder.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/element/builder/FirElementBuilder.kt @@ -121,7 +121,12 @@ internal fun PsiElement.getNonLocalContainingOrThisDeclaration(predicate: (KtDec for (parent in parentsWithSelf) { candidate?.let { notNullCandidate -> - if (parent is KtEnumEntry || parent is KtCallableDeclaration && !notNullCandidate.isPartOf(parent) || parent is KtClassInitializer) { + if (parent is KtEnumEntry || + parent is KtCallableDeclaration && + !notNullCandidate.isPartOf(parent) || + parent is KtClassInitializer || + parent is KtObjectLiteralExpression + ) { // Candidate turned out to be local. Let's find another one. candidate = null } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/declarationUtils.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/declarationUtils.kt index 5482fefea5e..1b19f780b43 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/declarationUtils.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/declarationUtils.kt @@ -27,7 +27,7 @@ import org.jetbrains.kotlin.psi.psiUtil.parameterIndex internal fun KtDeclaration.findSourceNonLocalFirDeclaration( firFileBuilder: LLFirFileBuilder, provider: FirProvider, - containerFirFile: FirFile? = null + containerFirFile: FirFile? = null, ): FirDeclaration { //TODO test what way faster findSourceNonLocalFirDeclarationByProvider(firFileBuilder, provider, containerFirFile)?.let { return it } @@ -78,7 +78,7 @@ internal fun KtElement.findSourceByTraversingWholeTree( private fun KtDeclaration.findSourceNonLocalFirDeclarationByProvider( firFileBuilder: LLFirFileBuilder, provider: FirProvider, - containerFirFile: FirFile? + containerFirFile: FirFile?, ): FirDeclaration? { val candidate = when { this is KtClassOrObject -> findFir(provider) @@ -118,11 +118,11 @@ private fun KtDeclaration.findSourceNonLocalFirDeclarationByProvider( } this is KtScript -> containerFirFile?.declarations?.singleOrNull { it is FirScript } this is KtPropertyAccessor -> { - val firPropertyDeclaration = property.findSourceNonLocalFirDeclaration( + val firPropertyDeclaration = property.nonLocalFirDeclaration( firFileBuilder, provider, containerFirFile, - ) as FirVariable + ) if (isGetter) { firPropertyDeclaration.getter @@ -134,11 +134,11 @@ private fun KtDeclaration.findSourceNonLocalFirDeclarationByProvider( val ownerFunction = ownerFunction ?: errorWithFirSpecificEntries("Containing function should be not null for KtParameter", psi = this) - val firFunctionDeclaration = ownerFunction.findSourceNonLocalFirDeclarationByProvider( + val firFunctionDeclaration = ownerFunction.nonLocalFirDeclaration( firFileBuilder, provider, containerFirFile, - ) as FirFunction + ) firFunctionDeclaration.valueParameters[parameterIndex()] } @@ -146,11 +146,11 @@ private fun KtDeclaration.findSourceNonLocalFirDeclarationByProvider( val declaration = containingDeclaration ?: errorWithFirSpecificEntries("Containing declaration should be not null for KtTypeParameter", psi = this) - val firTypeParameterOwner = declaration.findSourceNonLocalFirDeclarationByProvider( + val firTypeParameterOwner = declaration.nonLocalFirDeclaration( firFileBuilder, provider, containerFirFile, - ) as FirTypeParameterRefsOwner + ) val index = (parent as KtTypeParameterList).parameters.indexOf(this) firTypeParameterOwner.typeParameters[index] as FirDeclaration @@ -160,6 +160,28 @@ private fun KtDeclaration.findSourceNonLocalFirDeclarationByProvider( return candidate?.takeIf { it.realPsi == this } } +private inline fun KtDeclaration.nonLocalFirDeclaration( + firFileBuilder: LLFirFileBuilder, + provider: FirProvider, + containerFirFile: FirFile?, +): T { + val firResult = findSourceNonLocalFirDeclarationByProvider( + firFileBuilder, + provider, + containerFirFile, + ) + + if (firResult !is T) { + errorWithFirSpecificEntries( + "${T::class.simpleName} for ${this::class.simpleName} declaration is not found", + psi = this, + fir = firResult, + ) + } + + return firResult +} + fun FirAnonymousInitializer.containingClass(): FirRegularClass { val dispatchReceiverType = this.dispatchReceiverType as? ConeLookupTagBasedType ?: error("dispatchReceiverType for FirAnonymousInitializer modifier cannot be null") diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideSuperEntryCall.kt b/analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideSuperEntryCall.kt new file mode 100644 index 00000000000..bb215146b3c --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideSuperEntryCall.kt @@ -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) { + } +}) \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideSuperEntryCall.txt b/analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideSuperEntryCall.txt new file mode 100644 index 00000000000..92a317fbca2 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideSuperEntryCall.txt @@ -0,0 +1,405 @@ +RAW_FIR: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] localFunctionInsideSuperEntryCall.kt + [ResolvedTo(BODY_RESOLVE)] annotations container + public abstract [ResolvedTo(BODY_RESOLVE)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(BODY_RESOLVE)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(BODY_RESOLVE)] i: R|one/Interface|): R|one/ClassWithParameter| { + super() + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/localParameterInsideSuperEntryCall.kt b/analysis/low-level-api-fir/testdata/lazyResolve/localParameterInsideSuperEntryCall.kt new file mode 100644 index 00000000000..26a4d8a6047 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/localParameterInsideSuperEntryCall.kt @@ -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) { + } +}) \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/localParameterInsideSuperEntryCall.txt b/analysis/low-level-api-fir/testdata/lazyResolve/localParameterInsideSuperEntryCall.txt new file mode 100644 index 00000000000..c54a85b4f02 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/localParameterInsideSuperEntryCall.txt @@ -0,0 +1,405 @@ +RAW_FIR: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(RAW_FIR)] annotations container + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(STATUS)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(STATUS)] i: R|one/Interface|): R|one/ClassWithParameter| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] localParameterInsideSuperEntryCall.kt + [ResolvedTo(BODY_RESOLVE)] annotations container + public abstract [ResolvedTo(BODY_RESOLVE)] interface Interface : R|kotlin/Any| { + public abstract [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] param: R|kotlin/String|): R|kotlin/Unit| + + } + public open [ResolvedTo(BODY_RESOLVE)] class ClassWithParameter : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=ClassWithParameter] constructor([ResolvedTo(BODY_RESOLVE)] i: R|one/Interface|): R|one/ClassWithParameter| { + super() + } + + } + public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { + super(object : R|one/Interface| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=] constructor(): R|| { + super() + } + + public open override [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { + } + + } + ) + } + + } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java index 3a9fc2eeb4c..575b47173ef 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java @@ -198,12 +198,24 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst runTest("analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.kt"); } + @Test + @TestMetadata("localFunctionInsideSuperEntryCall.kt") + public void testLocalFunctionInsideSuperEntryCall() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideSuperEntryCall.kt"); + } + @Test @TestMetadata("localNestedClass.kt") public void testLocalNestedClass() throws Exception { runTest("analysis/low-level-api-fir/testdata/lazyResolve/localNestedClass.kt"); } + @Test + @TestMetadata("localParameterInsideSuperEntryCall.kt") + public void testLocalParameterInsideSuperEntryCall() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/localParameterInsideSuperEntryCall.kt"); + } + @Test @TestMetadata("nestedTypeAlias.kt") public void testNestedTypeAlias() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java index 50ffe040137..52893df740d 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java @@ -198,12 +198,24 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou runTest("analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.kt"); } + @Test + @TestMetadata("localFunctionInsideSuperEntryCall.kt") + public void testLocalFunctionInsideSuperEntryCall() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/localFunctionInsideSuperEntryCall.kt"); + } + @Test @TestMetadata("localNestedClass.kt") public void testLocalNestedClass() throws Exception { runTest("analysis/low-level-api-fir/testdata/lazyResolve/localNestedClass.kt"); } + @Test + @TestMetadata("localParameterInsideSuperEntryCall.kt") + public void testLocalParameterInsideSuperEntryCall() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/localParameterInsideSuperEntryCall.kt"); + } + @Test @TestMetadata("nestedTypeAlias.kt") public void testNestedTypeAlias() throws Exception {