[AA K2] implement symbol pointers for classes and objects

^KT-54311
This commit is contained in:
Dmitrii Gridin
2022-11-03 11:47:03 +01:00
committed by Space Team
parent 85072b0c96
commit 0808f4e233
7 changed files with 877 additions and 9 deletions
@@ -11,7 +11,9 @@ import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirClassOrObjectInLibrarySymbolPointer
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirMemberClassOrObjectSymbolPointer
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirTopLevelClassOrObjectSymbolPointer
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
import org.jetbrains.kotlin.analysis.api.impl.base.symbols.toKtClassKind
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
@@ -22,15 +24,14 @@ import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
import org.jetbrains.kotlin.analysis.api.symbols.pointers.CanNotCreateSymbolPointerForLocalLibraryDeclarationException
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.symbols.pointers.UnsupportedSymbolKind
import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.resolve.getContainingDeclaration
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
@@ -105,10 +106,15 @@ internal class KtFirNamedClassOrObjectSymbol(
override fun createPointer(): KtSymbolPointer<KtNamedClassOrObjectSymbol> = withValidityAssertion {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
if (symbolKind == KtSymbolKind.LOCAL) {
throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException(classIdIfNonLocal?.asString().orEmpty())
when (val symbolKind = symbolKind) {
KtSymbolKind.LOCAL ->
throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException(classIdIfNonLocal?.asString().orEmpty())
KtSymbolKind.CLASS_MEMBER -> KtFirMemberClassOrObjectSymbolPointer(requireOwnerPointer(), name)
KtSymbolKind.TOP_LEVEL -> KtFirTopLevelClassOrObjectSymbolPointer(classIdIfNonLocal!!)
else -> throw UnsupportedSymbolKind(this::class, symbolKind)
}
return KtFirClassOrObjectInLibrarySymbolPointer(classIdIfNonLocal!!)
}
override fun equals(other: Any?): Boolean = symbolEquals(other)
@@ -0,0 +1,28 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.analysis.api.fir.symbols.pointers
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.name.Name
internal class KtFirMemberClassOrObjectSymbolPointer(
ownerPointer: KtSymbolPointer<KtSymbolWithMembers>,
private val name: Name,
) : KtFirMemberSymbolPointer<KtNamedClassOrObjectSymbol>(ownerPointer) {
override fun KtFirAnalysisSession.chooseCandidateAndCreateSymbol(
candidates: FirScope,
firSession: FirSession
): KtNamedClassOrObjectSymbol? {
val result = candidates.findClassifier<FirRegularClassSymbol>(name) ?: return null
return firSymbolBuilder.classifierBuilder.buildNamedClassOrObjectSymbol(result)
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.name.ClassId
class KtFirClassOrObjectInLibrarySymbolPointer(private val classId: ClassId) : KtSymbolPointer<KtNamedClassOrObjectSymbol>() {
class KtFirTopLevelClassOrObjectSymbolPointer(private val classId: ClassId) : KtSymbolPointer<KtNamedClassOrObjectSymbol>() {
@Deprecated("Consider using org.jetbrains.kotlin.analysis.api.KtAnalysisSession.restoreSymbol")
override fun restoreSymbol(analysisSession: KtAnalysisSession): KtNamedClassOrObjectSymbol? {
require(analysisSession is KtFirAnalysisSession)
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -12,10 +12,13 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.renderWithType
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.processClassifiersByName
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
internal inline fun <reified D : FirDeclaration> FirScope.findDeclarationWithSignature(
signature: IdSignature,
@@ -33,6 +36,17 @@ internal inline fun <reified D : FirDeclaration> FirScope.findDeclarationWithSig
return foundSymbol
}
internal inline fun <reified D : FirClassifierSymbol<*>> FirScope.findClassifier(name: Name): D? {
var foundSymbol: D? = null
processClassifiersByName(name) {
if (it is D) {
foundSymbol = it
}
}
return foundSymbol
}
internal inline fun <reified D : FirDeclaration> Collection<FirCallableSymbol<*>>.findDeclarationWithSignatureBySymbols(
signature: IdSignature,
firSession: FirSession
@@ -0,0 +1,539 @@
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T1
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: X.Y
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: true
modality: FINAL
name: Y
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T1)
]
visibility: Public
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T2
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: X.Z
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: false
modality: FINAL
name: Z
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T2)
]
visibility: Public
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T3
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T4
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T5
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: true
modality: FINAL
name: K
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T5)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T6
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: false
modality: FINAL
name: C
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T6)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T1
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: true
modality: FINAL
name: Y
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T1)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T2
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: false
modality: FINAL
name: Z
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T2)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T3
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T4
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T5
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: true
modality: FINAL
name: K
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T5)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T6
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: false
modality: FINAL
name: C
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T6)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: false
modality: FINAL
name: U
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: LOCAL
typeParameters: [
KtTypeParameterSymbol(T4)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtFunctionSymbol:
annotationsList: []
callableIdIfNonLocal: null
contextReceivers: []
hasStableParameterNames: true
isBuiltinFunctionInvoke: false
isExtension: false
isExternal: false
isInfix: false
isInline: false
isOperator: false
isOverride: false
isStatic: false
isSuspend: false
modality: FINAL
name: foo
origin: SOURCE
receiverType: null
returnType: kotlin/Unit
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T3)
]
valueParameters: []
visibility: Public
getDispatchReceiver(): X<T>
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: false
modality: FINAL
name: X
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: false
modality: FINAL
name: U
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: LOCAL
typeParameters: [
KtTypeParameterSymbol(T4)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtFunctionSymbol:
annotationsList: []
callableIdIfNonLocal: /X.foo
contextReceivers: []
hasStableParameterNames: true
isBuiltinFunctionInvoke: false
isExtension: false
isExternal: false
isInfix: false
isInline: false
isOperator: false
isOverride: false
isStatic: false
isSuspend: false
modality: FINAL
name: foo
origin: SOURCE
receiverType: null
returnType: kotlin/Unit
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T3)
]
valueParameters: []
visibility: Public
getDispatchReceiver(): X<T>
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: X
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: false
modality: FINAL
name: X
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: TOP_LEVEL
typeParameters: [
KtTypeParameterSymbol(T)
]
visibility: Public
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
@@ -7,6 +7,17 @@ class X<T> {
class U<T4> {
inner class K<T5>
class C<T6>
class X<T> {
inner class Y<T1>
class Z<T2>
fun <T3> foo() {
class U<T4> {
inner class K<T5>
class C<T6>
}
}
}
}
}
}
@@ -189,6 +189,276 @@ KtNamedClassOrObjectSymbol:
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T1
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: true
modality: FINAL
name: Y
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T1)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T2
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: false
modality: FINAL
name: Z
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T2)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T3
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T4
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T5
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: true
modality: FINAL
name: K
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T5)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtTypeParameterSymbol:
annotationsList: []
isReified: false
name: T6
origin: SOURCE
typeParameters: []
upperBounds: [
kotlin/Any?
]
variance: INVARIANT
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: false
modality: FINAL
name: C
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T6)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: false
modality: FINAL
name: U
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: LOCAL
typeParameters: [
KtTypeParameterSymbol(T4)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtFunctionSymbol:
annotationsList: []
callableIdIfNonLocal: null
contextReceivers: []
hasStableParameterNames: true
isBuiltinFunctionInvoke: false
isExtension: false
isExternal: false
isInfix: false
isInline: false
isOperator: false
isOverride: false
isStatic: false
isSuspend: false
modality: FINAL
name: foo
origin: SOURCE
receiverType: null
returnType: kotlin/Unit
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T3)
]
valueParameters: []
visibility: Public
getDispatchReceiver(): X.U.X<T, T4, T3, T>
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null
classKind: CLASS
companionObject: null
contextReceivers: []
isData: false
isExternal: false
isFun: false
isInline: false
isInner: false
modality: FINAL
name: X
origin: SOURCE
superTypes: [
kotlin/Any
]
symbolKind: CLASS_MEMBER
typeParameters: [
KtTypeParameterSymbol(T)
]
visibility: Local
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
KtNamedClassOrObjectSymbol:
annotationsList: []
classIdIfNonLocal: null