FIR IDE: resolve reference to intersection override member to overridden members
This commit is contained in:
@@ -58,6 +58,9 @@ abstract class KtAnalysisSession(final override val token: ValidityToken) : Vali
|
||||
fun KtCallableSymbol.getOverriddenSymbols(containingDeclaration: KtClassOrObjectSymbol): List<KtCallableSymbol> =
|
||||
symbolDeclarationOverridesProvider.getOverriddenSymbols(this, containingDeclaration)
|
||||
|
||||
fun KtCallableSymbol.getIntersectionOverriddenSymbols(): Collection<KtCallableSymbol> =
|
||||
symbolDeclarationOverridesProvider.getIntersectionOverriddenSymbols(this)
|
||||
|
||||
fun KtExpression.getSmartCasts(): Collection<KtType> = smartCastProvider.getSmartCastedToTypes(this)
|
||||
|
||||
fun KtExpression.getImplicitReceiverSmartCasts(): Collection<ImplicitReceiverSmartCast> =
|
||||
|
||||
+5
-2
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.idea.frontend.api.components
|
||||
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol
|
||||
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.KtSymbol
|
||||
|
||||
abstract class KtSymbolDeclarationOverridesProvider : KtAnalysisSessionComponent() {
|
||||
@@ -19,5 +18,9 @@ abstract class KtSymbolDeclarationOverridesProvider : KtAnalysisSessionComponent
|
||||
containingDeclaration: KtClassOrObjectSymbol
|
||||
): List<KtCallableSymbol>
|
||||
|
||||
//abstract fun getOverriddenSymbols(callableSymbol: KtCallableSymbol, containingDeclaration: KtClassOrObjectSymbol): List<KtCallableSymbol>
|
||||
/**
|
||||
* If [symbol] origin is [org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbolOrigin.INTERSECTION_OVERRIDE]
|
||||
* Then returns the symbols which [symbol] overrides, otherwise empty collection
|
||||
*/
|
||||
abstract fun getIntersectionOverriddenSymbols(symbol: KtCallableSymbol): Collection<KtCallableSymbol>
|
||||
}
|
||||
+13
-1
@@ -42,5 +42,17 @@ enum class KtSymbolOrigin {
|
||||
*/
|
||||
JAVA,
|
||||
|
||||
SAM_CONSTRUCTOR
|
||||
SAM_CONSTRUCTOR,
|
||||
|
||||
/**
|
||||
* Consider the following code:
|
||||
* ```
|
||||
* interface A { fun x() }
|
||||
* interface B { fun x() }
|
||||
*
|
||||
* interface C : A, B
|
||||
* ```
|
||||
* The intersection of functions A.foo & B.foo will create a function C.foo which will be marked with [INTERSECTION_OVERRIDE]
|
||||
*/
|
||||
INTERSECTION_OVERRIDE,
|
||||
}
|
||||
Reference in New Issue
Block a user