[SLC] introduce hasTypeParameters
^KT-54051
This commit is contained in:
committed by
Space Team
parent
b0bbf27cf5
commit
18f0802de0
+1
-4
@@ -98,10 +98,7 @@ internal class SymbolLightAccessorMethod(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hasTypeParameters(): Boolean =
|
override fun hasTypeParameters(): Boolean = hasTypeParameters(ktModule, containingPropertyDeclaration, containingPropertySymbolPointer)
|
||||||
containingPropertyDeclaration?.typeParameters?.isNotEmpty() ?: analyzeForLightClasses(ktModule) {
|
|
||||||
propertySymbol().typeParameters.isNotEmpty()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getTypeParameterList(): PsiTypeParameterList? = _typeParameterList
|
override fun getTypeParameterList(): PsiTypeParameterList? = _typeParameterList
|
||||||
override fun getTypeParameters(): Array<PsiTypeParameter> = _typeParameterList?.typeParameters ?: PsiTypeParameter.EMPTY_ARRAY
|
override fun getTypeParameters(): Array<PsiTypeParameter> = _typeParameterList?.typeParameters ?: PsiTypeParameter.EMPTY_ARRAY
|
||||||
|
|||||||
+12
@@ -9,14 +9,17 @@ import com.intellij.psi.*
|
|||||||
import com.intellij.psi.util.TypeConversionUtil
|
import com.intellij.psi.util.TypeConversionUtil
|
||||||
import com.intellij.util.IncorrectOperationException
|
import com.intellij.util.IncorrectOperationException
|
||||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||||
|
import org.jetbrains.kotlin.analysis.api.analyze
|
||||||
import org.jetbrains.kotlin.analysis.api.annotations.*
|
import org.jetbrains.kotlin.analysis.api.annotations.*
|
||||||
import org.jetbrains.kotlin.analysis.api.base.KtConstantValue
|
import org.jetbrains.kotlin.analysis.api.base.KtConstantValue
|
||||||
import org.jetbrains.kotlin.analysis.api.components.DefaultTypeClassIds
|
import org.jetbrains.kotlin.analysis.api.components.DefaultTypeClassIds
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithModality
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithModality
|
||||||
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithTypeParameters
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithVisibility
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithVisibility
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||||
import org.jetbrains.kotlin.analysis.api.types.*
|
import org.jetbrains.kotlin.analysis.api.types.*
|
||||||
|
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightElement
|
import org.jetbrains.kotlin.asJava.elements.KtLightElement
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightMember
|
import org.jetbrains.kotlin.asJava.elements.KtLightMember
|
||||||
import org.jetbrains.kotlin.asJava.elements.psiType
|
import org.jetbrains.kotlin.asJava.elements.psiType
|
||||||
@@ -29,6 +32,7 @@ import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolPsiExpression
|
|||||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolPsiLiteral
|
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolPsiLiteral
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.SpecialNames
|
import org.jetbrains.kotlin.name.SpecialNames
|
||||||
|
import org.jetbrains.kotlin.psi.KtTypeParameterListOwner
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
internal fun <L : Any> L.invalidAccess(): Nothing =
|
internal fun <L : Any> L.invalidAccess(): Nothing =
|
||||||
@@ -287,3 +291,11 @@ context(KtAnalysisSession)
|
|||||||
internal fun <T : KtSymbol> KtSymbolPointer<T>.restoreSymbolOrThrowIfDisposed(): T = requireNotNull(restoreSymbol()) {
|
internal fun <T : KtSymbol> KtSymbolPointer<T>.restoreSymbolOrThrowIfDisposed(): T = requireNotNull(restoreSymbol()) {
|
||||||
"${this::class} pointer already disposed"
|
"${this::class} pointer already disposed"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal fun hasTypeParameters(
|
||||||
|
ktModule: KtModule,
|
||||||
|
declaration: KtTypeParameterListOwner?,
|
||||||
|
declarationPointer: KtSymbolPointer<KtSymbolWithTypeParameters>,
|
||||||
|
): Boolean = declaration?.typeParameters?.isNotEmpty() ?: analyze(ktModule) {
|
||||||
|
declarationPointer.restoreSymbolOrThrowIfDisposed().typeParameters.isNotEmpty()
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user