diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirAbstractBodyTargetResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirAbstractBodyTargetResolver.kt index 25ee5ba7830..7556bb7c04c 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirAbstractBodyTargetResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirAbstractBodyTargetResolver.kt @@ -50,7 +50,7 @@ internal abstract class LLFirAbstractBodyTargetResolver( } override fun withScript(firScript: FirScript, action: () -> Unit) { - transformer.context.withScopesForScript(firScript, transformer.components, action) + transformer.context.withScript(firScript, transformer.components, action) } override fun withFile(firFile: FirFile, action: () -> Unit) { diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/ContextCollector.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/ContextCollector.kt index 1f6edad67cb..beaa79c7d16 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/ContextCollector.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/ContextCollector.kt @@ -294,7 +294,7 @@ private class ContextCollectorVisitor( } override fun visitScript(script: FirScript) { - context.withScopesForScript(script, holder) { + context.withScript(script, holder) { withInterceptor { super.visitScript(script) } diff --git a/analysis/low-level-api-fir/testdata/inBlockModification/rawContractScript.txt b/analysis/low-level-api-fir/testdata/inBlockModification/rawContractScript.txt index 84fe9f44498..9f11904e6f3 100644 --- a/analysis/low-level-api-fir/testdata/inBlockModification/rawContractScript.txt +++ b/analysis/low-level-api-fir/testdata/inBlockModification/rawContractScript.txt @@ -1,11 +1,5 @@ BEFORE MODIFICATION: -public final [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] arg: R|kotlin/Any?|, [ResolvedTo(BODY_RESOLVE)] num: R|kotlin/Int?|, [ResolvedTo(BODY_RESOLVE)] block: R|() -> kotlin/Unit|): R|kotlin/Unit| - [Contract description] < - #().#((R|/arg| is R|kotlin/String|)), - #().#(!=(R|/num|, Null(null))), - #(R|/block|, #.#) - > - { +public final [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] arg: R|kotlin/Any?|, [ResolvedTo(BODY_RESOLVE)] num: R|kotlin/Int?|, [ResolvedTo(BODY_RESOLVE)] block: R|() -> kotlin/Unit|): R|kotlin/Unit| { #((R|/arg| is R|kotlin/String|)) #(!=(R|/num|, Null(null))) R|/block|.R|SubstitutionOverride|() diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt index 18706a5a9ba..e99e958c533 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt @@ -434,7 +434,7 @@ fun shouldApproximateAnonymousTypesOfNonLocalDeclaration(containingCallableVisib fun FirDeclaration.visibilityForApproximation(container: FirDeclaration?): Visibility { if (this !is FirMemberDeclaration) return Visibilities.Local val containerVisibility = - if (container == null || container is FirFile) Visibilities.Public + if (container == null || container is FirFile || container is FirScript) Visibilities.Public else (container as? FirRegularClass)?.visibility ?: Visibilities.Local if (containerVisibility == Visibilities.Local || visibility == Visibilities.Local) return Visibilities.Local if (containerVisibility == Visibilities.Private) return Visibilities.Private diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt index 5a9db757ab7..39a7f9ac33c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt @@ -505,7 +505,8 @@ class BodyResolveContext( } } - fun withScopesForScript( + @OptIn(PrivateForInline::class) + fun withScript( owner: FirScript, holder: SessionHolder, f: () -> T @@ -537,7 +538,9 @@ class BodyResolveContext( ) return withTowerDataContexts(newContexts) { - f() + withContainer(owner) { + f() + } } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index 56cf23ff74a..313d0a62991 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -618,7 +618,7 @@ open class FirDeclarationsResolveTransformer( fun withScript(script: FirScript, action: () -> FirScript): FirScript { dataFlowAnalyzer.enterScript(script) - val result = context.withScopesForScript(script, components) { + val result = context.withScript(script, components) { action() } dataFlowAnalyzer.exitScript() // TODO: FirScript should be a FirControlFlowGraphOwner, KT-59683