[SLC] drop KtAnalysisSession from SymbolLightParameterList
^KT-54051
This commit is contained in:
committed by
Space Team
parent
029d6bb3a0
commit
e1cc244be0
+6
-3
@@ -239,9 +239,12 @@ internal class SymbolLightAccessorMethod(
|
||||
{ }
|
||||
}
|
||||
|
||||
analyzeForLightClasses(ktModule) {
|
||||
SymbolLightParameterList(this@SymbolLightAccessorMethod, propertySymbol(), parameterPopulator)
|
||||
}
|
||||
SymbolLightParameterList(
|
||||
ktModule = ktModule,
|
||||
parent = this@SymbolLightAccessorMethod,
|
||||
callableWithReceiverSymbolPointer = containingPropertySymbolPointer,
|
||||
parameterPopulator = parameterPopulator,
|
||||
)
|
||||
}
|
||||
|
||||
override fun getParameterList(): PsiParameterList = _parametersList
|
||||
|
||||
+7
-3
@@ -56,15 +56,19 @@ internal abstract class SymbolLightMethod<FType : KtFunctionLikeSymbol>(
|
||||
override fun isVarArgs(): Boolean = _isVarArgs
|
||||
|
||||
private val _parametersList by lazyPub {
|
||||
withFunctionSymbol { functionSymbol ->
|
||||
SymbolLightParameterList(this@SymbolLightMethod, functionSymbol) { builder ->
|
||||
SymbolLightParameterList(
|
||||
ktModule = ktModule,
|
||||
parent = this@SymbolLightMethod,
|
||||
callableWithReceiverSymbolPointer = functionSymbolPointer,
|
||||
) { builder ->
|
||||
withFunctionSymbol { functionSymbol ->
|
||||
functionSymbol.valueParameters.mapIndexed { index, parameter ->
|
||||
val needToSkip = argumentsSkipMask?.get(index) == true
|
||||
if (!needToSkip) {
|
||||
builder.addParameter(
|
||||
SymbolLightParameter(
|
||||
parameterSymbol = parameter,
|
||||
containingMethod = this@SymbolLightMethod
|
||||
containingMethod = this@SymbolLightMethod,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
+1
-4
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassForClassOrObject
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.analyzeForLightClasses
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightParameterList
|
||||
|
||||
@@ -45,9 +44,7 @@ internal class SymbolLightNoArgConstructor(
|
||||
override fun getModifierList(): PsiModifierList = _modifierList
|
||||
|
||||
private val _parameterList: PsiParameterList by lazyPub {
|
||||
analyzeForLightClasses(containingClass.ktModule) {
|
||||
SymbolLightParameterList(this@SymbolLightNoArgConstructor, callableSymbol = null) {}
|
||||
}
|
||||
SymbolLightParameterList(ktModule = ktModule, parent = this@SymbolLightNoArgConstructor)
|
||||
}
|
||||
|
||||
override fun getParameterList(): PsiParameterList = _parameterList
|
||||
|
||||
+21
-20
@@ -8,20 +8,24 @@ package org.jetbrains.kotlin.light.classes.symbol.parameters
|
||||
import com.intellij.psi.PsiParameter
|
||||
import com.intellij.psi.PsiParameterList
|
||||
import com.intellij.psi.impl.light.LightParameterListBuilder
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightElement
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.allowLightClassesOnEdt
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.analyzeForLightClasses
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.restoreSymbolOrThrowIfDisposed
|
||||
import org.jetbrains.kotlin.psi.KtFunction
|
||||
import org.jetbrains.kotlin.psi.KtParameterList
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class SymbolLightParameterList(
|
||||
private val ktModule: KtModule,
|
||||
private val parent: SymbolLightMethodBase,
|
||||
private val callableSymbol: KtCallableSymbol?,
|
||||
parameterPopulator: (LightParameterListBuilder) -> Unit,
|
||||
private val callableWithReceiverSymbolPointer: KtSymbolPointer<KtCallableSymbol>? = null,
|
||||
parameterPopulator: (LightParameterListBuilder) -> Unit = {},
|
||||
) : KtLightElement<KtParameterList, PsiParameterList>,
|
||||
// With this, a parent chain is properly built: from SymbolLightParameter through SymbolLightParameterList to SymbolLightMethod
|
||||
KtLightElementBase(parent),
|
||||
@@ -31,29 +35,26 @@ internal class SymbolLightParameterList(
|
||||
override val kotlinOrigin: KtParameterList?
|
||||
get() = (parent.kotlinOrigin as? KtFunction)?.valueParameterList
|
||||
|
||||
private val clsDelegate: PsiParameterList by lazyPub {
|
||||
private val clsDelegate: PsiParameterList by lazy {
|
||||
val builder = LightParameterListBuilder(manager, language)
|
||||
|
||||
callableSymbol?.let {
|
||||
SymbolLightParameterForReceiver.tryGet(it, parent)?.let { receiver ->
|
||||
builder.addParameter(receiver)
|
||||
callableWithReceiverSymbolPointer?.let {
|
||||
analyzeForLightClasses(ktModule) {
|
||||
SymbolLightParameterForReceiver.tryGet(it.restoreSymbolOrThrowIfDisposed(), parent)?.let { receiver ->
|
||||
builder.addParameter(receiver)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parameterPopulator.invoke(builder)
|
||||
allowLightClassesOnEdt {
|
||||
parameterPopulator.invoke(builder)
|
||||
}
|
||||
|
||||
builder
|
||||
}
|
||||
|
||||
override fun getParameters(): Array<PsiParameter> {
|
||||
return clsDelegate.parameters
|
||||
}
|
||||
|
||||
override fun getParameterIndex(p: PsiParameter): Int {
|
||||
return clsDelegate.getParameterIndex(p)
|
||||
}
|
||||
|
||||
override fun getParametersCount(): Int {
|
||||
return clsDelegate.parametersCount
|
||||
}
|
||||
override fun getParameter(index: Int): PsiParameter? = clsDelegate.getParameter(index)
|
||||
override fun getParameters(): Array<PsiParameter> = clsDelegate.parameters
|
||||
override fun getParameterIndex(p: PsiParameter): Int = clsDelegate.getParameterIndex(p)
|
||||
override fun getParametersCount(): Int = clsDelegate.parametersCount
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user