[Analysis API] add info about context receivers to the Analysis API
This commit is contained in:
+5
@@ -5,8 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased
|
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.KtFe10DescMemberSymbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.KtFe10DescMemberSymbol
|
||||||
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.createContextReceivers
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktHasStableParameterNames
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktHasStableParameterNames
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer
|
||||||
@@ -39,6 +41,9 @@ internal class KtFe10DescAnonymousFunctionSymbol(
|
|||||||
override val receiverType: KtType?
|
override val receiverType: KtType?
|
||||||
get() = withValidityAssertion { descriptor.extensionReceiverParameter?.type?.toKtType(analysisContext) }
|
get() = withValidityAssertion { descriptor.extensionReceiverParameter?.type?.toKtType(analysisContext) }
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver>
|
||||||
|
get() = withValidityAssertion { descriptor.createContextReceivers(analysisContext) }
|
||||||
|
|
||||||
override fun createPointer(): KtSymbolPointer<KtAnonymousFunctionSymbol> = withValidityAssertion {
|
override fun createPointer(): KtSymbolPointer<KtAnonymousFunctionSymbol> = withValidityAssertion {
|
||||||
return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer()
|
return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer()
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased
|
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10DescFunctionLikeSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10DescFunctionLikeSymbolPointer
|
||||||
@@ -75,6 +76,9 @@ internal class KtFe10DescFunctionSymbol private constructor(
|
|||||||
override val receiverType: KtType?
|
override val receiverType: KtType?
|
||||||
get() = withValidityAssertion { descriptor.extensionReceiverParameter?.type?.toKtType(analysisContext) }
|
get() = withValidityAssertion { descriptor.extensionReceiverParameter?.type?.toKtType(analysisContext) }
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver>
|
||||||
|
get() = withValidityAssertion { descriptor.createContextReceivers(analysisContext) }
|
||||||
|
|
||||||
override val isExtension: Boolean
|
override val isExtension: Boolean
|
||||||
get() = withValidityAssertion { descriptor.isExtension }
|
get() = withValidityAssertion { descriptor.isExtension }
|
||||||
|
|
||||||
|
|||||||
+4
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased
|
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
|
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer
|
||||||
@@ -92,6 +93,9 @@ internal class KtFe10DescKotlinPropertySymbol(
|
|||||||
override val receiverType: KtType?
|
override val receiverType: KtType?
|
||||||
get() = withValidityAssertion { descriptor.extensionReceiverParameter?.type?.toKtType(analysisContext) }
|
get() = withValidityAssertion { descriptor.extensionReceiverParameter?.type?.toKtType(analysisContext) }
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver>
|
||||||
|
get() = withValidityAssertion { descriptor.createContextReceivers(analysisContext) }
|
||||||
|
|
||||||
override val typeParameters: List<KtTypeParameterSymbol>
|
override val typeParameters: List<KtTypeParameterSymbol>
|
||||||
get() = withValidityAssertion { descriptor.typeParameters.map { it.toKtTypeParameter(analysisContext) } }
|
get() = withValidityAssertion { descriptor.typeParameters.map { it.toKtTypeParameter(analysisContext) } }
|
||||||
|
|
||||||
|
|||||||
+4
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased
|
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10DescNamedClassOrObjectSymbolSymbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10DescNamedClassOrObjectSymbolSymbol
|
||||||
@@ -54,6 +55,9 @@ internal class KtFe10DescNamedClassOrObjectSymbol(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver>
|
||||||
|
get() = withValidityAssertion { descriptor.createContextReceivers(analysisContext) }
|
||||||
|
|
||||||
@OptIn(KtAnalysisApiInternals::class)
|
@OptIn(KtAnalysisApiInternals::class)
|
||||||
override val classKind: KtClassKind
|
override val classKind: KtClassKind
|
||||||
get() = withValidityAssertion {
|
get() = withValidityAssertion {
|
||||||
|
|||||||
+4
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased
|
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10DescSamConstructorSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10DescSamConstructorSymbolPointer
|
||||||
@@ -48,6 +49,9 @@ internal class KtFe10DescSamConstructorSymbol(
|
|||||||
override val receiverType: KtType?
|
override val receiverType: KtType?
|
||||||
get() = withValidityAssertion { descriptor.extensionReceiverParameter?.type?.toKtType(analysisContext) }
|
get() = withValidityAssertion { descriptor.extensionReceiverParameter?.type?.toKtType(analysisContext) }
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver>
|
||||||
|
get() = withValidityAssertion { descriptor.createContextReceivers(analysisContext) }
|
||||||
|
|
||||||
override val isExtension: Boolean
|
override val isExtension: Boolean
|
||||||
get() = withValidityAssertion { descriptor.isExtension }
|
get() = withValidityAssertion { descriptor.isExtension }
|
||||||
|
|
||||||
|
|||||||
+30
-1
@@ -3,11 +3,14 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@file:OptIn(KtAnalysisApiInternals::class)
|
||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base
|
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.api.*
|
import org.jetbrains.kotlin.analysis.api.*
|
||||||
import org.jetbrains.kotlin.analysis.api.annotations.*
|
import org.jetbrains.kotlin.analysis.api.annotations.*
|
||||||
import org.jetbrains.kotlin.analysis.api.base.KtConstantValue
|
import org.jetbrains.kotlin.analysis.api.base.KtConstantValue
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.components.KtDeclarationRendererOptions
|
import org.jetbrains.kotlin.analysis.api.components.KtDeclarationRendererOptions
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.KtFe10PackageSymbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.KtFe10PackageSymbol
|
||||||
@@ -15,6 +18,7 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.*
|
|||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KtFe10PsiSymbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KtFe10PsiSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.types.*
|
import org.jetbrains.kotlin.analysis.api.descriptors.types.*
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.utils.KtFe10Renderer
|
import org.jetbrains.kotlin.analysis.api.descriptors.utils.KtFe10Renderer
|
||||||
|
import org.jetbrains.kotlin.analysis.api.impl.base.KtContextReceiverImpl
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
||||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||||
@@ -43,6 +47,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
|||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||||
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyAnnotationDescriptor
|
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyAnnotationDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.sam.SamConstructorDescriptor
|
import org.jetbrains.kotlin.resolve.sam.SamConstructorDescriptor
|
||||||
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitContextReceiver
|
||||||
import org.jetbrains.kotlin.resolve.source.PsiSourceElement
|
import org.jetbrains.kotlin.resolve.source.PsiSourceElement
|
||||||
import org.jetbrains.kotlin.resolve.source.getPsi
|
import org.jetbrains.kotlin.resolve.source.getPsi
|
||||||
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
|
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
|
||||||
@@ -263,7 +268,8 @@ internal fun KotlinType.toKtType(analysisContext: Fe10AnalysisContext): KtType {
|
|||||||
is FunctionClassDescriptor -> KtFe10FunctionalType(unwrappedType, typeDeclaration, analysisContext)
|
is FunctionClassDescriptor -> KtFe10FunctionalType(unwrappedType, typeDeclaration, analysisContext)
|
||||||
is ClassDescriptor -> KtFe10UsualClassType(unwrappedType, typeDeclaration, analysisContext)
|
is ClassDescriptor -> KtFe10UsualClassType(unwrappedType, typeDeclaration, analysisContext)
|
||||||
else -> {
|
else -> {
|
||||||
val errorType = ErrorUtils.createErrorType(ErrorTypeKind.UNRESOLVED_CLASS_TYPE, typeConstructor, typeDeclaration.toString())
|
val errorType =
|
||||||
|
ErrorUtils.createErrorType(ErrorTypeKind.UNRESOLVED_CLASS_TYPE, typeConstructor, typeDeclaration.toString())
|
||||||
KtFe10ClassErrorType(errorType, analysisContext)
|
KtFe10ClassErrorType(errorType, analysisContext)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -563,3 +569,26 @@ internal fun AnnotationDescriptor.getKtNamedAnnotationArguments() =
|
|||||||
allValueArguments.map { (name, value) ->
|
allValueArguments.map { (name, value) ->
|
||||||
KtNamedAnnotationValue(name, value.toKtAnnotationValue())
|
KtNamedAnnotationValue(name, value.toKtAnnotationValue())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
internal fun CallableDescriptor.createContextReceivers(
|
||||||
|
analysisContext: Fe10AnalysisContext
|
||||||
|
): List<KtContextReceiver> {
|
||||||
|
return contextReceiverParameters.map { createContextReceiver(it, analysisContext) }
|
||||||
|
}
|
||||||
|
internal fun ClassDescriptor.createContextReceivers(
|
||||||
|
analysisContext: Fe10AnalysisContext
|
||||||
|
): List<KtContextReceiver> {
|
||||||
|
return contextReceivers.map { createContextReceiver(it, analysisContext) }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun createContextReceiver(
|
||||||
|
contextReceiver: ReceiverParameterDescriptor,
|
||||||
|
analysisContext: Fe10AnalysisContext
|
||||||
|
): KtContextReceiverImpl {
|
||||||
|
return KtContextReceiverImpl(
|
||||||
|
contextReceiver.value.type.toKtType(analysisContext),
|
||||||
|
(contextReceiver.value as ImplicitContextReceiver).customLabelName,
|
||||||
|
analysisContext.token
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|||||||
+5
@@ -5,9 +5,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased
|
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession
|
import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession
|
||||||
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.createContextReceivers
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KtFe10PsiSymbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KtFe10PsiSymbol
|
||||||
@@ -55,6 +57,9 @@ internal class KtFe10PsiAnonymousFunctionSymbol(
|
|||||||
return extensionReceiverParameter.type.toKtType(analysisContext)
|
return extensionReceiverParameter.type.toKtType(analysisContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver>
|
||||||
|
get() = withValidityAssertion { descriptor?.createContextReceivers(analysisContext) ?: emptyList() }
|
||||||
|
|
||||||
override val isExtension: Boolean
|
override val isExtension: Boolean
|
||||||
get() = withValidityAssertion { psi.isExtensionDeclaration() }
|
get() = withValidityAssertion { psi.isExtensionDeclaration() }
|
||||||
|
|
||||||
|
|||||||
+5
@@ -5,8 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased
|
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode
|
||||||
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.createContextReceivers
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType
|
||||||
@@ -89,6 +91,9 @@ internal class KtFe10PsiFunctionSymbol(
|
|||||||
return extensionReceiverParameter.type.toKtType(analysisContext)
|
return extensionReceiverParameter.type.toKtType(analysisContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver>
|
||||||
|
get() = withValidityAssertion { descriptor?.createContextReceivers(analysisContext) ?: emptyList() }
|
||||||
|
|
||||||
override val isExtension: Boolean
|
override val isExtension: Boolean
|
||||||
get() = withValidityAssertion { psi.isExtensionDeclaration() }
|
get() = withValidityAssertion { psi.isExtensionDeclaration() }
|
||||||
|
|
||||||
|
|||||||
+5
@@ -6,8 +6,10 @@
|
|||||||
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased
|
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
|
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode
|
||||||
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.createKtInitializerValue
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.createKtInitializerValue
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility
|
||||||
@@ -116,6 +118,9 @@ internal class KtFe10PsiKotlinPropertySymbol(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver>
|
||||||
|
get() = withValidityAssertion { descriptor?.createContextReceivers(analysisContext) ?: emptyList() }
|
||||||
|
|
||||||
override val isExtension: Boolean
|
override val isExtension: Boolean
|
||||||
get() = withValidityAssertion { psi.isExtensionDeclaration() }
|
get() = withValidityAssertion { psi.isExtensionDeclaration() }
|
||||||
|
|
||||||
|
|||||||
+6
@@ -5,8 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased
|
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.KtFe10DescValueParameterSymbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.KtFe10DescValueParameterSymbol
|
||||||
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.createContextReceivers
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KtFe10PsiSymbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KtFe10PsiSymbol
|
||||||
@@ -57,6 +59,10 @@ internal class KtFe10PsiLiteralAnonymousFunctionSymbol(
|
|||||||
extensionReceiverParameter.type.toKtType(analysisContext)
|
extensionReceiverParameter.type.toKtType(analysisContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver>
|
||||||
|
get() = withValidityAssertion { descriptor?.createContextReceivers(analysisContext) ?: emptyList() }
|
||||||
|
|
||||||
|
|
||||||
override val isExtension: Boolean
|
override val isExtension: Boolean
|
||||||
get() = withValidityAssertion { psi.isExtensionDeclaration() }
|
get() = withValidityAssertion { psi.isExtensionDeclaration() }
|
||||||
|
|
||||||
|
|||||||
+6
@@ -6,8 +6,10 @@
|
|||||||
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased
|
package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode
|
import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode
|
||||||
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.*
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.getSupertypesWithAny
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.getSupertypesWithAny
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility
|
||||||
@@ -67,6 +69,10 @@ internal class KtFe10PsiNamedClassOrObjectSymbol(
|
|||||||
KtFe10PsiNamedClassOrObjectSymbol(companionObject, analysisContext)
|
KtFe10PsiNamedClassOrObjectSymbol(companionObject, analysisContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver>
|
||||||
|
get() = withValidityAssertion { descriptor?.createContextReceivers(analysisContext) ?: emptyList() }
|
||||||
|
|
||||||
|
|
||||||
@OptIn(KtAnalysisApiInternals::class)
|
@OptIn(KtAnalysisApiInternals::class)
|
||||||
override val classKind: KtClassKind
|
override val classKind: KtClassKind
|
||||||
get() = withValidityAssertion {
|
get() = withValidityAssertion {
|
||||||
|
|||||||
+28
@@ -243,4 +243,32 @@ public class Fe10IdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated extends A
|
|||||||
public void testVarargFunctions() throws Exception {
|
public void testVarargFunctions() throws Exception {
|
||||||
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/varargFunctions.kt");
|
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/varargFunctions.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@TestMetadata("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
public class ContextReceivers {
|
||||||
|
@Test
|
||||||
|
public void testAllFilesPresentInContextReceivers() throws Exception {
|
||||||
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("contextReceiversOnClass.kt")
|
||||||
|
public void testContextReceiversOnClass() throws Exception {
|
||||||
|
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnClass.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("contextReceiversOnFunction.kt")
|
||||||
|
public void testContextReceiversOnFunction() throws Exception {
|
||||||
|
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("contextReceiversOnProperty.kt")
|
||||||
|
public void testContextReceiversOnProperty() throws Exception {
|
||||||
|
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnProperty.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
|
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
||||||
@@ -40,6 +41,8 @@ internal class KtFirAnonymousFunctionSymbol(
|
|||||||
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
|
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
|
||||||
override val receiverType: KtType? get() = withValidityAssertion { firSymbol.receiverType(builder) }
|
override val receiverType: KtType? get() = withValidityAssertion { firSymbol.receiverType(builder) }
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver> by cached { firSymbol.createContextReceivers(builder) }
|
||||||
|
|
||||||
override val valueParameters: List<KtValueParameterSymbol> by cached { firSymbol.createKtValueParameters(builder) }
|
override val valueParameters: List<KtValueParameterSymbol> by cached { firSymbol.createKtValueParameters(builder) }
|
||||||
|
|
||||||
override val hasStableParameterNames: Boolean
|
override val hasStableParameterNames: Boolean
|
||||||
|
|||||||
+1
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.analysis.api.fir.symbols
|
package org.jetbrains.kotlin.analysis.api.fir.symbols
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
||||||
|
|||||||
+3
-1
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.analysis.api.fir.symbols
|
package org.jetbrains.kotlin.analysis.api.fir.symbols
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
||||||
@@ -50,7 +51,8 @@ internal class KtFirFunctionSymbol(
|
|||||||
|
|
||||||
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
|
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
|
||||||
override val receiverType: KtType? get() = withValidityAssertion { firSymbol.receiverType(builder) }
|
override val receiverType: KtType? get() = withValidityAssertion { firSymbol.receiverType(builder) }
|
||||||
|
override val contextReceivers: List<KtContextReceiver> by cached { firSymbol.createContextReceivers(builder) }
|
||||||
|
|
||||||
override val typeParameters by cached { firSymbol.createKtTypeParameters(builder) }
|
override val typeParameters by cached { firSymbol.createKtTypeParameters(builder) }
|
||||||
override val valueParameters: List<KtValueParameterSymbol> by cached { firSymbol.createKtValueParameters(builder) }
|
override val valueParameters: List<KtValueParameterSymbol> by cached { firSymbol.createKtValueParameters(builder) }
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||||
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
|
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
||||||
@@ -63,7 +64,8 @@ internal class KtFirKotlinPropertySymbol(
|
|||||||
|
|
||||||
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
|
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
|
||||||
override val receiverType: KtType? get() = withValidityAssertion { firSymbol.receiverType(builder) }
|
override val receiverType: KtType? get() = withValidityAssertion { firSymbol.receiverType(builder) }
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver> by cached { firSymbol.createContextReceivers(builder) }
|
||||||
|
|
||||||
override val isExtension: Boolean get() = withValidityAssertion { firSymbol.isExtension }
|
override val isExtension: Boolean get() = withValidityAssertion { firSymbol.isExtension }
|
||||||
override val initializer: KtInitializerValue? by cached { firSymbol.getKtConstantInitializer() }
|
override val initializer: KtInitializerValue? by cached { firSymbol.getKtConstantInitializer() }
|
||||||
|
|||||||
+3
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
||||||
@@ -74,6 +75,8 @@ internal class KtFirNamedClassOrObjectSymbol(
|
|||||||
override val isFun: Boolean get() = withValidityAssertion { firSymbol.isFun }
|
override val isFun: Boolean get() = withValidityAssertion { firSymbol.isFun }
|
||||||
override val isExternal: Boolean get() = withValidityAssertion { firSymbol.isExternal }
|
override val isExternal: Boolean get() = withValidityAssertion { firSymbol.isExternal }
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver> get() = withValidityAssertion { firSymbol.createContextReceivers(builder) }
|
||||||
|
|
||||||
override val companionObject: KtFirNamedClassOrObjectSymbol? by cached {
|
override val companionObject: KtFirNamedClassOrObjectSymbol? by cached {
|
||||||
firSymbol.companionObjectSymbol?.let {
|
firSymbol.companionObjectSymbol?.let {
|
||||||
builder.classifierBuilder.buildNamedClassOrObjectSymbol(it)
|
builder.classifierBuilder.buildNamedClassOrObjectSymbol(it)
|
||||||
|
|||||||
+6
-3
@@ -7,18 +7,19 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
|
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
import org.jetbrains.kotlin.analysis.api.fir.findPsi
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirSamConstructorSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirSamConstructorSymbolPointer
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
|
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
|
||||||
|
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||||
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSamConstructorSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtSamConstructorSymbol
|
||||||
|
import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
|
||||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
@@ -44,6 +45,8 @@ internal class KtFirSamConstructorSymbol(
|
|||||||
|
|
||||||
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
|
override val returnType: KtType get() = withValidityAssertion { firSymbol.returnType(builder) }
|
||||||
|
|
||||||
|
override val contextReceivers: List<KtContextReceiver> by cached { firSymbol.createContextReceivers(builder) }
|
||||||
|
|
||||||
override val valueParameters: List<KtValueParameterSymbol>
|
override val valueParameters: List<KtValueParameterSymbol>
|
||||||
get() = withValidityAssertion {
|
get() = withValidityAssertion {
|
||||||
firSymbol.createKtValueParameters(builder)
|
firSymbol.createKtValueParameters(builder)
|
||||||
|
|||||||
+28
-8
@@ -3,19 +3,21 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@file:OptIn(KtAnalysisApiInternals::class)
|
||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.fir.symbols
|
package org.jetbrains.kotlin.analysis.api.fir.symbols
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||||
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
|
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.utils.asKtInitializerValue
|
import org.jetbrains.kotlin.analysis.api.fir.utils.asKtInitializerValue
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
|
import org.jetbrains.kotlin.analysis.api.impl.base.KtContextReceiverImpl
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||||
import org.jetbrains.kotlin.analysis.utils.printer.getElementTextInContext
|
import org.jetbrains.kotlin.analysis.utils.printer.getElementTextInContext
|
||||||
import org.jetbrains.kotlin.fir.FirRenderer
|
import org.jetbrains.kotlin.fir.FirRenderer
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirContextReceiver
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
|
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
|
||||||
@@ -23,10 +25,7 @@ import org.jetbrains.kotlin.fir.psi
|
|||||||
import org.jetbrains.kotlin.fir.renderWithType
|
import org.jetbrains.kotlin.fir.renderWithType
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
|
||||||
import org.jetbrains.kotlin.name.CallableId
|
import org.jetbrains.kotlin.name.CallableId
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
@@ -57,6 +56,27 @@ internal fun <D> FirBasedSymbol<D>.createKtTypeParameters(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
internal fun FirCallableSymbol<*>.createContextReceivers(
|
||||||
|
builder: KtSymbolByFirBuilder
|
||||||
|
): List<KtContextReceiver> {
|
||||||
|
return resolvedContextReceivers.map { createContextReceiver(builder, it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun FirRegularClassSymbol.createContextReceivers(
|
||||||
|
builder: KtSymbolByFirBuilder
|
||||||
|
): List<KtContextReceiver> {
|
||||||
|
return resolvedContextReceivers.map { createContextReceiver(builder, it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun createContextReceiver(
|
||||||
|
builder: KtSymbolByFirBuilder,
|
||||||
|
contextReceiver: FirContextReceiver
|
||||||
|
) = KtContextReceiverImpl(
|
||||||
|
builder.typeBuilder.buildKtType(contextReceiver.typeRef),
|
||||||
|
contextReceiver.customLabelName,
|
||||||
|
builder.token
|
||||||
|
)
|
||||||
|
|
||||||
internal fun FirCallableSymbol<*>.getCallableIdIfNonLocal(): CallableId? =
|
internal fun FirCallableSymbol<*>.getCallableIdIfNonLocal(): CallableId? =
|
||||||
callableId.takeUnless { it.isLocal }
|
callableId.takeUnless { it.isLocal }
|
||||||
|
|
||||||
|
|||||||
+28
@@ -243,4 +243,32 @@ public class FirIdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated extends Ab
|
|||||||
public void testVarargFunctions() throws Exception {
|
public void testVarargFunctions() throws Exception {
|
||||||
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/varargFunctions.kt");
|
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/varargFunctions.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@TestMetadata("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
public class ContextReceivers {
|
||||||
|
@Test
|
||||||
|
public void testAllFilesPresentInContextReceivers() throws Exception {
|
||||||
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("contextReceiversOnClass.kt")
|
||||||
|
public void testContextReceiversOnClass() throws Exception {
|
||||||
|
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnClass.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("contextReceiversOnFunction.kt")
|
||||||
|
public void testContextReceiversOnFunction() throws Exception {
|
||||||
|
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("contextReceiversOnProperty.kt")
|
||||||
|
public void testContextReceiversOnProperty() throws Exception {
|
||||||
|
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnProperty.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* 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.impl.base
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
|
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||||
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
|
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
|
@KtAnalysisApiInternals
|
||||||
|
class KtContextReceiverImpl(
|
||||||
|
private val _type: KtType,
|
||||||
|
private val _label: Name?,
|
||||||
|
override val token: KtLifetimeToken
|
||||||
|
) : KtContextReceiver() {
|
||||||
|
override val label: Name? get() = withValidityAssertion { _label }
|
||||||
|
override val type: KtType get() = withValidityAssertion { _type }
|
||||||
|
}
|
||||||
+28
@@ -243,4 +243,32 @@ public class FirStandaloneNormalAnalysisSourceModuleSymbolByPsiTestGenerated ext
|
|||||||
public void testVarargFunctions() throws Exception {
|
public void testVarargFunctions() throws Exception {
|
||||||
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/varargFunctions.kt");
|
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/varargFunctions.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@TestMetadata("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
public class ContextReceivers {
|
||||||
|
@Test
|
||||||
|
public void testAllFilesPresentInContextReceivers() throws Exception {
|
||||||
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("contextReceiversOnClass.kt")
|
||||||
|
public void testContextReceiversOnClass() throws Exception {
|
||||||
|
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnClass.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("contextReceiversOnFunction.kt")
|
||||||
|
public void testContextReceiversOnFunction() throws Exception {
|
||||||
|
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("contextReceiversOnProperty.kt")
|
||||||
|
public void testContextReceiversOnProperty() throws Exception {
|
||||||
|
runTest("analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnProperty.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* 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.base
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
|
||||||
|
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A context receiver of function/property type which are directly specified in the code
|
||||||
|
*
|
||||||
|
* E.g, for the following code
|
||||||
|
* ```
|
||||||
|
* context(a@Int)
|
||||||
|
* fun foo(){}
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* the context receiver is `KtContextReceiver(type=KtClassType(Int), label="a")`
|
||||||
|
*/
|
||||||
|
public abstract class KtContextReceiver : KtLifetimeOwner {
|
||||||
|
/**
|
||||||
|
* Type of the context receiver
|
||||||
|
*
|
||||||
|
* @see KtContextReceiver
|
||||||
|
*/
|
||||||
|
public abstract val type: KtType
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Additional label for the context receivers in the format `label@Type`, if label is not present, return `null`
|
||||||
|
*
|
||||||
|
* @see KtContextReceiver
|
||||||
|
*/
|
||||||
|
public abstract val label: Name?
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Something which can have a [KtContextReceiver] declared. This may be a callable symbol or a class symbol
|
||||||
|
*/
|
||||||
|
public interface KtContextReceiversOwner : KtLifetimeOwner {
|
||||||
|
/**
|
||||||
|
* List of [KtContextReceiver] directly declared in the source code
|
||||||
|
*/
|
||||||
|
public val contextReceivers: List<KtContextReceiver>
|
||||||
|
}
|
||||||
+12
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.analysis.api.KtConstantInitializerValue
|
|||||||
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
|
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
|
||||||
import org.jetbrains.kotlin.analysis.api.KtNonConstantInitializerValue
|
import org.jetbrains.kotlin.analysis.api.KtNonConstantInitializerValue
|
||||||
import org.jetbrains.kotlin.analysis.api.annotations.*
|
import org.jetbrains.kotlin.analysis.api.annotations.*
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.components.KtSymbolContainingDeclarationProviderMixIn
|
import org.jetbrains.kotlin.analysis.api.components.KtSymbolContainingDeclarationProviderMixIn
|
||||||
import org.jetbrains.kotlin.analysis.api.components.KtSymbolInfoProviderMixIn
|
import org.jetbrains.kotlin.analysis.api.components.KtSymbolInfoProviderMixIn
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtNamedSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtNamedSymbol
|
||||||
@@ -203,6 +204,7 @@ public object DebugSymbolRenderer {
|
|||||||
is KtAnnotationValue -> renderAnnotationValue(value)
|
is KtAnnotationValue -> renderAnnotationValue(value)
|
||||||
is KtNamedAnnotationValue -> renderNamedConstantValue(value)
|
is KtNamedAnnotationValue -> renderNamedConstantValue(value)
|
||||||
is KtInitializerValue -> renderKtInitializerValue(value)
|
is KtInitializerValue -> renderKtInitializerValue(value)
|
||||||
|
is KtContextReceiver -> rendeContextReceiver(value)
|
||||||
is KtAnnotationApplication -> renderAnnotationApplication(value)
|
is KtAnnotationApplication -> renderAnnotationApplication(value)
|
||||||
is KtAnnotationsList -> renderAnnotationsList(value)
|
is KtAnnotationsList -> renderAnnotationsList(value)
|
||||||
is KtModule -> renderKtModule(value)
|
is KtModule -> renderKtModule(value)
|
||||||
@@ -224,6 +226,16 @@ public object DebugSymbolRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun PrettyPrinter.rendeContextReceiver(receiver: KtContextReceiver) {
|
||||||
|
append("ContextReceiver(")
|
||||||
|
receiver.label?.let { label ->
|
||||||
|
renderValue(label)
|
||||||
|
append("@")
|
||||||
|
}
|
||||||
|
renderType(receiver.type)
|
||||||
|
append(")")
|
||||||
|
}
|
||||||
|
|
||||||
private fun PrettyPrinter.renderKtModule(ktModule: KtModule) {
|
private fun PrettyPrinter.renderKtModule(ktModule: KtModule) {
|
||||||
val ktModuleClass = ktModule::class.allSuperclasses.filter { it in ktModuleSubclasses }.first()
|
val ktModuleClass = ktModule::class.allSuperclasses.filter { it in ktModuleSubclasses }.first()
|
||||||
append("${ktModuleClass.simpleName} \"${ktModule.moduleDescription}\"")
|
append("${ktModuleClass.simpleName} \"${ktModule.moduleDescription}\"")
|
||||||
|
|||||||
+2
-1
@@ -5,13 +5,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.symbols
|
package org.jetbrains.kotlin.analysis.api.symbols
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiversOwner
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtPossibleMemberSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtPossibleMemberSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithKind
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithKind
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||||
import org.jetbrains.kotlin.name.CallableId
|
import org.jetbrains.kotlin.name.CallableId
|
||||||
|
|
||||||
public sealed class KtCallableSymbol : KtSymbolWithKind, KtPossibleMemberSymbol, KtDeclarationSymbol {
|
public sealed class KtCallableSymbol : KtSymbolWithKind, KtPossibleMemberSymbol, KtDeclarationSymbol, KtContextReceiversOwner {
|
||||||
public abstract val callableIdIfNonLocal: CallableId?
|
public abstract val callableIdIfNonLocal: CallableId?
|
||||||
public abstract val returnType: KtType
|
public abstract val returnType: KtType
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.symbols
|
package org.jetbrains.kotlin.analysis.api.symbols
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiversOwner
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.*
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.*
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||||
@@ -74,7 +75,8 @@ public abstract class KtAnonymousObjectSymbol : KtClassOrObjectSymbol() {
|
|||||||
public abstract class KtNamedClassOrObjectSymbol : KtClassOrObjectSymbol(),
|
public abstract class KtNamedClassOrObjectSymbol : KtClassOrObjectSymbol(),
|
||||||
KtSymbolWithModality,
|
KtSymbolWithModality,
|
||||||
KtSymbolWithVisibility,
|
KtSymbolWithVisibility,
|
||||||
KtNamedSymbol {
|
KtNamedSymbol,
|
||||||
|
KtContextReceiversOwner {
|
||||||
|
|
||||||
public abstract val isInner: Boolean
|
public abstract val isInner: Boolean
|
||||||
public abstract val isData: Boolean
|
public abstract val isData: Boolean
|
||||||
|
|||||||
+2
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.symbols
|
package org.jetbrains.kotlin.analysis.api.symbols
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.*
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.*
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||||
@@ -74,6 +75,7 @@ public abstract class KtConstructorSymbol : KtFunctionLikeSymbol(),
|
|||||||
final override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.CLASS_MEMBER }
|
final override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.CLASS_MEMBER }
|
||||||
final override val isExtension: Boolean get() = withValidityAssertion { false }
|
final override val isExtension: Boolean get() = withValidityAssertion { false }
|
||||||
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
||||||
|
final override val contextReceivers: List<KtContextReceiver> get() = withValidityAssertion { emptyList() }
|
||||||
|
|
||||||
abstract override fun createPointer(): KtSymbolPointer<KtConstructorSymbol>
|
abstract override fun createPointer(): KtSymbolPointer<KtConstructorSymbol>
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.symbols
|
package org.jetbrains.kotlin.analysis.api.symbols
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.*
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.*
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||||
@@ -20,6 +21,8 @@ public sealed class KtPropertyAccessorSymbol : KtFunctionLikeSymbol(),
|
|||||||
final override val typeParameters: List<KtTypeParameterSymbol>
|
final override val typeParameters: List<KtTypeParameterSymbol>
|
||||||
get() = withValidityAssertion { emptyList() }
|
get() = withValidityAssertion { emptyList() }
|
||||||
|
|
||||||
|
final override val contextReceivers: List<KtContextReceiver> get() = withValidityAssertion { emptyList() }
|
||||||
|
|
||||||
public abstract val isDefault: Boolean
|
public abstract val isDefault: Boolean
|
||||||
public abstract val isInline: Boolean
|
public abstract val isInline: Boolean
|
||||||
public abstract val isOverride: Boolean
|
public abstract val isOverride: Boolean
|
||||||
|
|||||||
+8
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.api.symbols
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.analysis.api.*
|
import org.jetbrains.kotlin.analysis.api.*
|
||||||
|
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
import org.jetbrains.kotlin.builtins.StandardNames
|
import org.jetbrains.kotlin.builtins.StandardNames
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.*
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.*
|
||||||
@@ -42,6 +43,7 @@ public abstract class KtBackingFieldSymbol : KtVariableLikeSymbol() {
|
|||||||
final override val callableIdIfNonLocal: CallableId? get() = withValidityAssertion { null }
|
final override val callableIdIfNonLocal: CallableId? get() = withValidityAssertion { null }
|
||||||
final override val isExtension: Boolean get() = withValidityAssertion { false }
|
final override val isExtension: Boolean get() = withValidityAssertion { false }
|
||||||
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
||||||
|
final override val contextReceivers: List<KtContextReceiver> get() = withValidityAssertion { emptyList() }
|
||||||
|
|
||||||
final override val typeParameters: List<KtTypeParameterSymbol>
|
final override val typeParameters: List<KtTypeParameterSymbol>
|
||||||
get() = withValidityAssertion { emptyList() }
|
get() = withValidityAssertion { emptyList() }
|
||||||
@@ -58,6 +60,7 @@ public abstract class KtEnumEntrySymbol : KtVariableLikeSymbol(), KtSymbolWithMe
|
|||||||
final override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.CLASS_MEMBER }
|
final override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.CLASS_MEMBER }
|
||||||
final override val isExtension: Boolean get() = withValidityAssertion { false }
|
final override val isExtension: Boolean get() = withValidityAssertion { false }
|
||||||
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
||||||
|
final override val contextReceivers: List<KtContextReceiver> get() = withValidityAssertion { emptyList() }
|
||||||
|
|
||||||
final override val typeParameters: List<KtTypeParameterSymbol>
|
final override val typeParameters: List<KtTypeParameterSymbol>
|
||||||
get() = withValidityAssertion { emptyList() }
|
get() = withValidityAssertion { emptyList() }
|
||||||
@@ -82,6 +85,7 @@ public abstract class KtJavaFieldSymbol :
|
|||||||
final override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.CLASS_MEMBER }
|
final override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.CLASS_MEMBER }
|
||||||
final override val isExtension: Boolean get() = withValidityAssertion { false }
|
final override val isExtension: Boolean get() = withValidityAssertion { false }
|
||||||
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
||||||
|
final override val contextReceivers: List<KtContextReceiver> get() = withValidityAssertion { emptyList() }
|
||||||
|
|
||||||
final override val typeParameters: List<KtTypeParameterSymbol>
|
final override val typeParameters: List<KtTypeParameterSymbol>
|
||||||
get() = withValidityAssertion { emptyList() }
|
get() = withValidityAssertion { emptyList() }
|
||||||
@@ -137,6 +141,8 @@ public abstract class KtSyntheticJavaPropertySymbol : KtPropertySymbol() {
|
|||||||
final override val isDelegatedProperty: Boolean get() = withValidityAssertion { false }
|
final override val isDelegatedProperty: Boolean get() = withValidityAssertion { false }
|
||||||
final override val hasGetter: Boolean get() = withValidityAssertion { true }
|
final override val hasGetter: Boolean get() = withValidityAssertion { true }
|
||||||
final override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.CLASS_MEMBER }
|
final override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.CLASS_MEMBER }
|
||||||
|
final override val contextReceivers: List<KtContextReceiver> get() = withValidityAssertion { emptyList() }
|
||||||
|
|
||||||
|
|
||||||
abstract override val getter: KtPropertyGetterSymbol
|
abstract override val getter: KtPropertyGetterSymbol
|
||||||
|
|
||||||
@@ -150,6 +156,7 @@ public abstract class KtLocalVariableSymbol : KtVariableSymbol(), KtSymbolWithKi
|
|||||||
final override val callableIdIfNonLocal: CallableId? get() = withValidityAssertion { null }
|
final override val callableIdIfNonLocal: CallableId? get() = withValidityAssertion { null }
|
||||||
final override val isExtension: Boolean get() = withValidityAssertion { false }
|
final override val isExtension: Boolean get() = withValidityAssertion { false }
|
||||||
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
||||||
|
final override val contextReceivers: List<KtContextReceiver> get() = withValidityAssertion { emptyList() }
|
||||||
|
|
||||||
final override val typeParameters: List<KtTypeParameterSymbol>
|
final override val typeParameters: List<KtTypeParameterSymbol>
|
||||||
get() = withValidityAssertion { emptyList() }
|
get() = withValidityAssertion { emptyList() }
|
||||||
@@ -162,6 +169,7 @@ public abstract class KtValueParameterSymbol : KtVariableLikeSymbol(), KtSymbolW
|
|||||||
final override val callableIdIfNonLocal: CallableId? get() = withValidityAssertion { null }
|
final override val callableIdIfNonLocal: CallableId? get() = withValidityAssertion { null }
|
||||||
final override val isExtension: Boolean get() = withValidityAssertion { false }
|
final override val isExtension: Boolean get() = withValidityAssertion { false }
|
||||||
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
final override val receiverType: KtType? get() = withValidityAssertion { null }
|
||||||
|
final override val contextReceivers: List<KtContextReceiver> get() = withValidityAssertion { emptyList() }
|
||||||
|
|
||||||
final override val typeParameters: List<KtTypeParameterSymbol>
|
final override val typeParameters: List<KtTypeParameterSymbol>
|
||||||
get() = withValidityAssertion { emptyList() }
|
get() = withValidityAssertion { emptyList() }
|
||||||
|
|||||||
Vendored
+4
@@ -0,0 +1,4 @@
|
|||||||
|
context(kotlin.Int, s@kotlin.String)
|
||||||
|
class A {
|
||||||
|
constructor(int: Int) {}
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
class A {
|
||||||
|
constructor(int: kotlin.Int)
|
||||||
|
}
|
||||||
Vendored
+63
@@ -0,0 +1,63 @@
|
|||||||
|
KtValueParameterSymbol:
|
||||||
|
annotationsList: []
|
||||||
|
callableIdIfNonLocal: null
|
||||||
|
contextReceivers: []
|
||||||
|
generatedPrimaryConstructorProperty: null
|
||||||
|
hasDefaultValue: false
|
||||||
|
isExtension: false
|
||||||
|
isImplicitLambdaParameter: false
|
||||||
|
isVararg: false
|
||||||
|
name: int
|
||||||
|
origin: SOURCE
|
||||||
|
receiverType: null
|
||||||
|
returnType: kotlin/Int
|
||||||
|
symbolKind: LOCAL
|
||||||
|
typeParameters: []
|
||||||
|
getContainingModule: KtSourceModule "Sources of main"
|
||||||
|
deprecationStatus: null
|
||||||
|
|
||||||
|
KtConstructorSymbol:
|
||||||
|
annotationsList: []
|
||||||
|
callableIdIfNonLocal: null
|
||||||
|
containingClassIdIfNonLocal: A
|
||||||
|
contextReceivers: []
|
||||||
|
hasStableParameterNames: true
|
||||||
|
isExtension: false
|
||||||
|
isPrimary: false
|
||||||
|
origin: SOURCE
|
||||||
|
receiverType: null
|
||||||
|
returnType: A
|
||||||
|
symbolKind: CLASS_MEMBER
|
||||||
|
typeParameters: []
|
||||||
|
valueParameters: [
|
||||||
|
KtValueParameterSymbol(int)
|
||||||
|
]
|
||||||
|
visibility: Public
|
||||||
|
getContainingModule: KtSourceModule "Sources of main"
|
||||||
|
deprecationStatus: null
|
||||||
|
|
||||||
|
KtNamedClassOrObjectSymbol:
|
||||||
|
annotationsList: []
|
||||||
|
classIdIfNonLocal: A
|
||||||
|
classKind: CLASS
|
||||||
|
companionObject: null
|
||||||
|
contextReceivers: [
|
||||||
|
ContextReceiver(kotlin/Int)
|
||||||
|
ContextReceiver(s@kotlin/String)
|
||||||
|
]
|
||||||
|
isData: false
|
||||||
|
isExternal: false
|
||||||
|
isFun: false
|
||||||
|
isInline: false
|
||||||
|
isInner: false
|
||||||
|
modality: FINAL
|
||||||
|
name: A
|
||||||
|
origin: SOURCE
|
||||||
|
superTypes: [
|
||||||
|
kotlin/Any
|
||||||
|
]
|
||||||
|
symbolKind: TOP_LEVEL
|
||||||
|
typeParameters: []
|
||||||
|
visibility: Public
|
||||||
|
getContainingModule: KtSourceModule "Sources of main"
|
||||||
|
deprecationStatus: null
|
||||||
Vendored
+2
@@ -0,0 +1,2 @@
|
|||||||
|
context(Int, s@String)
|
||||||
|
fun y(){}
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fun y()
|
||||||
Vendored
+28
@@ -0,0 +1,28 @@
|
|||||||
|
KtFunctionSymbol:
|
||||||
|
annotationsList: []
|
||||||
|
callableIdIfNonLocal: /y
|
||||||
|
contextReceivers: [
|
||||||
|
ContextReceiver(kotlin/Int)
|
||||||
|
ContextReceiver(s@kotlin/String)
|
||||||
|
]
|
||||||
|
hasStableParameterNames: true
|
||||||
|
isBuiltinFunctionInvoke: false
|
||||||
|
isExtension: false
|
||||||
|
isExternal: false
|
||||||
|
isInfix: false
|
||||||
|
isInline: false
|
||||||
|
isOperator: false
|
||||||
|
isOverride: false
|
||||||
|
isStatic: false
|
||||||
|
isSuspend: false
|
||||||
|
modality: FINAL
|
||||||
|
name: y
|
||||||
|
origin: SOURCE
|
||||||
|
receiverType: null
|
||||||
|
returnType: kotlin/Unit
|
||||||
|
symbolKind: TOP_LEVEL
|
||||||
|
typeParameters: []
|
||||||
|
valueParameters: []
|
||||||
|
visibility: Public
|
||||||
|
getContainingModule: KtSourceModule "Sources of main"
|
||||||
|
deprecationStatus: null
|
||||||
Vendored
+2
@@ -0,0 +1,2 @@
|
|||||||
|
context(Int, s@String)
|
||||||
|
val y get() = 10
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
val y: kotlin.Int
|
||||||
Vendored
+56
@@ -0,0 +1,56 @@
|
|||||||
|
KtPropertyGetterSymbol:
|
||||||
|
annotationsList: []
|
||||||
|
callableIdIfNonLocal: null
|
||||||
|
contextReceivers: []
|
||||||
|
hasBody: true
|
||||||
|
hasStableParameterNames: true
|
||||||
|
isDefault: false
|
||||||
|
isExtension: false
|
||||||
|
isInline: false
|
||||||
|
isOverride: false
|
||||||
|
modality: FINAL
|
||||||
|
origin: SOURCE
|
||||||
|
receiverType: null
|
||||||
|
returnType: kotlin/Int
|
||||||
|
symbolKind: ACCESSOR
|
||||||
|
typeParameters: []
|
||||||
|
valueParameters: []
|
||||||
|
visibility: Public
|
||||||
|
getContainingModule: KtSourceModule "Sources of main"
|
||||||
|
deprecationStatus: null
|
||||||
|
|
||||||
|
KtKotlinPropertySymbol:
|
||||||
|
annotationsList: []
|
||||||
|
callableIdIfNonLocal: /y
|
||||||
|
contextReceivers: [
|
||||||
|
ContextReceiver(kotlin/Int)
|
||||||
|
ContextReceiver(s@kotlin/String)
|
||||||
|
]
|
||||||
|
getter: KtPropertyGetterSymbol(<getter>)
|
||||||
|
hasBackingField: false
|
||||||
|
hasGetter: true
|
||||||
|
hasSetter: false
|
||||||
|
initializer: null
|
||||||
|
isConst: false
|
||||||
|
isDelegatedProperty: false
|
||||||
|
isExtension: false
|
||||||
|
isFromPrimaryConstructor: false
|
||||||
|
isLateInit: false
|
||||||
|
isOverride: false
|
||||||
|
isStatic: false
|
||||||
|
isVal: true
|
||||||
|
modality: FINAL
|
||||||
|
name: y
|
||||||
|
origin: SOURCE
|
||||||
|
receiverType: null
|
||||||
|
returnType: kotlin/Int
|
||||||
|
setter: null
|
||||||
|
symbolKind: TOP_LEVEL
|
||||||
|
typeParameters: []
|
||||||
|
visibility: Public
|
||||||
|
getContainingModule: KtSourceModule "Sources of main"
|
||||||
|
deprecationStatus: null
|
||||||
|
getterDeprecationStatus: null
|
||||||
|
javaGetterName: getY
|
||||||
|
javaSetterName: null
|
||||||
|
setterDeprecationStatus: null
|
||||||
@@ -31,6 +31,12 @@ abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>
|
|||||||
return fir.receiverTypeRef as FirResolvedTypeRef?
|
return fir.receiverTypeRef as FirResolvedTypeRef?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val resolvedContextReceivers: List<FirContextReceiver>
|
||||||
|
get() {
|
||||||
|
ensureResolved(FirResolvePhase.TYPES)
|
||||||
|
return fir.contextReceivers
|
||||||
|
}
|
||||||
|
|
||||||
val resolvedStatus: FirResolvedDeclarationStatus
|
val resolvedStatus: FirResolvedDeclarationStatus
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.STATUS)
|
ensureResolved(FirResolvePhase.STATUS)
|
||||||
|
|||||||
@@ -76,6 +76,12 @@ sealed class FirClassSymbol<C : FirClass>(classId: ClassId) : FirClassLikeSymbol
|
|||||||
class FirRegularClassSymbol(classId: ClassId) : FirClassSymbol<FirRegularClass>(classId) {
|
class FirRegularClassSymbol(classId: ClassId) : FirClassSymbol<FirRegularClass>(classId) {
|
||||||
val companionObjectSymbol: FirRegularClassSymbol?
|
val companionObjectSymbol: FirRegularClassSymbol?
|
||||||
get() = fir.companionObjectSymbol
|
get() = fir.companionObjectSymbol
|
||||||
|
|
||||||
|
val resolvedContextReceivers: List<FirContextReceiver>
|
||||||
|
get() {
|
||||||
|
ensureResolved(FirResolvePhase.TYPES)
|
||||||
|
return fir.contextReceivers
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val ANONYMOUS_CLASS_ID = ClassId(FqName.ROOT, FqName.topLevel(SpecialNames.ANONYMOUS), true)
|
val ANONYMOUS_CLASS_ID = ClassId(FqName.ROOT, FqName.topLevel(SpecialNames.ANONYMOUS), true)
|
||||||
|
|||||||
Reference in New Issue
Block a user