[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 }
|
||||
|
||||
override val origin: KtSymbolOrigin
|
||||
get() = withValidityAssertion { KtSymbolOrigin.SAM_CONSTRUCTOR }
|
||||
get() = withValidityAssertion { descriptor.getSymbolOrigin(analysisContext) }
|
||||
|
||||
override fun createPointer(): KtSymbolPointer<KtSamConstructorSymbol> = withValidityAssertion {
|
||||
val pointerByPsi = KtPsiBasedSymbolPointer.createForSymbolFromSource(this)
|
||||
|
||||
-3
@@ -89,9 +89,6 @@ internal class KtFe10DescSyntheticJavaPropertySymbol(
|
||||
override val dispatchType: KtType?
|
||||
get() = withValidityAssertion { descriptor.dispatchReceiverParameter?.type?.toKtType(analysisContext) }
|
||||
|
||||
override val origin: KtSymbolOrigin
|
||||
get() = withValidityAssertion { KtSymbolOrigin.JAVA_SYNTHETIC_PROPERTY }
|
||||
|
||||
override fun createPointer(): KtSymbolPointer<KtSyntheticJavaPropertySymbol> = withValidityAssertion {
|
||||
return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer()
|
||||
}
|
||||
|
||||
-3
@@ -89,9 +89,6 @@ internal class KtFe10DescSyntheticJavaPropertySymbolForOverride(
|
||||
override val dispatchType: KtType?
|
||||
get() = withValidityAssertion { descriptor.dispatchReceiverParameter?.type?.toKtType(analysisContext) }
|
||||
|
||||
override val origin: KtSymbolOrigin
|
||||
get() = withValidityAssertion { KtSymbolOrigin.JAVA_SYNTHETIC_PROPERTY }
|
||||
|
||||
override fun createPointer(): KtSymbolPointer<KtSyntheticJavaPropertySymbol> = withValidityAssertion {
|
||||
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.builtins.functions.FunctionClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.*
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
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.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.ClassId
|
||||
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.builtIns
|
||||
import org.jetbrains.kotlin.resolve.sam.SamConstructorDescriptor
|
||||
import org.jetbrains.kotlin.resolve.source.getPsi
|
||||
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
|
||||
import org.jetbrains.kotlin.types.*
|
||||
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
|
||||
get() = when {
|
||||
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.SourceElement
|
||||
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
|
||||
|
||||
internal interface KtFe10DescSymbol<T : DeclarationDescriptor> : KtFe10Symbol, KtFe10AnnotatedSymbol {
|
||||
@@ -42,21 +40,5 @@ internal interface KtFe10DescSymbol<T : DeclarationDescriptor> : KtFe10Symbol, K
|
||||
get() = withValidityAssertion { (source as? PsiSourceElement)?.psi }
|
||||
|
||||
override val origin: KtSymbolOrigin
|
||||
get() = withValidityAssertion {
|
||||
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
|
||||
}
|
||||
}
|
||||
get() = withValidityAssertion { descriptor.getSymbolOrigin(analysisContext) }
|
||||
}
|
||||
+1
-7
@@ -21,11 +21,5 @@ internal interface KtFe10PsiSymbol<P : KtElement, D : DeclarationDescriptor> : K
|
||||
get() = descriptor?.annotations ?: Annotations.EMPTY
|
||||
|
||||
override val origin: KtSymbolOrigin
|
||||
get() = withValidityAssertion {
|
||||
return if (psi.containingKtFile.isCompiled) {
|
||||
KtSymbolOrigin.LIBRARY
|
||||
} else {
|
||||
KtSymbolOrigin.SOURCE
|
||||
}
|
||||
}
|
||||
get() = withValidityAssertion { psi.ktSymbolOrigin }
|
||||
}
|
||||
+10
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base
|
||||
import com.intellij.psi.PsiElement
|
||||
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.symbols.KtSymbolOrigin
|
||||
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.KtTypeAndAnnotations
|
||||
@@ -71,6 +72,15 @@ internal val KtElement.ktSymbolKind: KtSymbolKind
|
||||
internal val KtDeclaration.callableIdIfNonLocal: CallableId?
|
||||
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? {
|
||||
val selfName = this.name ?: return null
|
||||
val containingFile = this.containingKtFile
|
||||
|
||||
Reference in New Issue
Block a user