Skip to content

Commit 9bacece

Browse files
neetopiaKSP Auto Pick
authored and
KSP Auto Pick
committed
UPDATE_AA_VERSION: 2.1.0-dev-1329
(cherry picked from commit f6e0c5e)
1 parent 0c950e0 commit 9bacece

29 files changed

+542
-518
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ junit5Version=5.8.2
99
junitPlatformVersion=1.8.2
1010
googleTruthVersion=1.1
1111

12-
aaKotlinBaseVersion=2.0.20-dev-6501
12+
aaKotlinBaseVersion=2.1.0-dev-1329
1313
aaIntellijVersion=233.13135.103
1414
aaGuavaVersion=33.2.0-jre
1515
aaAsmVersion=9.0

kotlin-analysis-api/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ dependencies {
6161
"org.jetbrains.kotlin:high-level-api-for-ide",
6262
"org.jetbrains.kotlin:low-level-api-fir-for-ide",
6363
"org.jetbrains.kotlin:analysis-api-platform-interface-for-ide",
64-
"org.jetbrains.kotlin:analysis-project-structure-for-ide",
6564
"org.jetbrains.kotlin:symbol-light-classes-for-ide",
6665
"org.jetbrains.kotlin:analysis-api-standalone-for-ide",
6766
"org.jetbrains.kotlin:high-level-api-impl-base-for-ide",

kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/IncrementalContextAA.kt

Lines changed: 53 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,22 @@ import com.google.devtools.ksp.symbol.KSNode
3434
import com.google.devtools.ksp.symbol.Origin
3535
import com.intellij.psi.PsiJavaFile
3636
import com.intellij.util.containers.MultiMap
37-
import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionLikeSymbol
38-
import org.jetbrains.kotlin.analysis.api.symbols.KtJavaFieldSymbol
39-
import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySymbol
40-
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
41-
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers
42-
import org.jetbrains.kotlin.analysis.api.types.KtCapturedType
43-
import org.jetbrains.kotlin.analysis.api.types.KtDefinitelyNotNullType
44-
import org.jetbrains.kotlin.analysis.api.types.KtDynamicType
45-
import org.jetbrains.kotlin.analysis.api.types.KtErrorType
46-
import org.jetbrains.kotlin.analysis.api.types.KtFlexibleType
47-
import org.jetbrains.kotlin.analysis.api.types.KtIntersectionType
48-
import org.jetbrains.kotlin.analysis.api.types.KtNonErrorClassType
49-
import org.jetbrains.kotlin.analysis.api.types.KtType
50-
import org.jetbrains.kotlin.analysis.api.types.KtTypeParameterType
37+
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
38+
import org.jetbrains.kotlin.analysis.api.symbols.KaFunctionSymbol
39+
import org.jetbrains.kotlin.analysis.api.symbols.KaJavaFieldSymbol
40+
import org.jetbrains.kotlin.analysis.api.symbols.KaPropertySymbol
41+
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol
42+
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaDeclarationContainerSymbol
43+
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
44+
import org.jetbrains.kotlin.analysis.api.types.KaCapturedType
45+
import org.jetbrains.kotlin.analysis.api.types.KaClassType
46+
import org.jetbrains.kotlin.analysis.api.types.KaDefinitelyNotNullType
47+
import org.jetbrains.kotlin.analysis.api.types.KaDynamicType
48+
import org.jetbrains.kotlin.analysis.api.types.KaErrorType
49+
import org.jetbrains.kotlin.analysis.api.types.KaFlexibleType
50+
import org.jetbrains.kotlin.analysis.api.types.KaIntersectionType
51+
import org.jetbrains.kotlin.analysis.api.types.KaType
52+
import org.jetbrains.kotlin.analysis.api.types.KaTypeParameterType
5153
import org.jetbrains.kotlin.incremental.IncrementalCompilationContext
5254
import org.jetbrains.kotlin.incremental.LookupStorage
5355
import org.jetbrains.kotlin.incremental.LookupSymbol
@@ -104,47 +106,48 @@ class IncrementalContextAA(
104106
return map
105107
}
106108

107-
private fun recordWithArgs(type: KtType, file: PsiJavaFile) {
109+
private fun recordWithArgs(type: KaType, file: PsiJavaFile) {
108110
type.typeArguments().forEach {
109111
it.type?.let { recordWithArgs(it, file) }
110112
}
111113
when (type) {
112-
is KtNonErrorClassType -> {
114+
is KaClassType -> {
113115
val fqn = type.classId.asFqNameString()
114116
recordLookup(file, fqn)
115117
}
116-
is KtFlexibleType -> {
118+
is KaFlexibleType -> {
117119
recordWithArgs(type.lowerBound, file)
118120
recordWithArgs(type.upperBound, file)
119121
}
120-
is KtIntersectionType -> {
122+
is KaIntersectionType -> {
121123
type.conjuncts.forEach {
122124
recordWithArgs(it, file)
123125
}
124126
}
125-
is KtCapturedType -> {
127+
is KaCapturedType -> {
126128
type.projection.type?.let {
127129
recordWithArgs(it, file)
128130
}
129131
}
130-
is KtDefinitelyNotNullType -> {
132+
is KaDefinitelyNotNullType -> {
131133
recordWithArgs(type.original, file)
132134
}
133-
is KtErrorType, is KtDynamicType, is KtTypeParameterType -> {}
135+
is KaErrorType, is KaDynamicType, is KaTypeParameterType -> {}
134136
}
135137
}
136138

137-
fun recordLookup(type: KtType, context: KSNode?) {
139+
fun recordLookup(type: KaType, context: KSNode?) {
138140
val file = (context?.containingFile as? KSFileJavaImpl)?.psi ?: return
139141

140142
recordWithArgs(type, file)
141143
}
142144

143-
private fun recordLookupForDeclaration(symbol: KtSymbol, file: PsiJavaFile) {
145+
@OptIn(KaExperimentalApi::class)
146+
private fun recordLookupForDeclaration(symbol: KaSymbol, file: PsiJavaFile) {
144147
when (symbol) {
145-
is KtJavaFieldSymbol -> recordWithArgs(symbol.returnType, file)
146-
is KtPropertySymbol -> recordWithArgs(symbol.returnType, file)
147-
is KtFunctionLikeSymbol -> {
148+
is KaJavaFieldSymbol -> recordWithArgs(symbol.returnType, file)
149+
is KaPropertySymbol -> recordWithArgs(symbol.returnType, file)
150+
is KaFunctionSymbol -> {
148151
recordWithArgs(symbol.returnType, file)
149152
symbol.valueParameters.forEach { recordWithArgs(it.returnType, file) }
150153
symbol.typeParameters.forEach {
@@ -168,15 +171,15 @@ class IncrementalContextAA(
168171
recordLookupForDeclaration(symbol, file)
169172
}
170173

171-
internal fun recordLookupForGetAll(supers: List<KtType>, predicate: (KtSymbol) -> Boolean) {
172-
val visited: MutableSet<KtType> = mutableSetOf()
174+
internal fun recordLookupForGetAll(supers: List<KaType>, predicate: (KaSymbol) -> Boolean) {
175+
val visited: MutableSet<KaType> = mutableSetOf()
173176
analyze {
174177
supers.forEach {
175178
recordLookupWithSupertypes(it, visited) { type, file ->
176-
if (type is KtNonErrorClassType) {
177-
(type.classSymbol as? KtSymbolWithMembers)?.let {
178-
val declared = it.getDeclaredMemberScope().getAllSymbols() +
179-
it.getStaticDeclaredMemberScope().getAllSymbols()
179+
if (type is KaClassType) {
180+
(type.symbol as? KaDeclarationContainerSymbol)?.let {
181+
val declared = it.declaredMemberScope.declarations +
182+
it.staticDeclaredMemberScope.declarations
180183
declared.forEach {
181184
if (predicate(it))
182185
recordLookupForDeclaration(it, file)
@@ -188,28 +191,29 @@ class IncrementalContextAA(
188191
}
189192
}
190193

191-
private val KtSymbol.psiJavaFile: PsiJavaFile?
194+
private val KaSymbol.psiJavaFile: PsiJavaFile?
192195
get() = psi?.containingFile as? PsiJavaFile
193196

194-
private val KtType.psiJavaFiles: List<PsiJavaFile>
197+
private val KaType.psiJavaFiles: List<PsiJavaFile>
195198
get() {
196199
return when (this) {
197-
is KtNonErrorClassType -> symbol.psiJavaFile?.let { listOf(it) } ?: emptyList()
198-
is KtFlexibleType -> lowerBound.psiJavaFiles + upperBound.psiJavaFiles
199-
is KtIntersectionType -> conjuncts.flatMap { it.psiJavaFiles }
200-
is KtCapturedType -> projection.type?.psiJavaFiles ?: emptyList()
201-
is KtDefinitelyNotNullType -> original.psiJavaFiles
202-
is KtErrorType, is KtDynamicType, is KtTypeParameterType -> emptyList()
200+
is KaClassType -> symbol.psiJavaFile?.let { listOf(it) } ?: emptyList()
201+
is KaFlexibleType -> lowerBound.psiJavaFiles + upperBound.psiJavaFiles
202+
is KaIntersectionType -> conjuncts.flatMap { it.psiJavaFiles }
203+
is KaCapturedType -> projection.type?.psiJavaFiles ?: emptyList()
204+
is KaDefinitelyNotNullType -> original.psiJavaFiles
205+
is KaErrorType, is KaDynamicType, is KaTypeParameterType -> emptyList()
206+
else -> TODO()
203207
}
204208
}
205209

206-
fun recordLookupWithSupertypes(ktType: KtType, visited: MutableSet<KtType>, extra: (KtType, PsiJavaFile) -> Unit) {
210+
fun recordLookupWithSupertypes(ktType: KaType, visited: MutableSet<KaType>, extra: (KaType, PsiJavaFile) -> Unit) {
207211
analyze {
208-
fun record(type: KtType) {
212+
fun record(type: KaType) {
209213
if (type in visited)
210214
return
211215
visited.add(type)
212-
for (superType in type.getDirectSuperTypes()) {
216+
for (superType in type.directSupertypes(false)) {
213217
for (file in type.psiJavaFiles) {
214218
recordWithArgs(superType, file)
215219
}
@@ -224,23 +228,23 @@ class IncrementalContextAA(
224228
}
225229
}
226230

227-
internal fun recordLookup(ktType: KtType, context: KSNode?) =
231+
internal fun recordLookup(ktType: KaType, context: KSNode?) =
228232
ResolverAAImpl.instance.incrementalContext.recordLookup(ktType, context)
229233

230-
internal fun recordLookupWithSupertypes(ktType: KtType, extra: (KtType, PsiJavaFile) -> Unit = { _, _ -> }) =
234+
internal fun recordLookupWithSupertypes(ktType: KaType, extra: (KaType, PsiJavaFile) -> Unit = { _, _ -> }) =
231235
ResolverAAImpl.instance.incrementalContext.recordLookupWithSupertypes(ktType, mutableSetOf(), extra)
232236

233237
internal fun recordLookupForPropertyOrMethod(declaration: KSDeclaration) =
234238
ResolverAAImpl.instance.incrementalContext.recordLookupForPropertyOrMethod(declaration)
235239

236-
internal fun recordLookupForGetAllProperties(supers: List<KtType>) =
240+
internal fun recordLookupForGetAllProperties(supers: List<KaType>) =
237241
ResolverAAImpl.instance.incrementalContext.recordLookupForGetAll(supers) {
238-
it is KtPropertySymbol || it is KtJavaFieldSymbol
242+
it is KaPropertySymbol || it is KaJavaFieldSymbol
239243
}
240244

241-
internal fun recordLookupForGetAllFunctions(supers: List<KtType>) =
245+
internal fun recordLookupForGetAllFunctions(supers: List<KaType>) =
242246
ResolverAAImpl.instance.incrementalContext.recordLookupForGetAll(supers) {
243-
it is KtFunctionLikeSymbol
247+
it is KaFunctionSymbol
244248
}
245249

246250
internal fun recordGetSealedSubclasses(classDeclaration: KSClassDeclaration) {

0 commit comments

Comments
 (0)