FIR IDE: delegate light classes is valid to corresponding symbol validity check

This commit is contained in:
Ilya Kirillov
2020-12-28 17:42:54 +01:00
parent a95f38569f
commit d3dd6e3b96
19 changed files with 54 additions and 0 deletions
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightField
import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.idea.asJava.FirLightClassForClassOrObjectSymbol import org.jetbrains.kotlin.idea.asJava.FirLightClassForClassOrObjectSymbol
import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtConstructorSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtConstructorSymbol
@@ -62,5 +63,8 @@ internal class FirLightAnnotationClassSymbol(
override fun hashCode(): Int = classOrObjectSymbol.hashCode() override fun hashCode(): Int = classOrObjectSymbol.hashCode()
override fun isValid(): Boolean = super.isValid() && classOrObjectSymbol.isValid()
override fun copy(): FirLightClassForClassOrObjectSymbol = FirLightAnnotationClassSymbol(classOrObjectSymbol, manager) override fun copy(): FirLightClassForClassOrObjectSymbol = FirLightAnnotationClassSymbol(classOrObjectSymbol, manager)
} }
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.idea.asJava.FirLightClassForSymbol
import org.jetbrains.kotlin.idea.asJava.FirLightField import org.jetbrains.kotlin.idea.asJava.FirLightField
import org.jetbrains.kotlin.idea.asJava.hasJvmFieldAnnotation import org.jetbrains.kotlin.idea.asJava.hasJvmFieldAnnotation
import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtAnonymousObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtAnonymousObjectSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySymbol
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
@@ -139,6 +140,8 @@ internal class FirLightAnonymousClassForSymbol(
override fun copy() = override fun copy() =
FirLightAnonymousClassForSymbol(anonymousObjectSymbol, manager) FirLightAnonymousClassForSymbol(anonymousObjectSymbol, manager)
override fun isValid(): Boolean = super.isValid() && anonymousObjectSymbol.isValid()
override fun toString() = override fun toString() =
"${this::class.java.simpleName}:${kotlinOrigin?.getDebugText()}" "${this::class.java.simpleName}:${kotlinOrigin?.getDebugText()}"
} }
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.idea.asJava.FirLightClassModifierList
import org.jetbrains.kotlin.idea.asJava.FirLightPsiJavaCodeReferenceElementWithNoReference import org.jetbrains.kotlin.idea.asJava.FirLightPsiJavaCodeReferenceElementWithNoReference
import org.jetbrains.kotlin.idea.asJava.classes.createMethods import org.jetbrains.kotlin.idea.asJava.classes.createMethods
import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtEnumEntrySymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtEnumEntrySymbol
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -134,4 +135,6 @@ internal class FirLightClassForEnumEntry(
} }
override fun getOwnInnerClasses(): MutableList<PsiClass> = mutableListOf() override fun getOwnInnerClasses(): MutableList<PsiClass> = mutableListOf()
override fun isValid(): Boolean = super.isValid() && enumEntrySymbol.isValid()
} }
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightField
import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.idea.asJava.classes.* import org.jetbrains.kotlin.idea.asJava.classes.*
import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.* import org.jetbrains.kotlin.idea.frontend.api.symbols.*
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolKind
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolVisibility import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolVisibility
@@ -218,4 +219,6 @@ internal class FirLightClassForSymbol(
override fun copy(): FirLightClassForSymbol = override fun copy(): FirLightClassForSymbol =
FirLightClassForSymbol(classOrObjectSymbol, manager) FirLightClassForSymbol(classOrObjectSymbol, manager)
override fun isValid(): Boolean = super.isValid() && classOrObjectSymbol.isValid()
} }
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightField
import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.idea.asJava.FirLightClassForClassOrObjectSymbol import org.jetbrains.kotlin.idea.asJava.FirLightClassForClassOrObjectSymbol
import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol
@@ -66,4 +67,6 @@ internal class FirLightInterfaceClassSymbol(
} }
override fun getExtendsList(): PsiReferenceList? = _extendsList override fun getExtendsList(): PsiReferenceList? = _extendsList
override fun isValid(): Boolean = super.isValid() && classOrObjectSymbol.isValid()
} }
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.asJava.classes
import com.intellij.psi.* import com.intellij.psi.*
import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.idea.asJava.* import org.jetbrains.kotlin.idea.asJava.*
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolKind
@@ -49,4 +50,6 @@ internal abstract class FirLightInterfaceOrAnnotationClassSymbol(
override fun isInterface(): Boolean = true override fun isInterface(): Boolean = true
override fun isEnum(): Boolean = false override fun isEnum(): Boolean = false
override fun isValid(): Boolean = super.isValid() && classOrObjectSymbol.isValid()
} }
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.cannotModify import org.jetbrains.kotlin.asJava.classes.cannotModify
import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightField
import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.psi.KtNamedDeclaration
import javax.swing.Icon import javax.swing.Icon
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.asJava.classes.*
import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.idea.asJava.* import org.jetbrains.kotlin.idea.asJava.*
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtEnumEntrySymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtEnumEntrySymbol
import org.jetbrains.kotlin.idea.util.ifTrue import org.jetbrains.kotlin.idea.util.ifTrue
import org.jetbrains.kotlin.psi.KtEnumEntry import org.jetbrains.kotlin.psi.KtEnumEntry
@@ -79,6 +80,8 @@ internal class FirLightFieldForEnumEntry(
override fun getNameIdentifier(): PsiIdentifier = _identifier override fun getNameIdentifier(): PsiIdentifier = _identifier
override fun isValid(): Boolean = super.isValid() && enumEntrySymbol.isValid()
override fun equals(other: Any?): Boolean = override fun equals(other: Any?): Boolean =
other is FirLightFieldForEnumEntry && other is FirLightFieldForEnumEntry &&
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtDeclaration
@@ -60,4 +61,6 @@ internal class FirLightFieldForObjectSymbol(
objectSymbol == other.objectSymbol) objectSymbol == other.objectSymbol)
override fun hashCode(): Int = kotlinOrigin.hashCode() override fun hashCode(): Int = kotlinOrigin.hashCode()
override fun isValid(): Boolean = super.isValid() && objectSymbol.isValid()
} }
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtKotlinPropertySymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtKotlinPropertySymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSimpleConstantValue import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSimpleConstantValue
@@ -113,4 +114,6 @@ internal class FirLightFieldForPropertySymbol(
propertySymbol == other.propertySymbol) propertySymbol == other.propertySymbol)
override fun hashCode(): Int = kotlinOrigin.hashCode() override fun hashCode(): Int = kotlinOrigin.hashCode()
override fun isValid(): Boolean = super.isValid() && propertySymbol.isValid()
} }
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.idea.asJava.parameters.FirLightSetterParameterForSymbol import org.jetbrains.kotlin.idea.asJava.parameters.FirLightSetterParameterForSymbol
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.* import org.jetbrains.kotlin.idea.frontend.api.symbols.*
import org.jetbrains.kotlin.idea.util.ifTrue import org.jetbrains.kotlin.idea.util.ifTrue
import org.jetbrains.kotlin.load.java.JvmAbi.getterName import org.jetbrains.kotlin.load.java.JvmAbi.getterName
@@ -186,4 +187,6 @@ internal class FirLightAccessorMethodForSymbol(
} }
override fun getParameterList(): PsiParameterList = _parametersList override fun getParameterList(): PsiParameterList = _parametersList
override fun isValid(): Boolean = super.isValid() && propertyAccessorSymbol.isValid()
} }
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.asJava
import com.intellij.psi.* import com.intellij.psi.*
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtConstructorSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtConstructorSymbol
internal class FirLightConstructorForSymbol( internal class FirLightConstructorForSymbol(
@@ -60,4 +61,6 @@ internal class FirLightConstructorForSymbol(
constructorSymbol == other.constructorSymbol) constructorSymbol == other.constructorSymbol)
override fun hashCode(): Int = kotlinOrigin.hashCode() override fun hashCode(): Int = kotlinOrigin.hashCode()
override fun isValid(): Boolean = super.isValid() && constructorSymbol.isValid()
} }
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.asJava.classes.cannotModify
import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtAnnotatedSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtAnnotatedSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolVisibility import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolVisibility
@@ -10,6 +10,7 @@ import com.intellij.psi.impl.light.LightParameterListBuilder
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionLikeSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionLikeSymbol
import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtDeclaration
import java.util.* import java.util.*
@@ -60,4 +61,6 @@ internal abstract class FirLightMethodForSymbol(
override fun getParameterList(): PsiParameterList = _parametersList override fun getParameterList(): PsiParameterList = _parametersList
override val kotlinOrigin: KtDeclaration? = functionSymbol.psi as? KtDeclaration override val kotlinOrigin: KtDeclaration? = functionSymbol.psi as? KtDeclaration
override fun isValid(): Boolean = super.isValid() && functionSymbol.isValid()
} }
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.idea.asJava.elements.FirLightTypeParameterListForSymbol import org.jetbrains.kotlin.idea.asJava.elements.FirLightTypeParameterListForSymbol
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol
import org.jetbrains.kotlin.idea.frontend.api.types.isUnit import org.jetbrains.kotlin.idea.frontend.api.types.isUnit
import org.jetbrains.kotlin.idea.util.ifTrue import org.jetbrains.kotlin.idea.util.ifTrue
@@ -137,4 +138,6 @@ internal class FirLightSimpleMethodForSymbol(
this === other || (other is FirLightSimpleMethodForSymbol && functionSymbol == other.functionSymbol) this === other || (other is FirLightSimpleMethodForSymbol && functionSymbol == other.functionSymbol)
override fun hashCode(): Int = functionSymbol.hashCode() override fun hashCode(): Int = functionSymbol.hashCode()
override fun isValid(): Boolean = super.isValid() && functionSymbol.isValid()
} }
@@ -12,6 +12,7 @@ import com.intellij.psi.PsiType
import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.codegen.AsmUtil import org.jetbrains.kotlin.codegen.AsmUtil
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypeAndAnnotations import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypeAndAnnotations
@@ -83,6 +84,8 @@ internal class FirLightParameterForReceiver private constructor(
receiverTypeAndAnnotations == other.receiverTypeAndAnnotations) receiverTypeAndAnnotations == other.receiverTypeAndAnnotations)
override fun hashCode(): Int = kotlinOrigin.hashCode() override fun hashCode(): Int = kotlinOrigin.hashCode()
override fun isValid(): Boolean = super.isValid() && context.isValid()
} }
@@ -9,6 +9,7 @@ import com.intellij.psi.PsiAnnotation
import com.intellij.psi.PsiModifierList import com.intellij.psi.PsiModifierList
import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtConstructorParameterSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtConstructorParameterSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtParameterSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtParameterSymbol
import org.jetbrains.kotlin.idea.util.ifTrue import org.jetbrains.kotlin.idea.util.ifTrue
@@ -46,4 +47,6 @@ internal class FirLightParameterForSymbol(
(other is FirLightParameterForSymbol && parameterSymbol == other.parameterSymbol) (other is FirLightParameterForSymbol && parameterSymbol == other.parameterSymbol)
override fun hashCode(): Int = kotlinOrigin.hashCode() override fun hashCode(): Int = kotlinOrigin.hashCode()
override fun isValid(): Boolean = super.isValid() && parameterSymbol.isValid()
} }
@@ -10,6 +10,7 @@ import com.intellij.psi.PsiModifierList
import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.idea.asJava.* import org.jetbrains.kotlin.idea.asJava.*
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtParameterSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtParameterSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySymbol
@@ -48,4 +49,6 @@ internal class FirLightSetterParameterForSymbol(
(other is FirLightSetterParameterForSymbol && parameterSymbol == other.parameterSymbol) (other is FirLightSetterParameterForSymbol && parameterSymbol == other.parameterSymbol)
override fun hashCode(): Int = kotlinOrigin.hashCode() override fun hashCode(): Int = kotlinOrigin.hashCode()
override fun isValid(): Boolean = super.isValid() && parameterSymbol.isValid()
} }
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.idea.asJava.basicIsEquivalentTo import org.jetbrains.kotlin.idea.asJava.basicIsEquivalentTo
import org.jetbrains.kotlin.idea.asJava.invalidAccess import org.jetbrains.kotlin.idea.asJava.invalidAccess
import org.jetbrains.kotlin.idea.asJava.mapSupertype import org.jetbrains.kotlin.idea.asJava.mapSupertype
import org.jetbrains.kotlin.idea.frontend.api.isValid
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtTypeParameterSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtTypeParameterSymbol
import org.jetbrains.kotlin.idea.frontend.api.types.KtClassType import org.jetbrains.kotlin.idea.frontend.api.types.KtClassType
import org.jetbrains.kotlin.psi.KtTypeParameter import org.jetbrains.kotlin.psi.KtTypeParameter
@@ -162,4 +163,6 @@ internal class FirLightTypeParameter(
override fun getContainingFile(): PsiFile = parent.containingFile override fun getContainingFile(): PsiFile = parent.containingFile
override fun getTextOffset(): Int = kotlinOrigin?.startOffset ?: super.getTextOffset() override fun getTextOffset(): Int = kotlinOrigin?.startOffset ?: super.getTextOffset()
override fun getStartOffsetInParent(): Int = kotlinOrigin?.startOffsetInParent ?: super.getStartOffsetInParent() override fun getStartOffsetInParent(): Int = kotlinOrigin?.startOffsetInParent ?: super.getStartOffsetInParent()
override fun isValid(): Boolean = super.isValid() && typeParameterSymbol.isValid()
} }