[FIR IDE] Fix callableIdIfNonLocal for accessors in AAPI/FE10
Before the behavior was rather random and erroneous. Now the callable id is also 'null' for Kotlin property accessors, and accessor method id for synthetic Java properties.
This commit is contained in:
+1
-1
@@ -56,7 +56,7 @@ class KtFe10DescDefaultPropertyGetterSymbol(
|
||||
get() = withValidityAssertion { true }
|
||||
|
||||
override val callableIdIfNonLocal: CallableId?
|
||||
get() = withValidityAssertion { null }
|
||||
get() = withValidityAssertion { propertyDescriptor.getterCallableIdIfNotLocal }
|
||||
|
||||
override val annotatedType: KtTypeAndAnnotations
|
||||
get() = withValidityAssertion { propertyDescriptor.type.toKtTypeAndAnnotations(analysisContext) }
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@ class KtFe10DescDefaultPropertySetterSymbol(
|
||||
get() = withValidityAssertion { true }
|
||||
|
||||
override val callableIdIfNonLocal: CallableId?
|
||||
get() = withValidityAssertion { null }
|
||||
get() = withValidityAssertion { propertyDescriptor.setterCallableIdIfNotLocal }
|
||||
|
||||
override val annotatedType: KtTypeAndAnnotations
|
||||
get() = withValidityAssertion { analysisContext.builtIns.unitType.toKtTypeAndAnnotations(analysisContext) }
|
||||
|
||||
+1
-9
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.descriptors.PropertyGetterDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.SyntheticPropertyDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.hasBody
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.resolve.calls.inference.returnTypeOrNothing
|
||||
@@ -44,14 +43,7 @@ internal class KtFe10DescPropertyGetterSymbol(
|
||||
get() = withValidityAssertion { descriptor.ktHasStableParameterNames }
|
||||
|
||||
override val callableIdIfNonLocal: CallableId?
|
||||
get() = withValidityAssertion {
|
||||
val propertyDescriptor = descriptor.correspondingProperty
|
||||
return if (propertyDescriptor is SyntheticPropertyDescriptor) {
|
||||
propertyDescriptor.getMethod.callableIdIfNotLocal
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
get() = withValidityAssertion { descriptor.correspondingProperty.getterCallableIdIfNotLocal }
|
||||
|
||||
override val annotatedType: KtTypeAndAnnotations
|
||||
get() = withValidityAssertion { descriptor.returnTypeOrNothing.toKtTypeAndAnnotations(analysisContext) }
|
||||
|
||||
+1
-9
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||
import org.jetbrains.kotlin.descriptors.PropertySetterDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.SyntheticPropertyDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.hasBody
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
|
||||
@@ -46,14 +45,7 @@ internal class KtFe10DescPropertySetterSymbol(
|
||||
get() = withValidityAssertion { descriptor.ktHasStableParameterNames }
|
||||
|
||||
override val callableIdIfNonLocal: CallableId?
|
||||
get() = withValidityAssertion {
|
||||
val propertyDescriptor = descriptor.correspondingProperty
|
||||
return if (propertyDescriptor is SyntheticPropertyDescriptor) {
|
||||
propertyDescriptor.getMethod.callableIdIfNotLocal
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
get() = withValidityAssertion { descriptor.correspondingProperty.setterCallableIdIfNotLocal }
|
||||
|
||||
override val parameter: KtValueParameterSymbol
|
||||
get() = withValidityAssertion { KtFe10DescValueParameterSymbol(descriptor.valueParameters.single(), analysisContext) }
|
||||
|
||||
+21
@@ -304,6 +304,27 @@ internal fun CallableMemberDescriptor.calculateCallableId(allowLocal: Boolean):
|
||||
}
|
||||
}
|
||||
|
||||
internal val PropertyDescriptor.getterCallableIdIfNotLocal: CallableId?
|
||||
get() {
|
||||
if (this is SyntheticPropertyDescriptor) {
|
||||
return getMethod.callableIdIfNotLocal
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
internal val PropertyDescriptor.setterCallableIdIfNotLocal: CallableId?
|
||||
get() {
|
||||
if (this is SyntheticPropertyDescriptor) {
|
||||
val setMethod = this.setMethod
|
||||
if (setMethod != null) {
|
||||
return setMethod.callableIdIfNotLocal
|
||||
}
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
internal fun getSymbolDescriptor(symbol: KtSymbol): DeclarationDescriptor? {
|
||||
return when (symbol) {
|
||||
is KtFe10DescSymbol<*> -> symbol.descriptor
|
||||
|
||||
+1
-1
@@ -64,7 +64,7 @@ internal class KtFe10PsiPropertyGetterSymbol(
|
||||
get() = withValidityAssertion { true }
|
||||
|
||||
override val callableIdIfNonLocal: CallableId?
|
||||
get() = withValidityAssertion { psi.property.callableIdIfNonLocal }
|
||||
get() = withValidityAssertion { null }
|
||||
|
||||
override val annotatedType: KtTypeAndAnnotations
|
||||
get() = withValidityAssertion {
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ internal class KtFe10PsiPropertySetterSymbol(
|
||||
get() = withValidityAssertion { true }
|
||||
|
||||
override val callableIdIfNonLocal: CallableId?
|
||||
get() = TODO("Not yet implemented")
|
||||
get() = withValidityAssertion { null }
|
||||
|
||||
override val annotatedType: KtTypeAndAnnotations
|
||||
get() = withValidityAssertion {
|
||||
|
||||
Reference in New Issue
Block a user