[FIR IDE] Unify origin logic in AAPI/FE10
This commit is contained in:
+1
-1
@@ -48,7 +48,7 @@ internal class KtFe10DescSamConstructorSymbol(
|
|||||||
get() = withValidityAssertion { descriptor.isExtension }
|
get() = withValidityAssertion { descriptor.isExtension }
|
||||||
|
|
||||||
override val origin: KtSymbolOrigin
|
override val origin: KtSymbolOrigin
|
||||||
get() = withValidityAssertion { KtSymbolOrigin.SAM_CONSTRUCTOR }
|
get() = withValidityAssertion { descriptor.getSymbolOrigin(analysisContext) }
|
||||||
|
|
||||||
override fun createPointer(): KtSymbolPointer<KtSamConstructorSymbol> = withValidityAssertion {
|
override fun createPointer(): KtSymbolPointer<KtSamConstructorSymbol> = withValidityAssertion {
|
||||||
val pointerByPsi = KtPsiBasedSymbolPointer.createForSymbolFromSource(this)
|
val pointerByPsi = KtPsiBasedSymbolPointer.createForSymbolFromSource(this)
|
||||||
|
|||||||
-3
@@ -89,9 +89,6 @@ internal class KtFe10DescSyntheticJavaPropertySymbol(
|
|||||||
override val dispatchType: KtType?
|
override val dispatchType: KtType?
|
||||||
get() = withValidityAssertion { descriptor.dispatchReceiverParameter?.type?.toKtType(analysisContext) }
|
get() = withValidityAssertion { descriptor.dispatchReceiverParameter?.type?.toKtType(analysisContext) }
|
||||||
|
|
||||||
override val origin: KtSymbolOrigin
|
|
||||||
get() = withValidityAssertion { KtSymbolOrigin.JAVA_SYNTHETIC_PROPERTY }
|
|
||||||
|
|
||||||
override fun createPointer(): KtSymbolPointer<KtSyntheticJavaPropertySymbol> = withValidityAssertion {
|
override fun createPointer(): KtSymbolPointer<KtSyntheticJavaPropertySymbol> = withValidityAssertion {
|
||||||
return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer()
|
return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer()
|
||||||
}
|
}
|
||||||
|
|||||||
-3
@@ -89,9 +89,6 @@ internal class KtFe10DescSyntheticJavaPropertySymbolForOverride(
|
|||||||
override val dispatchType: KtType?
|
override val dispatchType: KtType?
|
||||||
get() = withValidityAssertion { descriptor.dispatchReceiverParameter?.type?.toKtType(analysisContext) }
|
get() = withValidityAssertion { descriptor.dispatchReceiverParameter?.type?.toKtType(analysisContext) }
|
||||||
|
|
||||||
override val origin: KtSymbolOrigin
|
|
||||||
get() = withValidityAssertion { KtSymbolOrigin.JAVA_SYNTHETIC_PROPERTY }
|
|
||||||
|
|
||||||
override fun createPointer(): KtSymbolPointer<KtSyntheticJavaPropertySymbol> = withValidityAssertion {
|
override fun createPointer(): KtSymbolPointer<KtSyntheticJavaPropertySymbol> = withValidityAssertion {
|
||||||
return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer()
|
return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer()
|
||||||
}
|
}
|
||||||
|
|||||||
+39
-4
@@ -22,13 +22,14 @@ import org.jetbrains.kotlin.analysis.api.types.KtType
|
|||||||
import org.jetbrains.kotlin.analysis.api.types.KtTypeNullability
|
import org.jetbrains.kotlin.analysis.api.types.KtTypeNullability
|
||||||
import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
|
import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
|
import org.jetbrains.kotlin.descriptors.impl.*
|
||||||
import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl
|
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||||
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
|
|
||||||
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
|
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
|
||||||
|
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
|
||||||
import org.jetbrains.kotlin.load.java.descriptors.JavaForKotlinOverridePropertyDescriptor
|
import org.jetbrains.kotlin.load.java.descriptors.JavaForKotlinOverridePropertyDescriptor
|
||||||
import org.jetbrains.kotlin.load.java.descriptors.JavaPropertyDescriptor
|
import org.jetbrains.kotlin.load.java.descriptors.JavaPropertyDescriptor
|
||||||
|
import org.jetbrains.kotlin.load.java.sources.JavaSourceElement
|
||||||
|
import org.jetbrains.kotlin.load.kotlin.toSourceElement
|
||||||
import org.jetbrains.kotlin.name.CallableId
|
import org.jetbrains.kotlin.name.CallableId
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
@@ -38,6 +39,7 @@ import org.jetbrains.kotlin.resolve.constants.*
|
|||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||||
import org.jetbrains.kotlin.resolve.sam.SamConstructorDescriptor
|
import org.jetbrains.kotlin.resolve.sam.SamConstructorDescriptor
|
||||||
|
import org.jetbrains.kotlin.resolve.source.getPsi
|
||||||
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
|
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
|
||||||
import org.jetbrains.kotlin.types.*
|
import org.jetbrains.kotlin.types.*
|
||||||
import org.jetbrains.kotlin.types.checker.NewCapturedType
|
import org.jetbrains.kotlin.types.checker.NewCapturedType
|
||||||
@@ -188,6 +190,39 @@ internal fun TypeProjection.toKtTypeArgument(analysisContext: Fe10AnalysisContex
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal fun DeclarationDescriptor.getSymbolOrigin(analysisContext: Fe10AnalysisContext): KtSymbolOrigin {
|
||||||
|
when (this) {
|
||||||
|
is SyntheticJavaPropertyDescriptor -> return KtSymbolOrigin.JAVA_SYNTHETIC_PROPERTY
|
||||||
|
is SyntheticFieldDescriptor -> return KtSymbolOrigin.PROPERTY_BACKING_FIELD
|
||||||
|
is SamConstructorDescriptor -> return KtSymbolOrigin.SAM_CONSTRUCTOR
|
||||||
|
is JavaClassDescriptor, is JavaCallableMemberDescriptor -> return KtSymbolOrigin.JAVA
|
||||||
|
is DeserializedDescriptor -> return KtSymbolOrigin.LIBRARY
|
||||||
|
is EnumEntrySyntheticClassDescriptor -> return containingDeclaration.getSymbolOrigin(analysisContext)
|
||||||
|
is CallableMemberDescriptor -> when (kind) {
|
||||||
|
CallableMemberDescriptor.Kind.DELEGATION -> return KtSymbolOrigin.DELEGATED
|
||||||
|
CallableMemberDescriptor.Kind.SYNTHESIZED -> return KtSymbolOrigin.SOURCE_MEMBER_GENERATED
|
||||||
|
else -> {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val sourceElement = this.toSourceElement
|
||||||
|
if (sourceElement is JavaSourceElement) {
|
||||||
|
return KtSymbolOrigin.JAVA
|
||||||
|
}
|
||||||
|
|
||||||
|
val psi = sourceElement.getPsi()
|
||||||
|
if (psi != null) {
|
||||||
|
if (psi.language != KotlinLanguage.INSTANCE) {
|
||||||
|
return KtSymbolOrigin.JAVA
|
||||||
|
}
|
||||||
|
|
||||||
|
val virtualFile = psi.containingFile.virtualFile
|
||||||
|
return analysisContext.getOrigin(virtualFile)
|
||||||
|
}
|
||||||
|
|
||||||
|
return KtSymbolOrigin.SOURCE
|
||||||
|
}
|
||||||
|
|
||||||
internal val KotlinType.ktNullability: KtTypeNullability
|
internal val KotlinType.ktNullability: KtTypeNullability
|
||||||
get() = when {
|
get() = when {
|
||||||
this.isNullabilityFlexible() -> KtTypeNullability.UNKNOWN
|
this.isNullabilityFlexible() -> KtTypeNullability.UNKNOWN
|
||||||
|
|||||||
+1
-19
@@ -15,8 +15,6 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource
|
||||||
import org.jetbrains.kotlin.descriptors.SourceElement
|
import org.jetbrains.kotlin.descriptors.SourceElement
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.load.java.sources.JavaSourceElement
|
|
||||||
import org.jetbrains.kotlin.resolve.source.KotlinSourceElement
|
|
||||||
import org.jetbrains.kotlin.resolve.source.PsiSourceElement
|
import org.jetbrains.kotlin.resolve.source.PsiSourceElement
|
||||||
|
|
||||||
internal interface KtFe10DescSymbol<T : DeclarationDescriptor> : KtFe10Symbol, KtFe10AnnotatedSymbol {
|
internal interface KtFe10DescSymbol<T : DeclarationDescriptor> : KtFe10Symbol, KtFe10AnnotatedSymbol {
|
||||||
@@ -42,21 +40,5 @@ internal interface KtFe10DescSymbol<T : DeclarationDescriptor> : KtFe10Symbol, K
|
|||||||
get() = withValidityAssertion { (source as? PsiSourceElement)?.psi }
|
get() = withValidityAssertion { (source as? PsiSourceElement)?.psi }
|
||||||
|
|
||||||
override val origin: KtSymbolOrigin
|
override val origin: KtSymbolOrigin
|
||||||
get() = withValidityAssertion {
|
get() = withValidityAssertion { descriptor.getSymbolOrigin(analysisContext) }
|
||||||
val descriptor = this.descriptor
|
|
||||||
if (descriptor is CallableMemberDescriptor) {
|
|
||||||
// TODO: Add SUBSTITUTION_OVERRIDE when supported in HL API
|
|
||||||
when (descriptor.kind) {
|
|
||||||
CallableMemberDescriptor.Kind.FAKE_OVERRIDE -> return KtSymbolOrigin.INTERSECTION_OVERRIDE
|
|
||||||
CallableMemberDescriptor.Kind.SYNTHESIZED -> return KtSymbolOrigin.SOURCE_MEMBER_GENERATED
|
|
||||||
else -> {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
when (source) {
|
|
||||||
is KotlinSourceElement -> KtSymbolOrigin.SOURCE
|
|
||||||
is JavaSourceElement -> KtSymbolOrigin.JAVA
|
|
||||||
else -> KtSymbolOrigin.LIBRARY
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+1
-7
@@ -21,11 +21,5 @@ internal interface KtFe10PsiSymbol<P : KtElement, D : DeclarationDescriptor> : K
|
|||||||
get() = descriptor?.annotations ?: Annotations.EMPTY
|
get() = descriptor?.annotations ?: Annotations.EMPTY
|
||||||
|
|
||||||
override val origin: KtSymbolOrigin
|
override val origin: KtSymbolOrigin
|
||||||
get() = withValidityAssertion {
|
get() = withValidityAssertion { psi.ktSymbolOrigin }
|
||||||
return if (psi.containingKtFile.isCompiled) {
|
|
||||||
KtSymbolOrigin.LIBRARY
|
|
||||||
} else {
|
|
||||||
KtSymbolOrigin.SOURCE
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+10
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10Symbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10Symbol
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.types.KtFe10ClassErrorType
|
import org.jetbrains.kotlin.analysis.api.descriptors.types.KtFe10ClassErrorType
|
||||||
|
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotationCall
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotationCall
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtTypeAndAnnotations
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtTypeAndAnnotations
|
||||||
@@ -71,6 +72,15 @@ internal val KtElement.ktSymbolKind: KtSymbolKind
|
|||||||
internal val KtDeclaration.callableIdIfNonLocal: CallableId?
|
internal val KtDeclaration.callableIdIfNonLocal: CallableId?
|
||||||
get() = calculateCallableId(allowLocal = false)
|
get() = calculateCallableId(allowLocal = false)
|
||||||
|
|
||||||
|
internal val KtElement.ktSymbolOrigin: KtSymbolOrigin
|
||||||
|
get() {
|
||||||
|
return if (containingKtFile.isCompiled) {
|
||||||
|
KtSymbolOrigin.LIBRARY
|
||||||
|
} else {
|
||||||
|
KtSymbolOrigin.SOURCE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal fun KtDeclaration.calculateCallableId(allowLocal: Boolean): CallableId? {
|
internal fun KtDeclaration.calculateCallableId(allowLocal: Boolean): CallableId? {
|
||||||
val selfName = this.name ?: return null
|
val selfName = this.name ?: return null
|
||||||
val containingFile = this.containingKtFile
|
val containingFile = this.containingKtFile
|
||||||
|
|||||||
Reference in New Issue
Block a user