AA: make KtCallableSymbol a subtype of KtAnnotatedSymbol

This commit is contained in:
Jiaxiang Chen
2022-05-16 15:23:37 -07:00
committed by teamcity
parent e1f5dc483c
commit 866ebcfe2e
22 changed files with 77 additions and 3 deletions
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10AnnotatedSymbol
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10Symbol
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10DescSyntheticFieldSymbolPointer
@@ -18,6 +19,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointe
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor
import org.jetbrains.kotlin.load.kotlin.toSourceElement
@@ -28,13 +30,16 @@ import org.jetbrains.kotlin.resolve.source.getPsi
internal class KtFe10DescSyntheticFieldSymbol(
val descriptor: SyntheticFieldDescriptor,
override val analysisContext: Fe10AnalysisContext
) : KtBackingFieldSymbol(), KtFe10Symbol {
) : KtBackingFieldSymbol(), KtFe10Symbol, KtFe10AnnotatedSymbol {
override val owningProperty: KtKotlinPropertySymbol
get() = withValidityAssertion {
val kotlinProperty = descriptor.propertyDescriptor as PropertyDescriptorImpl
KtFe10DescKotlinPropertySymbol(kotlinProperty, analysisContext)
}
override val annotationsObject: Annotations
get() = descriptor.annotations
override val returnType: KtType
get() = withValidityAssertion { descriptor.propertyDescriptor.type.toKtType(analysisContext) }
@@ -6,7 +6,9 @@
package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.symbols.KtAnonymousFunctionSymbol
@@ -30,6 +32,11 @@ internal class KtFirAnonymousFunctionSymbol(
override val psi: PsiElement? by cached { firSymbol.fir.findPsi(firSymbol.fir.moduleData.session) }
override val annotationsList: KtAnnotationsList
get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token)
}
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
override val receiverType: KtType? get() = withValidityAssertion { firSymbol.receiverType(builder) }
@@ -5,7 +5,9 @@
package org.jetbrains.kotlin.analysis.api.fir.symbols
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirBackingFieldSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.KtBackingFieldSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol
@@ -25,6 +27,11 @@ internal class KtFirBackingFieldSymbol(
) : KtBackingFieldSymbol(), KtFirSymbol<FirBackingFieldSymbol> {
override val origin: KtSymbolOrigin get() = withValidityAssertion { super<KtBackingFieldSymbol>.origin }
override val annotationsList: KtAnnotationsList
get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token)
}
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
override val owningProperty: KtKotlinPropertySymbol
@@ -6,7 +6,9 @@
package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirEnumEntrySymbolPointer
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
@@ -31,6 +33,11 @@ internal class KtFirEnumEntrySymbol(
) : KtEnumEntrySymbol(), KtFirSymbol<FirEnumEntrySymbol> {
override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val annotationsList: KtAnnotationsList
get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token)
}
override val name: Name get() = withValidityAssertion { firSymbol.name }
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
override val containingEnumClassIdIfNonLocal: ClassId? get() = callableIdIfNonLocal?.classId
@@ -6,7 +6,9 @@
package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirJavaFieldSymbolPointer
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
@@ -34,6 +36,11 @@ internal class KtFirJavaFieldSymbol(
) : KtJavaFieldSymbol(), KtFirSymbol<FirFieldSymbol> {
override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val annotationsList: KtAnnotationsList
get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token)
}
override val isVal: Boolean get() = withValidityAssertion { firSymbol.fir.isVal }
override val name: Name get() = withValidityAssertion { firSymbol.name }
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
@@ -6,7 +6,9 @@
package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.symbols.KtLocalVariableSymbol
@@ -34,6 +36,11 @@ internal class KtFirLocalVariableSymbol(
override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val annotationsList: KtAnnotationsList
get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token)
}
override val isVal: Boolean get() = withValidityAssertion { firSymbol.isVal }
override val name: Name get() = withValidityAssertion { firSymbol.name }
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
@@ -6,7 +6,9 @@
package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirSamConstructorSymbolPointer
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
@@ -31,6 +33,12 @@ internal class KtFirSamConstructorSymbol(
private val builder: KtSymbolByFirBuilder
) : KtSamConstructorSymbol(), KtFirSymbol<FirNamedFunctionSymbol> {
override val psi: PsiElement? by cached { firSymbol.findPsi() }
override val annotationsList: KtAnnotationsList
get() = withValidityAssertion {
KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token)
}
override val name: Name get() = withValidityAssertion { firSymbol.name }
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
@@ -5,13 +5,14 @@
package org.jetbrains.kotlin.analysis.api.symbols
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotatedSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtPossibleMemberSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithKind
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.name.CallableId
public abstract class KtCallableSymbol : KtSymbol, KtSymbolWithKind, KtPossibleMemberSymbol, KtDeclarationSymbol {
public abstract class KtCallableSymbol : KtSymbol, KtSymbolWithKind, KtAnnotatedSymbol, KtPossibleMemberSymbol, KtDeclarationSymbol {
public abstract val callableIdIfNonLocal: CallableId?
public abstract val returnType: KtType
@@ -1,4 +1,5 @@
KtJavaFieldSymbol:
annotationsList: []
callableIdIfNonLocal: java/lang/String.value
isExtension: false
isStatic: false
@@ -15,6 +16,7 @@ KtJavaFieldSymbol:
deprecationStatus: null
KtJavaFieldSymbol:
annotationsList: []
callableIdIfNonLocal: java/lang/String.hash
isExtension: false
isStatic: false
@@ -57,6 +59,7 @@ KtFunctionSymbol:
deprecationStatus: null
KtJavaFieldSymbol:
annotationsList: []
callableIdIfNonLocal: java/lang/String.hash32
isExtension: false
isStatic: false
@@ -1,4 +1,5 @@
KtEnumEntrySymbol:
annotationsList: []
callableIdIfNonLocal: kotlin/LazyThreadSafetyMode.SYNCHRONIZED
containingEnumClassIdIfNonLocal: kotlin/LazyThreadSafetyMode
isExtension: false
@@ -1,4 +1,5 @@
KtEnumEntrySymbol:
annotationsList: []
callableIdIfNonLocal: kotlin/LazyThreadSafetyMode.SYNCHRONIZED
containingEnumClassIdIfNonLocal: kotlin/LazyThreadSafetyMode
isExtension: false
@@ -87,6 +87,7 @@ KtNamedClassOrObjectSymbol:
deprecationStatus: null
KtAnonymousFunctionSymbol:
annotationsList: []
callableIdIfNonLocal: null
hasStableParameterNames: true
isExtension: false
@@ -132,6 +133,7 @@ KtKotlinPropertySymbol:
setterDeprecationStatus: null
KtAnonymousFunctionSymbol:
annotationsList: []
callableIdIfNonLocal: null
hasStableParameterNames: true
isExtension: false
@@ -229,4 +231,4 @@ KtNamedClassOrObjectSymbol:
typeParameters: []
visibility: Public
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
deprecationStatus: null
@@ -1,4 +1,5 @@
KtEnumEntrySymbol:
annotationsList: []
callableIdIfNonLocal: /X.Y
containingEnumClassIdIfNonLocal: X
isExtension: false
@@ -11,6 +12,7 @@ KtEnumEntrySymbol:
deprecationStatus: null
KtEnumEntrySymbol:
annotationsList: []
callableIdIfNonLocal: /X.Z
containingEnumClassIdIfNonLocal: X
isExtension: false
@@ -86,6 +86,7 @@ KtKotlinPropertySymbol:
setterDeprecationStatus: null
KtEnumEntrySymbol:
annotationsList: []
callableIdIfNonLocal: /Style.SHEET
containingEnumClassIdIfNonLocal: Style
isExtension: false
@@ -85,6 +85,7 @@ KtKotlinPropertySymbol:
setterDeprecationStatus: null
KtEnumEntrySymbol:
annotationsList: []
callableIdIfNonLocal: /Style.SHEET
containingEnumClassIdIfNonLocal: Style
isExtension: false
@@ -1,4 +1,5 @@
KtLocalVariableSymbol:
annotationsList: []
callableIdIfNonLocal: null
isExtension: false
isVal: true
@@ -14,6 +14,7 @@ KtValueParameterSymbol:
deprecationStatus: null
KtLocalVariableSymbol:
annotationsList: []
callableIdIfNonLocal: null
isExtension: false
isVal: true
@@ -26,6 +27,7 @@ KtLocalVariableSymbol:
deprecationStatus: null
KtAnonymousFunctionSymbol:
annotationsList: []
callableIdIfNonLocal: null
hasStableParameterNames: true
isExtension: false
@@ -40,6 +42,7 @@ KtAnonymousFunctionSymbol:
deprecationStatus: null
KtLocalVariableSymbol:
annotationsList: []
callableIdIfNonLocal: null
isExtension: false
isVal: true
@@ -67,6 +70,7 @@ KtValueParameterSymbol:
deprecationStatus: null
KtLocalVariableSymbol:
annotationsList: []
callableIdIfNonLocal: null
isExtension: false
isVal: true
@@ -79,6 +83,7 @@ KtLocalVariableSymbol:
deprecationStatus: null
KtAnonymousFunctionSymbol:
annotationsList: []
callableIdIfNonLocal: null
hasStableParameterNames: true
isExtension: false
@@ -93,6 +98,7 @@ KtAnonymousFunctionSymbol:
deprecationStatus: null
KtLocalVariableSymbol:
annotationsList: []
callableIdIfNonLocal: null
isExtension: false
isVal: true
@@ -105,6 +111,7 @@ KtLocalVariableSymbol:
deprecationStatus: null
KtLocalVariableSymbol:
annotationsList: []
callableIdIfNonLocal: null
isExtension: false
isVal: true
@@ -117,6 +124,7 @@ KtLocalVariableSymbol:
deprecationStatus: null
KtAnonymousFunctionSymbol:
annotationsList: []
callableIdIfNonLocal: null
hasStableParameterNames: true
isExtension: false
@@ -1,4 +1,5 @@
KtLocalVariableSymbol:
annotationsList: []
callableIdIfNonLocal: null
isExtension: false
isVal: true
@@ -1,4 +1,5 @@
KtBackingFieldSymbol:
annotationsList: []
callableIdIfNonLocal: null
isExtension: false
name: field
@@ -1,4 +1,5 @@
KtBackingFieldSymbol:
annotationsList: []
callableIdIfNonLocal: null
isExtension: false
name: field
@@ -1,4 +1,5 @@
KtSamConstructorSymbol:
annotationsList: []
callableIdIfNonLocal: java/lang/Runnable
hasStableParameterNames: true
isExtension: false
@@ -1,4 +1,5 @@
KtSamConstructorSymbol:
annotationsList: []
callableIdIfNonLocal: java/lang/Runnable
hasStableParameterNames: true
isExtension: false