FIR IDE: introduce delegated symbol origin
This commit is contained in:
@@ -55,4 +55,15 @@ enum class KtSymbolOrigin {
|
|||||||
* The intersection of functions A.foo & B.foo will create a function C.foo which will be marked with [INTERSECTION_OVERRIDE]
|
* The intersection of functions A.foo & B.foo will create a function C.foo which will be marked with [INTERSECTION_OVERRIDE]
|
||||||
*/
|
*/
|
||||||
INTERSECTION_OVERRIDE,
|
INTERSECTION_OVERRIDE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Member symbol which was generated by compiler when using `by` interface delegation
|
||||||
|
* e.g,
|
||||||
|
* ```
|
||||||
|
* interface A { fun x() }
|
||||||
|
* class B(a: A) : A by a
|
||||||
|
* ```
|
||||||
|
* the `B.foo` function will be generated by Kotlin compiler
|
||||||
|
*/
|
||||||
|
DELEGATED,
|
||||||
}
|
}
|
||||||
+1
@@ -28,6 +28,7 @@ internal class KtFirSymbolContainingDeclarationProvider(
|
|||||||
KtSymbolOrigin.LIBRARY, KtSymbolOrigin.JAVA -> getContainingDeclarationForLibrarySymbol(symbol)
|
KtSymbolOrigin.LIBRARY, KtSymbolOrigin.JAVA -> getContainingDeclarationForLibrarySymbol(symbol)
|
||||||
KtSymbolOrigin.INTERSECTION_OVERRIDE -> TODO()
|
KtSymbolOrigin.INTERSECTION_OVERRIDE -> TODO()
|
||||||
KtSymbolOrigin.SAM_CONSTRUCTOR -> TODO()
|
KtSymbolOrigin.SAM_CONSTRUCTOR -> TODO()
|
||||||
|
KtSymbolOrigin.DELEGATED -> TODO()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
@@ -36,6 +36,7 @@ private tailrec fun FirDeclaration.ktSymbolOrigin(): KtSymbolOrigin = when (orig
|
|||||||
FirDeclarationOrigin.SamConstructor -> KtSymbolOrigin.SAM_CONSTRUCTOR
|
FirDeclarationOrigin.SamConstructor -> KtSymbolOrigin.SAM_CONSTRUCTOR
|
||||||
FirDeclarationOrigin.Enhancement -> KtSymbolOrigin.JAVA
|
FirDeclarationOrigin.Enhancement -> KtSymbolOrigin.JAVA
|
||||||
FirDeclarationOrigin.IntersectionOverride -> KtSymbolOrigin.INTERSECTION_OVERRIDE
|
FirDeclarationOrigin.IntersectionOverride -> KtSymbolOrigin.INTERSECTION_OVERRIDE
|
||||||
|
FirDeclarationOrigin.Delegated -> KtSymbolOrigin.DELEGATED
|
||||||
else -> {
|
else -> {
|
||||||
val overridden = (this as? FirCallableDeclaration<*>)?.originalIfFakeOverride()
|
val overridden = (this as? FirCallableDeclaration<*>)?.originalIfFakeOverride()
|
||||||
?: throw InvalidFirDeclarationOriginForSymbol(this)
|
?: throw InvalidFirDeclarationOriginForSymbol(this)
|
||||||
|
|||||||
Reference in New Issue
Block a user