diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirClassWithAllCallablesResolveTarget.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirClassWithAllCallablesResolveTarget.kt index ecaf37ca9ca..4cef3893bb8 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirClassWithAllCallablesResolveTarget.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirClassWithAllCallablesResolveTarget.kt @@ -14,10 +14,10 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass * [LLFirResolveTarget] representing a class with all callable members (functions and properties). */ class LLFirClassWithAllCallablesResolveTarget( - override val firFile: FirFile, - override val path: List, - val target: FirRegularClass, -) : LLFirResolveTarget() { + firFile: FirFile, + classPath: List, + target: FirRegularClass, +) : LLFirResolveTargetWithDedicatedElement(firFile, classPath, target) { override fun forEachTarget(action: (FirElementWithResolveState) -> Unit) { action(target) forEachCallable(action) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirClassWithAllMembersResolveTarget.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirClassWithAllMembersResolveTarget.kt index 308214c9950..8ffd2871029 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirClassWithAllMembersResolveTarget.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirClassWithAllMembersResolveTarget.kt @@ -14,10 +14,10 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass * [LLFirResolveTarget] representing a class with all class members to be resolved (this includes callables, init blocks, and classifiers) */ class LLFirClassWithAllMembersResolveTarget( - override val firFile: FirFile, - override val path: List, - val target: FirRegularClass, -) : LLFirResolveTarget() { + firFile: FirFile, + classPath: List, + target: FirRegularClass, +) : LLFirResolveTargetWithDedicatedElement(firFile, classPath, target) { override fun forEachTarget(action: (FirElementWithResolveState) -> Unit) { action(target) forEachMember(action) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirClassWithSpecificMembersResolveTarget.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirClassWithSpecificMembersResolveTarget.kt index 208d58d6ae8..decb62c6c43 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirClassWithSpecificMembersResolveTarget.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirClassWithSpecificMembersResolveTarget.kt @@ -11,11 +11,11 @@ import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirRegularClass class LLFirClassWithSpecificMembersResolveTarget( - override val firFile: FirFile, - override val path: List, - val target: FirRegularClass, - val members: List -) : LLFirResolveTarget() { + firFile: FirFile, + classPath: List, + target: FirRegularClass, + val members: List, +) : LLFirResolveTargetWithDedicatedElement(firFile, classPath, target) { override fun forEachTarget(action: (FirElementWithResolveState) -> Unit) { action(target) forEachMember(action) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirResolveTarget.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirResolveTarget.kt index 6709c3cb042..da165d5a4b3 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirResolveTarget.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirResolveTarget.kt @@ -20,19 +20,19 @@ import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment * Specifies the path to the resolve targets and resolve targets themselves. * Those targets are going to be resolved by [org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirModuleLazyDeclarationResolver] */ -sealed class LLFirResolveTarget { +sealed class LLFirResolveTarget( /** * [FirFile] where the targets are located */ - abstract val firFile: FirFile + val firFile: FirFile, /** * The list of [FirRegularClass] which are the required to go from file to target declarations in the top-down order. * * If resolve target is [FirRegularClass] itself, it's not included into the [path] */ - abstract val path: List - + val path: List, +) { /** * Executions the [action] for each target that this [LLFirResolveTarget] represents. */ diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirResolveTargetWithDedicatedElement.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirResolveTargetWithDedicatedElement.kt new file mode 100644 index 00000000000..d7a51ab7bb0 --- /dev/null +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirResolveTargetWithDedicatedElement.kt @@ -0,0 +1,23 @@ +/* + * 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.api.targets + +import org.jetbrains.kotlin.fir.FirElementWithResolveState +import org.jetbrains.kotlin.fir.declarations.FirFile +import org.jetbrains.kotlin.fir.declarations.FirRegularClass + +/** + * [LLFirResolveTarget] representing a target with a dedicated main element. + * Such resolved is supposed to resolve [target] element and/or its declaration subgraph. + */ +sealed class LLFirResolveTargetWithDedicatedElement( + firFile: FirFile, + classPath: List, + val target: T, +) : LLFirResolveTarget( + firFile = firFile, + path = classPath, +) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirSingleResolveTarget.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirSingleResolveTarget.kt index a995201db13..c35d73fb6a4 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirSingleResolveTarget.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirSingleResolveTarget.kt @@ -13,11 +13,10 @@ import org.jetbrains.kotlin.fir.declarations.* * [LLFirResolveTarget] representing single target to resolve. The [target] can be any of [FirElementWithResolveState] */ class LLFirSingleResolveTarget( - override val firFile: FirFile, - override val path: List, - val target: FirElementWithResolveState, -) : LLFirResolveTarget() { - + firFile: FirFile, + classPath: List, + target: FirElementWithResolveState, +) : LLFirResolveTargetWithDedicatedElement(firFile, classPath, target) { override fun forEachTarget(action: (FirElementWithResolveState) -> Unit) { action(target) } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirWholeClassResolveTarget.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirWholeClassResolveTarget.kt index 85b31b7828e..16565145f39 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirWholeClassResolveTarget.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirWholeClassResolveTarget.kt @@ -14,10 +14,10 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass * All of them are going to be resolved. */ class LLFirWholeClassResolveTarget( - override val firFile: FirFile, - override val path: List, - val target: FirRegularClass, -) : LLFirResolveTarget() { + firFile: FirFile, + classPath: List, + target: FirRegularClass, +) : LLFirResolveTargetWithDedicatedElement(firFile, classPath, target) { override fun forEachTarget(action: (FirElementWithResolveState) -> Unit) { action(target) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirWholeFileResolveTarget.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirWholeFileResolveTarget.kt index a83777e3aa8..c4f41d6bbbb 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirWholeFileResolveTarget.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/targets/LLFirWholeFileResolveTarget.kt @@ -14,11 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.FirScript /** * [LLFirResolveTarget] representing all declarations in file. All of them are going to be resolved. */ -class LLFirWholeFileResolveTarget( - override val firFile: FirFile, -) : LLFirResolveTarget() { - override val path: List get() = emptyList() - +class LLFirWholeFileResolveTarget(firFile: FirFile) : LLFirResolveTarget(firFile, emptyList()) { override fun forEachTarget(action: (FirElementWithResolveState) -> Unit) { fun goInside(target: FirElementWithResolveState) { action(target)