FIR IDE: introduce delegated symbol origin

This commit is contained in:
Ilya Kirillov
2021-01-09 06:02:58 +01:00
parent 2a9779cd89
commit 56bd6a30b3
3 changed files with 13 additions and 0 deletions
@@ -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]
*/
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,
}
@@ -28,6 +28,7 @@ internal class KtFirSymbolContainingDeclarationProvider(
KtSymbolOrigin.LIBRARY, KtSymbolOrigin.JAVA -> getContainingDeclarationForLibrarySymbol(symbol)
KtSymbolOrigin.INTERSECTION_OVERRIDE -> TODO()
KtSymbolOrigin.SAM_CONSTRUCTOR -> TODO()
KtSymbolOrigin.DELEGATED -> TODO()
}
}
@@ -36,6 +36,7 @@ private tailrec fun FirDeclaration.ktSymbolOrigin(): KtSymbolOrigin = when (orig
FirDeclarationOrigin.SamConstructor -> KtSymbolOrigin.SAM_CONSTRUCTOR
FirDeclarationOrigin.Enhancement -> KtSymbolOrigin.JAVA
FirDeclarationOrigin.IntersectionOverride -> KtSymbolOrigin.INTERSECTION_OVERRIDE
FirDeclarationOrigin.Delegated -> KtSymbolOrigin.DELEGATED
else -> {
val overridden = (this as? FirCallableDeclaration<*>)?.originalIfFakeOverride()
?: throw InvalidFirDeclarationOriginForSymbol(this)