[Analysis API] Treat inapplicable declarations safely (KTIJ-23458)

Make 'getClassOrObjectSymbol()' and 'getNamedClassOrObjectSymbol()'
return 'null' for inapplicable PSI declarations.
This commit is contained in:
Yan Zhulanow
2022-11-01 19:23:56 +09:00
committed by teamcity
parent 0a8b9c821c
commit 4d41ac09df
7 changed files with 30 additions and 20 deletions
@@ -69,7 +69,7 @@ internal fun createSymbolLightClassNoCache(classOrObject: KtClassOrObject): KtLi
else -> {
analyzeForLightClasses(classOrObject) {
classOrObject.getClassOrObjectSymbol().createLightClassNoCache(classOrObject.manager)
classOrObject.getClassOrObjectSymbol()?.createLightClassNoCache(classOrObject.manager)
}
}
}
@@ -480,7 +480,7 @@ internal fun KtClassOrObject.checkIsInheritor(superClassOrigin: KtClassOrObject,
return false
}
val superClassSymbol = superClassOrigin.getClassOrObjectSymbol()
val superClassSymbol = superClassOrigin.getClassOrObjectSymbol() ?: return false
when (this) {
is KtEnumEntry -> {
@@ -498,7 +498,7 @@ internal fun KtClassOrObject.checkIsInheritor(superClassOrigin: KtClassOrObject,
else -> {
val subClassSymbol = this.getClassOrObjectSymbol()
if (subClassSymbol == superClassSymbol) return false
if (subClassSymbol == null || subClassSymbol == superClassSymbol) return false
return if (checkDeep) {
subClassSymbol.isSubClassOf(superClassSymbol)