[PSI] Don't calculate ClassIds for local classes in call elements
- The fix uses relevant logic from `getNonLocalContainingDeclaration`. - The annotation entry case is covered by `KtCallElement` because `KtAnnotationEntry` is a subtype of it. - KT-66038 is fixed by this because the static declaration provider only indexes non-local classes. ^KT-66038 fixed
This commit is contained in:
committed by
Space Team
parent
d52860b835
commit
ea2bb32bc0
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
/* ClassId: /Bar */@Retention(if (true) { /* ClassId: /Bar.Foo */class Foo })
|
/* ClassId: /Bar */@Retention(if (true) { /* ClassId: null */class Foo })
|
||||||
class Bar
|
class Bar
|
||||||
|
|||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
// KT-24323
|
// KT-24323
|
||||||
@Retention(AnnotationRetention.RUNTIME
|
@Retention(AnnotationRetention.RUNTIME
|
||||||
annotation /* ClassId: /Validation */class Validation()
|
annotation /* ClassId: null */class Validation()
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.psi.psiUtil
|
package org.jetbrains.kotlin.psi.psiUtil
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiErrorElement
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.SpecialNames
|
import org.jetbrains.kotlin.name.SpecialNames
|
||||||
@@ -17,7 +18,12 @@ internal object ClassIdCalculator {
|
|||||||
|
|
||||||
for (element in declaration.parentsWithSelf) {
|
for (element in declaration.parentsWithSelf) {
|
||||||
when (element) {
|
when (element) {
|
||||||
is KtEnumEntry -> {
|
is KtEnumEntry,
|
||||||
|
is KtCallElement,
|
||||||
|
is KtObjectLiteralExpression,
|
||||||
|
is KtCodeFragment,
|
||||||
|
is PsiErrorElement,
|
||||||
|
-> {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
is KtClassLikeDeclaration -> {
|
is KtClassLikeDeclaration -> {
|
||||||
@@ -30,7 +36,7 @@ internal object ClassIdCalculator {
|
|||||||
is KtScript -> {
|
is KtScript -> {
|
||||||
// Skip script parent
|
// Skip script parent
|
||||||
}
|
}
|
||||||
is KtDeclaration, is KtObjectLiteralExpression -> {
|
is KtDeclaration -> {
|
||||||
// Local declarations don't have a 'ClassId'
|
// Local declarations don't have a 'ClassId'
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user