[Analysis API] introduce KtSymbolOrigin.SUBSTITUTION_OVERRIDE

^KT-52043
This commit is contained in:
Ilya Kirillov
2022-06-23 19:47:29 +02:00
parent 0ba06e0807
commit bb7b34b3a1
18 changed files with 47 additions and 38 deletions
@@ -52,7 +52,7 @@ internal class KtFirSymbolContainingDeclarationProvider(
KtSymbolOrigin.LIBRARY, KtSymbolOrigin.JAVA, KtSymbolOrigin.JAVA_SYNTHETIC_PROPERTY ->
getContainingDeclarationForLibrarySymbol(symbol)
KtSymbolOrigin.PROPERTY_BACKING_FIELD -> getContainingDeclarationForBackingFieldSymbol(symbol)
KtSymbolOrigin.INTERSECTION_OVERRIDE -> TODO()
KtSymbolOrigin.INTERSECTION_OVERRIDE, KtSymbolOrigin.SUBSTITUTION_OVERRIDE -> TODO()
KtSymbolOrigin.SAM_CONSTRUCTOR -> null
KtSymbolOrigin.PLUGIN -> TODO("Containing declaration is requested for ${ DebugSymbolRenderer.render(symbol) }")
KtSymbolOrigin.DELEGATED -> TODO()
@@ -76,11 +76,9 @@ internal tailrec fun FirDeclaration.ktSymbolOrigin(): KtSymbolOrigin = when (ori
original.ktSymbolOrigin()
}
is FirDeclarationOrigin.Plugin -> KtSymbolOrigin.PLUGIN
else -> {
val overridden = (this as? FirCallableDeclaration)?.originalIfFakeOverride()
?: throw InvalidFirDeclarationOriginForSymbol(this)
overridden.ktSymbolOrigin()
}
FirDeclarationOrigin.RenamedForOverride -> KtSymbolOrigin.JAVA
FirDeclarationOrigin.SubstitutionOverride -> KtSymbolOrigin.SUBSTITUTION_OVERRIDE
FirDeclarationOrigin.DynamicScope -> throw InvalidFirDeclarationOriginForSymbol(this)
}
class InvalidFirDeclarationOriginForSymbol(declaration: FirDeclaration) :
@@ -88,6 +88,17 @@ public enum class KtSymbolOrigin {
*/
INTERSECTION_OVERRIDE,
/**
* Consider the following code:
* ```
* interface A<T> { fun x(): T }
* interface B : A<Int> { }
* ```
*
* The B will have a member B.foo(): Int, this member is generated inside interface B with substtution T -> Int, such members are SUBSTITUTION_OVERRIDE
*/
SUBSTITUTION_OVERRIDE,
/**
* Member symbol which was generated by compiler when using `by` interface delegation
* e.g,
@@ -128,7 +128,7 @@ KtFunctionSymbol:
isSuspend: false
modality: ABSTRACT
name: fromSuper
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
receiverType: null
returnType: O
symbolKind: CLASS_MEMBER
@@ -377,7 +377,7 @@ KtFunctionSymbol:
isSuspend: false
modality: ABSTRACT
name: contains
origin: LIBRARY
origin: SUBSTITUTION_OVERRIDE
receiverType: null
returnType: kotlin/Boolean
symbolKind: CLASS_MEMBER
@@ -405,7 +405,7 @@ KtFunctionSymbol:
isSuspend: false
modality: ABSTRACT
name: containsAll
origin: LIBRARY
origin: SUBSTITUTION_OVERRIDE
receiverType: null
returnType: kotlin/Boolean
symbolKind: CLASS_MEMBER
@@ -433,7 +433,7 @@ KtFunctionSymbol:
isSuspend: false
modality: ABSTRACT
name: get
origin: LIBRARY
origin: SUBSTITUTION_OVERRIDE
receiverType: null
returnType: E
symbolKind: CLASS_MEMBER
@@ -461,7 +461,7 @@ KtFunctionSymbol:
isSuspend: false
modality: ABSTRACT
name: indexOf
origin: LIBRARY
origin: SUBSTITUTION_OVERRIDE
receiverType: null
returnType: kotlin/Int
symbolKind: CLASS_MEMBER
@@ -541,7 +541,7 @@ KtFunctionSymbol:
isSuspend: false
modality: ABSTRACT
name: lastIndexOf
origin: LIBRARY
origin: SUBSTITUTION_OVERRIDE
receiverType: null
returnType: kotlin/Int
symbolKind: CLASS_MEMBER
@@ -6,7 +6,7 @@ KtFunctionSymbol:
KtFunctionSymbol:
callableIdIfNonLocal: test/ClassWithGenericBase.withOuterGeneric
name: withOuterGeneric
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: test/Base.withOwnGeneric
@@ -16,7 +16,7 @@ KtFunctionSymbol:
KtFunctionSymbol:
callableIdIfNonLocal: test/ClassWithGenericBase.withOuterAndOwnGeneric
name: withOuterAndOwnGeneric
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: kotlin/Any.equals
@@ -6,7 +6,7 @@ KtKotlinPropertySymbol:
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/ClassWithGenericBase.withOuterGeneric
name: withOuterGeneric
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/Base.withOwnGeneric
@@ -16,7 +16,7 @@ KtKotlinPropertySymbol:
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/ClassWithGenericBase.withOuterAndOwnGeneric
name: withOuterAndOwnGeneric
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: kotlin/Any.equals
@@ -6,7 +6,7 @@ KtFunctionSymbol:
KtFunctionSymbol:
callableIdIfNonLocal: test/ClassWithInterfaceWithFun.withOuterGeneric_InterfaceWithFun
name: withOuterGeneric_InterfaceWithFun
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: test/InterfaceWithFunBase.noGenerics_InterfaceWithFunBase
@@ -16,12 +16,12 @@ KtFunctionSymbol:
KtFunctionSymbol:
callableIdIfNonLocal: test/InterfaceWithFun.withOuterGenericT1_InterfaceWithFunBase
name: withOuterGenericT1_InterfaceWithFunBase
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: test/ClassWithInterfaceWithFun.withOuterGenericT2_InterfaceWithFunBase
name: withOuterGenericT2_InterfaceWithFunBase
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: kotlin/Any.equals
@@ -6,7 +6,7 @@ KtKotlinPropertySymbol:
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/ClassWithInterfaceWithVal.withOuterGeneric_InterfaceWithVal
name: withOuterGeneric_InterfaceWithVal
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/InterfaceWithVal.withOwnGeneric_InterfaceWithVal
@@ -16,7 +16,7 @@ KtKotlinPropertySymbol:
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/ClassWithInterfaceWithVal.withOwnAndOuterGeneric_InterfaceWithVal
name: withOwnAndOuterGeneric_InterfaceWithVal
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/InterfaceWithValBase.noGenerics_InterfaceWithValBase
@@ -26,12 +26,12 @@ KtKotlinPropertySymbol:
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/InterfaceWithVal.withOuterGenericT1_InterfaceWithValBase
name: withOuterGenericT1_InterfaceWithValBase
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/ClassWithInterfaceWithVal.withOuterGenericT2_InterfaceWithValBase
name: withOuterGenericT2_InterfaceWithValBase
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/InterfaceWithValBase.withOwnGeneric_InterfaceWithValBase
@@ -41,12 +41,12 @@ KtKotlinPropertySymbol:
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/InterfaceWithVal.withOwnAndOuterGenericT1_InterfaceWithValBase
name: withOwnAndOuterGenericT1_InterfaceWithValBase
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/ClassWithInterfaceWithVal.withOwnAndOuterGenericT2_InterfaceWithValBase
name: withOwnAndOuterGenericT2_InterfaceWithValBase
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: kotlin/Any.equals
@@ -11,7 +11,7 @@ KtFunctionSymbol:
KtFunctionSymbol:
callableIdIfNonLocal: null
name: withOuterAndOwn
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: kotlin/Any.equals
@@ -11,7 +11,7 @@ KtFunctionSymbol:
KtFunctionSymbol:
callableIdIfNonLocal: test/TopLevel.Child.withOwnAndOuter
name: withOwnAndOuter
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: kotlin/Any.equals
@@ -6,7 +6,7 @@ KtFunctionSymbol:
KtFunctionSymbol:
callableIdIfNonLocal: test/OtherTopLevel.Child.withOuter
name: withOuter
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: kotlin/Any.equals
@@ -6,7 +6,7 @@ KtFunctionSymbol:
KtFunctionSymbol:
callableIdIfNonLocal: test/OtherTopLevel.Child.withOuter
name: withOuter
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: kotlin/Any.equals
@@ -6,12 +6,12 @@ KtFunctionSymbol:
KtFunctionSymbol:
callableIdIfNonLocal: test/OtherTopLevel.Child.withOuter
name: withOuter
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: test/OtherTopLevel.Child.withOwnAndOuter
name: withOwnAndOuter
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: kotlin/Any.equals
@@ -16,7 +16,7 @@ KtFunctionSymbol:
KtFunctionSymbol:
callableIdIfNonLocal: test/MyList.iterator
name: iterator
origin: JAVA
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: java/util/Collection.toArray
@@ -31,7 +31,7 @@ KtFunctionSymbol:
KtFunctionSymbol:
callableIdIfNonLocal: test/MyList.add
name: add
origin: JAVA
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: java/util/Collection.remove
@@ -46,7 +46,7 @@ KtFunctionSymbol:
KtFunctionSymbol:
callableIdIfNonLocal: test/MyList.addAll
name: addAll
origin: JAVA
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: java/util/Collection.removeAll
@@ -1,12 +1,12 @@
KtFunctionSymbol:
callableIdIfNonLocal: test/MyClass.funWithOuterAndOwnGenericsAndBounds
name: funWithOuterAndOwnGenericsAndBounds
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/MyClass.propWithOuterAndOwnGenericsAndBounds
name: propWithOuterAndOwnGenericsAndBounds
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: kotlin/Any.equals
@@ -6,7 +6,7 @@ KtKotlinPropertySymbol:
KtKotlinPropertySymbol:
callableIdIfNonLocal: test/Inheritor.withOwnAndOuterGenericAsTypeBound_InterfaceWithValBase
name: withOwnAndOuterGenericAsTypeBound_InterfaceWithValBase
origin: SOURCE
origin: SUBSTITUTION_OVERRIDE
KtFunctionSymbol:
callableIdIfNonLocal: kotlin/Any.equals
@@ -5,7 +5,7 @@ KtConstructorSymbol:
hasStableParameterNames: false
isExtension: false
isPrimary: false
origin: JAVA
origin: SUBSTITUTION_OVERRIDE
receiverType: null
returnType: java/util/ArrayList<E>
symbolKind: CLASS_MEMBER