From e27ffada261092ebb6035d84e203fc0a4fd88213 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Fri, 25 Nov 2022 15:23:13 +0100 Subject: [PATCH] [AA] KtSymbol: add context receiver to 'createPointer' ^KT-54051 --- .../descriptors/symbols/KtFe10FileSymbol.kt | 6 +- .../symbols/KtFe10PackageSymbol.kt | 6 +- .../KtFe10DescAnonymousFunctionSymbol.kt | 6 +- .../KtFe10DescAnonymousObjectSymbol.kt | 6 +- .../KtFe10DescConstructorSymbol.kt | 9 +-- .../KtFe10DescDefaultPropertyGetterSymbol.kt | 8 +-- .../KtFe10DescDefaultPropertySetterSymbol.kt | 15 ++--- .../KtFe10DescEnumEntrySymbol.kt | 11 ++-- .../KtFe10DescFunctionSymbol.kt | 7 +- .../KtFe10DescJavaFieldSymbol.kt | 6 +- .../KtFe10DescKotlinPropertySymbol.kt | 4 +- .../KtFe10DescLocalVariableSymbol.kt | 8 ++- .../KtFe10DescNamedClassOrObjectSymbol.kt | 9 +-- .../KtFe10DescPropertyGetterSymbol.kt | 4 +- .../KtFe10DescPropertySetterSymbol.kt | 8 +-- .../KtFe10DescSamConstructorSymbol.kt | 7 +- .../KtFe10DescSyntheticFieldSymbol.kt | 2 + .../KtFe10DescSyntheticJavaPropertySymbol.kt | 4 +- ...cSyntheticJavaPropertySymbolForOverride.kt | 4 +- .../KtFe10DescTypeAliasSymbol.kt | 14 ++-- .../KtFe10DescTypeParameterSymbol.kt | 6 +- .../KtFe10DescValueParameterSymbol.kt | 6 +- .../KtFe10ReceiverParameterSymbol.kt | 6 +- .../KtFe10PsiAnonymousFunctionSymbol.kt | 5 +- .../KtFe10PsiAnonymousObjectSymbol.kt | 8 ++- .../KtFe10PsiClassInitializerSymbol.kt | 6 +- .../psiBased/KtFe10PsiConstructorSymbol.kt | 8 ++- .../KtFe10PsiDefaultPropertyGetterSymbol.kt | 2 + .../KtFe10PsiDefaultPropertySetterSymbol.kt | 3 + .../KtFe10PsiDefaultSetterParameterSymbol.kt | 2 + .../psiBased/KtFe10PsiEnumEntrySymbol.kt | 6 +- .../psiBased/KtFe10PsiFunctionSymbol.kt | 6 +- .../psiBased/KtFe10PsiKotlinPropertySymbol.kt | 6 +- ...KtFe10PsiLiteralAnonymousFunctionSymbol.kt | 4 +- .../psiBased/KtFe10PsiLocalVariableSymbol.kt | 6 +- ...Fe10PsiLoopParameterLocalVariableSymbol.kt | 6 +- .../KtFe10PsiNamedClassOrObjectSymbol.kt | 12 ++-- .../psiBased/KtFe10PsiPropertyGetterSymbol.kt | 4 +- .../psiBased/KtFe10PsiPropertySetterSymbol.kt | 5 +- .../psiBased/KtFe10PsiTypeAliasSymbol.kt | 6 +- .../psiBased/KtFe10PsiTypeParameterSymbol.kt | 10 ++- .../psiBased/KtFe10PsiValueParameterSymbol.kt | 8 ++- .../symbols/KtFirAnonymousFunctionSymbol.kt | 2 + .../fir/symbols/KtFirAnonymousObjectSymbol.kt | 2 + .../fir/symbols/KtFirBackingFieldSymbol.kt | 4 +- .../symbols/KtFirClassInitializerSymbol.kt | 4 +- .../api/fir/symbols/KtFirConstructorSymbol.kt | 8 ++- .../api/fir/symbols/KtFirEnumEntrySymbol.kt | 4 +- .../api/fir/symbols/KtFirFileSymbol.kt | 10 ++- .../api/fir/symbols/KtFirFunctionSymbol.kt | 2 + .../api/fir/symbols/KtFirJavaFieldSymbol.kt | 2 + .../fir/symbols/KtFirKotlinPropertySymbol.kt | 2 + .../fir/symbols/KtFirLocalVariableSymbol.kt | 8 ++- .../symbols/KtFirNamedClassOrObjectSymbol.kt | 10 ++- .../api/fir/symbols/KtFirPackageSymbol.kt | 10 +-- .../fir/symbols/KtFirPropertyGetterSymbol.kt | 2 + .../fir/symbols/KtFirPropertySetterSymbol.kt | 2 + .../symbols/KtFirReceiverParameterSymbol.kt | 4 +- .../fir/symbols/KtFirSamConstructorSymbol.kt | 2 + .../KtFirSyntheticJavaPropertySymbol.kt | 10 ++- .../api/fir/symbols/KtFirTypeAliasSymbol.kt | 5 +- .../fir/symbols/KtFirTypeParameterSymbol.kt | 3 +- .../fir/symbols/KtFirValueParameterSymbol.kt | 2 + .../pointers/KtFirMemberSymbolPointer.kt | 1 - .../test/cases/symbols/AbstractSymbolTest.kt | 14 ++-- .../analysis/api/symbols/KtCallableSymbol.kt | 3 + .../analysis/api/symbols/KtClassLikeSymbol.kt | 9 ++- .../analysis/api/symbols/KtFileSymbol.kt | 4 +- .../api/symbols/KtFunctionLikeSymbol.kt | 6 ++ .../analysis/api/symbols/KtPackageSymbol.kt | 4 +- .../api/symbols/KtPropertyAccessorSymbol.kt | 6 +- .../kotlin/analysis/api/symbols/KtSymbol.kt | 4 +- .../api/symbols/KtVariableLikeSymbol.kt | 12 ++++ .../symbol/classes/SymbolLightClass.kt | 6 +- .../SymbolLightClassForClassOrObject.kt | 1 + .../symbol/classes/symbolLightClassUtils.kt | 66 ++++++++----------- .../fields/SymbolLightFieldForProperty.kt | 26 ++++++-- .../methods/SymbolLightAccessorMethod.kt | 46 +++++++++---- .../symbol/methods/SymbolLightConstructor.kt | 4 +- .../symbol/methods/SymbolLightMethod.kt | 35 +++++++--- .../symbol/methods/SymbolLightSimpleMethod.kt | 4 +- .../symbol/parameters/SymbolLightParameter.kt | 6 +- .../parameters/SymbolLightParameterCommon.kt | 21 ++++-- .../parameters/SymbolLightSetterParameter.kt | 4 +- .../parameters/SymbolLightTypeParameter.kt | 9 ++- .../SymbolLightTypeParameterList.kt | 3 +- .../light/classes/symbol/symbolLightUtils.kt | 2 +- 87 files changed, 452 insertions(+), 217 deletions(-) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KtFe10FileSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KtFe10FileSymbol.kt index 1041e3d3514..fbd11d1b1ad 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KtFe10FileSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KtFe10FileSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10AnnotatedSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer @@ -30,8 +31,9 @@ internal class KtFe10FileSymbol( override val origin: KtSymbolOrigin get() = withValidityAssertion { if (file.isCompiled) KtSymbolOrigin.LIBRARY else KtSymbolOrigin.SOURCE } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean { diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KtFe10PackageSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KtFe10PackageSymbol.kt index a5ae7d297a7..1586f9100cb 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KtFe10PackageSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/KtFe10PackageSymbol.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2021 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. */ @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiElement import com.intellij.psi.util.PsiUtilCore +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10Symbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10PackageSymbolPointer @@ -30,8 +31,9 @@ internal class KtFe10PackageSymbol( JavaPsiFacade.getInstance(project).findPackage(fqName.asString()) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtFe10PackageSymbolPointer(fqName) + KtFe10PackageSymbolPointer(fqName) } override val origin: KtSymbolOrigin diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescAnonymousFunctionSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescAnonymousFunctionSymbol.kt index 3293785e0ea..780985dc0dd 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescAnonymousFunctionSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescAnonymousFunctionSymbol.kt @@ -5,11 +5,12 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode -import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KtAnonymousFunctionSymbol @@ -44,8 +45,9 @@ internal class KtFe10DescAnonymousFunctionSymbol( override val contextReceivers: List get() = withValidityAssertion { descriptor.createContextReceivers(analysisContext) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescAnonymousObjectSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescAnonymousObjectSymbol.kt index bad3b15c5f3..86189aa6300 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescAnonymousObjectSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescAnonymousObjectSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.KtFe10DescMemberSymbol @@ -25,8 +26,9 @@ internal class KtFe10DescAnonymousObjectSymbol( override val superTypes: List get() = withValidityAssertion { descriptor.typeConstructor.supertypes.map { it.toKtType(analysisContext) } } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescConstructorSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescConstructorSymbol.kt index 031d258a654..2ab034bcf9f 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescConstructorSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescConstructorSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* @@ -48,10 +49,10 @@ internal class KtFe10DescConstructorSymbol( } } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - val pointerByPsi = KtPsiBasedSymbolPointer.createForSymbolFromSource(this) - if (pointerByPsi != null) { - return pointerByPsi + KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { + return it } val callableId = descriptor.callableIdIfNotLocal diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertyGetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertyGetterSymbol.kt index 5cb5bc7a9e0..b816ee07456 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertyGetterSymbol.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10Symbol @@ -72,10 +73,9 @@ class KtFe10DescDefaultPropertyGetterSymbol( override val annotationsList: KtAnnotationsList get() = withValidityAssertion { KtEmptyAnnotationsList(token) } - override fun createPointer(): KtSymbolPointer { - withValidityAssertion { - return KtFe10NeverRestoringSymbolPointer() - } + context(KtAnalysisSession) + override fun createPointer(): KtSymbolPointer = withValidityAssertion { + KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertySetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertySetterSymbol.kt index 0ebfdc9fbf5..c9381d9a10a 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertySetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertySetterSymbol.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10Symbol @@ -79,10 +80,9 @@ internal class KtFe10DescDefaultPropertySetterSymbol( override val annotationsList: KtAnnotationsList get() = withValidityAssertion { KtEmptyAnnotationsList(token) } - override fun createPointer(): KtSymbolPointer { - withValidityAssertion { - return KtFe10NeverRestoringSymbolPointer() - } + context(KtAnalysisSession) + override fun createPointer(): KtSymbolPointer = withValidityAssertion { + KtFe10NeverRestoringSymbolPointer() } class DefaultKtValueParameterSymbol( @@ -122,10 +122,9 @@ internal class KtFe10DescDefaultPropertySetterSymbol( override val annotationsList: KtAnnotationsList get() = withValidityAssertion { KtEmptyAnnotationsList(token) } - override fun createPointer(): KtSymbolPointer { - withValidityAssertion { - return KtFe10NeverRestoringSymbolPointer() - } + context(KtAnalysisSession) + override fun createPointer(): KtSymbolPointer = withValidityAssertion { + KtFe10NeverRestoringSymbolPointer() } } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescEnumEntrySymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescEnumEntrySymbol.kt index 684e54ac9ab..e6b8baa2f95 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescEnumEntrySymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescEnumEntrySymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.KtFe10DescMemberSymbol @@ -13,11 +14,11 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.bas import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10DescEnumEntrySymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KtEnumEntrySymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KtType -import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.ClassId @@ -49,10 +50,10 @@ internal class KtFe10DescEnumEntrySymbol( override val name: Name get() = withValidityAssertion { descriptor.name } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - val pointerByPsi = KtPsiBasedSymbolPointer.createForSymbolFromSource(this) - if (pointerByPsi != null) { - return pointerByPsi + KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { + return it } val enumClassId = enumDescriptor.classId diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescFunctionSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescFunctionSymbol.kt index 46555d67ea6..e894f6eb87a 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescFunctionSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescFunctionSymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -88,10 +89,10 @@ internal class KtFe10DescFunctionSymbol private constructor( override val typeParameters: List get() = withValidityAssertion { descriptor.typeParameters.map { KtFe10DescTypeParameterSymbol(it, analysisContext) } } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - val pointerByPsi = KtPsiBasedSymbolPointer.createForSymbolFromSource(this) - if (pointerByPsi != null) { - return pointerByPsi + KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { + return it } val callableId = descriptor.callableIdIfNotLocal diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescJavaFieldSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescJavaFieldSymbol.kt index 59504398883..f813fbbb19b 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescJavaFieldSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescJavaFieldSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.KtFe10DescMemberSymbol @@ -41,8 +42,9 @@ internal class KtFe10DescJavaFieldSymbol( override val returnType: KtType get() = withValidityAssertion { descriptor.returnType.toKtType(analysisContext) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescKotlinPropertySymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescKotlinPropertySymbol.kt index c8bdba4958f..5250cb0ace8 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescKotlinPropertySymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescKotlinPropertySymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtInitializerValue import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext @@ -107,8 +108,9 @@ internal class KtFe10DescKotlinPropertySymbol( override val isDelegatedProperty: Boolean get() = withValidityAssertion { descriptor.isDelegated } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescLocalVariableSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescLocalVariableSymbol.kt index 6f698bc2e3e..7ba25b1c445 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescLocalVariableSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescLocalVariableSymbol.kt @@ -1,22 +1,23 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.KtFe10DescSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KtLocalVariableSymbol import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KtType -import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor import org.jetbrains.kotlin.name.Name @@ -36,8 +37,9 @@ internal class KtFe10DescLocalVariableSymbol( override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.LOCAL } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescNamedClassOrObjectSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescNamedClassOrObjectSymbol.kt index fc4119071f3..226ba300ae7 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescNamedClassOrObjectSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescNamedClassOrObjectSymbol.kt @@ -1,11 +1,12 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -83,10 +84,10 @@ internal class KtFe10DescNamedClassOrObjectSymbol( override val typeParameters: List get() = withValidityAssertion { descriptor.declaredTypeParameters.map { KtFe10DescTypeParameterSymbol(it, analysisContext) } } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - val pointerByPsi = KtPsiBasedSymbolPointer.createForSymbolFromSource(this) - if (pointerByPsi != null) { - return pointerByPsi + KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { + return it } val classId = descriptor.classId diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescPropertyGetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescPropertyGetterSymbol.kt index 9465e1542cd..619eaefd921 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescPropertyGetterSymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* @@ -53,8 +54,9 @@ internal class KtFe10DescPropertyGetterSymbol( override val receiverParameter: KtReceiverParameterSymbol? get() = withValidityAssertion { descriptor.extensionReceiverParameter?.toKtReceiverParameterSymbol(analysisContext) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescPropertySetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescPropertySetterSymbol.kt index e31790fc07a..17b01beb327 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescPropertySetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescPropertySetterSymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* @@ -55,10 +56,9 @@ internal class KtFe10DescPropertySetterSymbol( override val receiverParameter: KtReceiverParameterSymbol? get() = withValidityAssertion { descriptor.extensionReceiverParameter?.toKtReceiverParameterSymbol(analysisContext) } - override fun createPointer(): KtSymbolPointer { - withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() - } + context(KtAnalysisSession) + override fun createPointer(): KtSymbolPointer = withValidityAssertion { + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSamConstructorSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSamConstructorSymbol.kt index 43ece84a587..ac2fe189ac0 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSamConstructorSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSamConstructorSymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -61,10 +62,10 @@ internal class KtFe10DescSamConstructorSymbol( get() = withValidityAssertion { descriptor.typeParameters.map { KtFe10DescTypeParameterSymbol(it, analysisContext) } } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - val pointerByPsi = KtPsiBasedSymbolPointer.createForSymbolFromSource(this) - if (pointerByPsi != null) { - return pointerByPsi + KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { + return it } val classId = descriptor.baseDescriptorForSynthetic.classId diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSyntheticFieldSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSyntheticFieldSymbol.kt index ed9ce988883..bf175acaab0 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSyntheticFieldSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSyntheticFieldSymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10AnnotatedSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10Symbol @@ -44,6 +45,7 @@ internal class KtFe10DescSyntheticFieldSymbol( override val returnType: KtType get() = withValidityAssertion { descriptor.propertyDescriptor.type.toKtType(analysisContext) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { val accessorPsi = descriptor.containingDeclaration.toSourceElement.getPsi() if (accessorPsi is KtPropertyAccessor) { diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSyntheticJavaPropertySymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSyntheticJavaPropertySymbol.kt index 23dd66595bb..6849d5235d7 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSyntheticJavaPropertySymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSyntheticJavaPropertySymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtInitializerValue import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -90,8 +91,9 @@ internal class KtFe10DescSyntheticJavaPropertySymbol( override val typeParameters: List get() = withValidityAssertion { descriptor.typeParameters.map { it.toKtTypeParameter(analysisContext) } } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSyntheticJavaPropertySymbolForOverride.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSyntheticJavaPropertySymbolForOverride.kt index 7dfdb0e465e..738caff943e 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSyntheticJavaPropertySymbolForOverride.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescSyntheticJavaPropertySymbolForOverride.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtInitializerValue import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -89,8 +90,9 @@ internal class KtFe10DescSyntheticJavaPropertySymbolForOverride( override val typeParameters: List get() = withValidityAssertion { descriptor.typeParameters.map { it.toKtTypeParameter(analysisContext) } } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescTypeAliasSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescTypeAliasSymbol.kt index 405c1476231..b2203cb6b53 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescTypeAliasSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescTypeAliasSymbol.kt @@ -1,26 +1,23 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* -import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.KtFe10DescSymbol -import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.classId -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.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer +import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KtTypeAliasSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol +import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KtType -import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion -import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.name.ClassId @@ -48,8 +45,9 @@ internal class KtFe10DescTypeAliasSymbol( override val classIdIfNonLocal: ClassId? get() = withValidityAssertion { descriptor.classId } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescTypeParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescTypeParameterSymbol.kt index b907b8759a5..16c78f73d33 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescTypeParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescTypeParameterSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.KtFe10DescSymbol @@ -37,8 +38,9 @@ internal class KtFe10DescTypeParameterSymbol( override val isReified: Boolean get() = withValidityAssertion { descriptor.isReified } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescValueParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescValueParameterSymbol.kt index e3bfbbcbcdf..3fe399c3852 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescValueParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescValueParameterSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.KtFe10DescSymbol @@ -67,8 +68,9 @@ internal class KtFe10DescValueParameterSymbol( return (descriptor.varargElementType ?: descriptor.type).toKtType(analysisContext) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10ReceiverParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10ReceiverParameterSymbol.kt index 6a7976cb3b4..4ad38ca6c1d 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10ReceiverParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10ReceiverParameterSymbol.kt @@ -5,15 +5,18 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.KtFe10DescSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol +import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor @@ -31,8 +34,9 @@ class KtFe10ReceiverParameterSymbol( override val owningCallableSymbol: KtCallableSymbol get() = withValidityAssertion { _descriptor.containingDeclaration.toKtSymbol(analysisContext) as KtCallableSymbol } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - TODO("Not yet implemented") + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiAnonymousFunctionSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiAnonymousFunctionSymbol.kt index d5cb2aa0755..b35d3e4591f 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiAnonymousFunctionSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiAnonymousFunctionSymbol.kt @@ -5,11 +5,11 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode -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.toKtReceiverParameterSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType @@ -65,8 +65,9 @@ internal class KtFe10PsiAnonymousFunctionSymbol( override val isExtension: Boolean get() = withValidityAssertion { psi.isExtensionDeclaration() } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiAnonymousObjectSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiAnonymousObjectSymbol.kt index b01d5cf46f6..1e4617abe0a 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiAnonymousObjectSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiAnonymousObjectSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -13,11 +14,11 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo 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.utils.cached +import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KtAnonymousObjectSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KtType -import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.psi.KtObjectDeclaration import org.jetbrains.kotlin.resolve.BindingContext @@ -36,8 +37,9 @@ internal class KtFe10PsiAnonymousObjectSymbol( descriptor?.typeConstructor?.supertypes?.map { it.toKtType(analysisContext) } ?: emptyList() } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiClassInitializerSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiClassInitializerSymbol.kt index 147267ed68e..48f70520527 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiClassInitializerSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiClassInitializerSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10Symbol @@ -37,8 +38,9 @@ class KtFe10PsiClassInitializerSymbol( override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.CLASS_MEMBER } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override val typeParameters: List get() = withValidityAssertion { emptyList() } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiConstructorSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiConstructorSymbol.kt index 02f165a8010..a09c796ba66 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiConstructorSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiConstructorSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -16,13 +17,13 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KtFe1 import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.createErrorType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.ktVisibility import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached +import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KtType -import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.descriptors.ConstructorDescriptor import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility @@ -63,8 +64,9 @@ internal class KtFe10PsiConstructorSymbol( override val typeParameters: List get() = withValidityAssertion { psi.typeParameters.map { KtFe10PsiTypeParameterSymbol(it, analysisContext) } } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertyGetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertyGetterSymbol.kt index 2b44194b896..547ce806029 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertyGetterSymbol.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade @@ -97,6 +98,7 @@ internal class KtFe10PsiDefaultPropertyGetterSymbol( descriptor?.let { KtFe10AnnotationsList.create(it.annotations, token) } ?: KtEmptyAnnotationsList(token) } + context(KtAnalysisSession) @OptIn(KtAnalysisApiInternals::class) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromPsi(propertyPsi)?.let { diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertySetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertySetterSymbol.kt index 068d4b878cf..445051e61cd 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertySetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertySetterSymbol.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade @@ -105,6 +106,7 @@ internal class KtFe10PsiDefaultPropertySetterSymbol( descriptor?.let { KtFe10AnnotationsList.create(it.annotations, token) } ?: KtEmptyAnnotationsList(token) } + context(KtAnalysisSession) @OptIn(KtAnalysisApiInternals::class) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromPsi(propertyPsi)?.let { @@ -153,6 +155,7 @@ internal class KtFe10PsiDefaultPropertySetterSymbol( descriptor?.let { KtFe10AnnotationsList.create(it.annotations, token) } ?: KtEmptyAnnotationsList(token) } + context(KtAnalysisSession) @OptIn(KtAnalysisApiInternals::class) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromPsi(propertyPsi)?.let { diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultSetterParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultSetterParameterSymbol.kt index 97bf7e073b8..bcf95cb8269 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultSetterParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultSetterParameterSymbol.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode @@ -69,6 +70,7 @@ internal class KtFe10PsiDefaultSetterParameterSymbol( override val annotationsList: KtAnnotationsList get() = withValidityAssertion { KtEmptyAnnotationsList(token) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromPsi(accessorPsi)?.let { symbolPointer -> symbolPointerDelegator(symbolPointer) { it.parameter } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiEnumEntrySymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiEnumEntrySymbol.kt index cc8aa56fff3..1b4746aebbb 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiEnumEntrySymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiEnumEntrySymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -60,8 +61,9 @@ internal class KtFe10PsiEnumEntrySymbol( override val name: Name get() = withValidityAssertion { psi.nameAsSafeName } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiFunctionSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiFunctionSymbol.kt index 9efb72740f3..751dd9d40f9 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiFunctionSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiFunctionSymbol.kt @@ -5,12 +5,13 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode -import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.* import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached @@ -110,8 +111,9 @@ internal class KtFe10PsiFunctionSymbol( override val visibility: Visibility get() = withValidityAssertion { psi.ktVisibility ?: descriptor?.ktVisibility ?: Visibilities.Public } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiKotlinPropertySymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiKotlinPropertySymbol.kt index 1f5f4282137..65d04920006 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiKotlinPropertySymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiKotlinPropertySymbol.kt @@ -5,13 +5,14 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession 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.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode -import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.* import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached @@ -133,8 +134,9 @@ internal class KtFe10PsiKotlinPropertySymbol( override val visibility: Visibility get() = withValidityAssertion { psi.ktVisibility ?: descriptor?.ktVisibility ?: Visibilities.Public } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLiteralAnonymousFunctionSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLiteralAnonymousFunctionSymbol.kt index eaa87544e84..458feab91ea 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLiteralAnonymousFunctionSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLiteralAnonymousFunctionSymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -72,8 +73,9 @@ internal class KtFe10PsiLiteralAnonymousFunctionSymbol( override val isExtension: Boolean get() = withValidityAssertion { psi.isExtensionDeclaration() } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLocalVariableSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLocalVariableSymbol.kt index c981a7f315d..71292dfddd6 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLocalVariableSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLocalVariableSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -46,8 +47,9 @@ internal class KtFe10PsiLocalVariableSymbol( override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.LOCAL } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLoopParameterLocalVariableSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLoopParameterLocalVariableSymbol.kt index b3f0848a2fe..bc509851542 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLoopParameterLocalVariableSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLoopParameterLocalVariableSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -46,8 +47,9 @@ internal class KtFe10PsiLoopParameterLocalVariableSymbol( override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.LOCAL } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiNamedClassOrObjectSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiNamedClassOrObjectSymbol.kt index c214e49ada5..761917a520d 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiNamedClassOrObjectSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiNamedClassOrObjectSymbol.kt @@ -1,20 +1,17 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode 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.ktModality -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.isEqualTo import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KtFe10PsiSymbol @@ -23,6 +20,7 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.ktSym import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.ktVisibility import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached import org.jetbrains.kotlin.analysis.api.impl.base.symbols.invalidEnumEntryAsClassKind +import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KtClassKind import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol @@ -30,7 +28,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.types.KtType -import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.name.ClassId @@ -118,8 +115,9 @@ internal class KtFe10PsiNamedClassOrObjectSymbol( override val visibility: Visibility get() = withValidityAssertion { psi.ktVisibility ?: descriptor?.ktVisibility ?: Visibilities.Public } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertyGetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertyGetterSymbol.kt index cce253e8422..e86a7371523 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertyGetterSymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -80,8 +81,9 @@ internal class KtFe10PsiPropertyGetterSymbol( descriptor?.extensionReceiverParameter?.toKtReceiverParameterSymbol(analysisContext) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertySetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertySetterSymbol.kt index f1eb4fe0b69..b844c05ac89 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertySetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertySetterSymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -91,11 +92,11 @@ internal class KtFe10PsiPropertySetterSymbol( } } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } - override fun equals(other: Any?): Boolean = isEqualTo(other) override fun hashCode(): Int = calculateHashCode() } \ No newline at end of file diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiTypeAliasSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiTypeAliasSymbol.kt index 895a7ecbf38..d0f69f01560 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiTypeAliasSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiTypeAliasSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility @@ -58,8 +59,9 @@ internal class KtFe10PsiTypeAliasSymbol( override val symbolKind: KtSymbolKind get() = withValidityAssertion { psi.ktSymbolKind } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiTypeParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiTypeParameterSymbol.kt index 22bfb964246..9fd8ef84bc7 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiTypeParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiTypeParameterSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType @@ -38,7 +39,9 @@ internal class KtFe10PsiTypeParameterSymbol( get() = withValidityAssertion { psi.variance } override val upperBounds: List - get() = withValidityAssertion { descriptor?.upperBounds?.filterNot { it.isNullableAny() }?.map { it.toKtType(analysisContext) } ?: emptyList() } + get() = withValidityAssertion { + descriptor?.upperBounds?.filterNot { it.isNullableAny() }?.map { it.toKtType(analysisContext) } ?: emptyList() + } override val isReified: Boolean get() = withValidityAssertion { psi.hasModifier(KtTokens.REIFIED_KEYWORD) } @@ -46,8 +49,9 @@ internal class KtFe10PsiTypeParameterSymbol( override val name: Name get() = withValidityAssertion { psi.nameAsSafeName } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiValueParameterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiValueParameterSymbol.kt index 6d1adf78201..2ab99c50fb7 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiValueParameterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiValueParameterSymbol.kt @@ -1,10 +1,11 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.symbols.calculateHashCode @@ -55,7 +56,7 @@ internal class KtFe10PsiValueParameterSymbol( get() = withValidityAssertion { psi.hasModifier(KtTokens.CROSSINLINE_KEYWORD) } override val isNoinline: Boolean - get() = withValidityAssertion { psi.hasModifier(KtTokens.NOINLINE_KEYWORD) } + get() = withValidityAssertion { psi.hasModifier(KtTokens.NOINLINE_KEYWORD) } override val isImplicitLambdaParameter: Boolean get() = withValidityAssertion { false } @@ -69,8 +70,9 @@ internal class KtFe10PsiValueParameterSymbol( override val name: Name get() = withValidityAssertion { psi.nameAsSafeName } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { - return KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() + KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFe10NeverRestoringSymbolPointer() } override fun equals(other: Any?): Boolean = isEqualTo(other) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirAnonymousFunctionSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirAnonymousFunctionSymbol.kt index 2d99c9c7d43..7ee6a35366a 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirAnonymousFunctionSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirAnonymousFunctionSymbol.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder @@ -54,6 +55,7 @@ internal class KtFirAnonymousFunctionSymbol( override val isExtension: Boolean get() = withValidityAssertion { firSymbol.isExtension } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException(this::class) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirAnonymousObjectSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirAnonymousObjectSymbol.kt index cc9cbd51715..78790d9bb0d 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirAnonymousObjectSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirAnonymousObjectSymbol.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.KtFakeSourceElementKind +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession 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 @@ -37,6 +38,7 @@ internal class KtFirAnonymousObjectSymbol( override val superTypes: List by cached { firSymbol.superTypesList(builder) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } if (firSymbol.source?.kind == KtFakeSourceElementKind.EnumInitializer) { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirBackingFieldSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirBackingFieldSymbol.kt index e8fee813b23..bb3434a78ea 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirBackingFieldSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirBackingFieldSymbol.kt @@ -1,10 +1,11 @@ /* - * 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. */ package org.jetbrains.kotlin.analysis.api.fir.symbols +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration @@ -39,6 +40,7 @@ internal class KtFirBackingFieldSymbol( builder.variableLikeBuilder.buildPropertySymbol(firSymbol.propertySymbol) as KtKotlinPropertySymbol } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtFirBackingFieldSymbolPointer(owningProperty.createPointer()) } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirClassInitializerSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirClassInitializerSymbol.kt index 24ed0dc7998..b4acc46ae35 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirClassInitializerSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirClassInitializerSymbol.kt @@ -1,11 +1,12 @@ /* - * Copyright 2010-2021 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. */ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.utils.cached @@ -28,6 +29,7 @@ internal class KtFirClassInitializerSymbol( ) : KtClassInitializerSymbol(), KtFirSymbol { override val psi: PsiElement? by cached { firSymbol.findPsi() } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } TODO("Figure out how to create such a pointer. Should we give an index to class initializers?") diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirConstructorSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirConstructorSymbol.kt index 3acd2dd4bf7..2ee8965a7fc 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirConstructorSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirConstructorSymbol.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession 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 @@ -65,13 +66,18 @@ internal class KtFirConstructorSymbol( override val typeParameters by cached { firSymbol.createKtTypeParameters(builder) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } if (symbolKind == KtSymbolKind.LOCAL) { throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException("constructor") } - KtFirConstructorSymbolPointer(requireOwnerPointer(), isPrimary, FirCallableSignature.createSignature(firSymbol)) + KtFirConstructorSymbolPointer( + requireOwnerPointer(), + isPrimary, + FirCallableSignature.createSignature(firSymbol), + ) } override fun equals(other: Any?): Boolean = symbolEquals(other) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirEnumEntrySymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirEnumEntrySymbol.kt index 3f9761437ad..85f989c2b30 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirEnumEntrySymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirEnumEntrySymbol.kt @@ -1,11 +1,12 @@ /* - * 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. */ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration @@ -44,6 +45,7 @@ internal class KtFirEnumEntrySymbol( override val callableIdIfNonLocal: CallableId? get() = withValidityAssertion { firSymbol.getCallableIdIfNonLocal() } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this) ?: KtFirEnumEntrySymbolPointer(requireOwnerPointer(), firSymbol.name) } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirFileSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirFileSymbol.kt index 75bfac28939..23d741a6133 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirFileSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirFileSymbol.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.utils.cached @@ -25,12 +26,19 @@ internal class KtFirFileSymbol( ) : KtFileSymbol(), KtSymbolWithDeclarations, KtFirSymbol { override val psi: PsiElement? by cached { firSymbol.findPsi() } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } TODO("Creating pointers for files from library is not supported yet") } - override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) } + override val annotationsList by cached { + KtFirAnnotationListForDeclaration.create( + firSymbol, + firResolveSession.useSiteFirSession, + token, + ) + } override fun equals(other: Any?): Boolean = symbolEquals(other) override fun hashCode(): Int = symbolHashCode() diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirFunctionSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirFunctionSymbol.kt index d6ec57f4b4d..a660918b5df 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirFunctionSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirFunctionSymbol.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession 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 @@ -92,6 +93,7 @@ internal class KtFirFunctionSymbol( override val modality: Modality get() = withValidityAssertion { firSymbol.modalityOrFinal } override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirJavaFieldSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirJavaFieldSymbol.kt index 4a2df4316e8..8506ae2c045 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirJavaFieldSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirJavaFieldSymbol.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration @@ -52,6 +53,7 @@ internal class KtFirJavaFieldSymbol( override val isStatic: Boolean get() = withValidityAssertion { firSymbol.isStatic } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtFirJavaFieldSymbolPointer(requireOwnerPointer(), name) } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirKotlinPropertySymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirKotlinPropertySymbol.kt index 4436d2c7027..f8a5e14b642 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirKotlinPropertySymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirKotlinPropertySymbol.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.KtFakeSourceElementKind +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtInitializerValue import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder @@ -124,6 +125,7 @@ internal class KtFirKotlinPropertySymbol( override val hasGetter: Boolean get() = withValidityAssertion { firSymbol.getterSymbol != null } override val hasSetter: Boolean get() = withValidityAssertion { firSymbol.setterSymbol != null } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { psiPointer -> return symbolPointerDelegator(psiPointer) { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirLocalVariableSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirLocalVariableSymbol.kt index 441873d193b..597b34a4acc 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirLocalVariableSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirLocalVariableSymbol.kt @@ -1,24 +1,25 @@ /* - * 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. */ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList 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.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.KtLocalVariableSymbol 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.lifetime.KtLifetimeToken import org.jetbrains.kotlin.analysis.api.types.KtType -import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.name.Name @@ -47,6 +48,7 @@ internal class KtFirLocalVariableSymbol( override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.LOCAL } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException(name.asString()) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirNamedClassOrObjectSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirNamedClassOrObjectSymbol.kt index b22454055d2..ea980687490 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirNamedClassOrObjectSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirNamedClassOrObjectSymbol.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession 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 @@ -67,7 +68,13 @@ internal class KtFirNamedClassOrObjectSymbol( } } - override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) } + override val annotationsList by cached { + KtFirAnnotationListForDeclaration.create( + firSymbol, + firResolveSession.useSiteFirSession, + token, + ) + } override val isInner: Boolean get() = withValidityAssertion { firSymbol.isInner } override val isData: Boolean get() = withValidityAssertion { firSymbol.isData } @@ -102,6 +109,7 @@ internal class KtFirNamedClassOrObjectSymbol( override val symbolKind: KtSymbolKind get() = withValidityAssertion { getSymbolKind(firResolveSession) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPackageSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPackageSymbol.kt index df563f41583..3740bd4f927 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPackageSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPackageSymbol.kt @@ -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,15 +11,16 @@ import com.intellij.psi.PsiElement import com.intellij.psi.PsiManager import com.intellij.psi.impl.file.PsiPackageImpl import com.intellij.psi.search.GlobalSearchScope -import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession import org.jetbrains.kotlin.analysis.api.fir.utils.cached +import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner +import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken +import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.KtPackageSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.pointers.symbolPointer -import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken -import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.providers.createPackageProvider import org.jetbrains.kotlin.name.FqName @@ -36,6 +37,7 @@ class KtFirPackageSymbol( override val origin: KtSymbolOrigin get() = withValidityAssertion { KtSymbolOrigin.SOURCE } // TODO + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { symbolPointer { session -> check(session is KtFirAnalysisSession) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPropertyGetterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPropertyGetterSymbol.kt index 4bdc066ac52..7ed2d755603 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPropertyGetterSymbol.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession 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 @@ -83,6 +84,7 @@ internal class KtFirPropertyGetterSymbol( override val hasStableParameterNames: Boolean get() = withValidityAssertion { true } + context(KtAnalysisSession) @OptIn(KtAnalysisApiInternals::class) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPropertySetterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPropertySetterSymbol.kt index bed29f2e605..dd3e780cf81 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPropertySetterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirPropertySetterSymbol.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession 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 @@ -100,6 +101,7 @@ internal class KtFirPropertySetterSymbol( override val hasStableParameterNames: Boolean get() = withValidityAssertion { true } + context(KtAnalysisSession) @OptIn(KtAnalysisApiInternals::class) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirReceiverParameterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirReceiverParameterSymbol.kt index e6381dd3331..a89bc9634db 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirReceiverParameterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirReceiverParameterSymbol.kt @@ -6,13 +6,12 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.analysis.api.analyze +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForReceiverParameter import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirReceiverParameterSymbolPointer -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.lifetime.KtLifetimeOwner import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken @@ -45,6 +44,7 @@ internal class KtFirReceiverParameterSymbol( override val origin: KtSymbolOrigin = withValidityAssertion { firSymbol.fir.ktSymbolOrigin() } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtFirReceiverParameterSymbolPointer(owningCallableSymbol.createPointer()) } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSamConstructorSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSamConstructorSymbol.kt index ff1da2e83dd..8b7c2feedc0 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSamConstructorSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSamConstructorSymbol.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder @@ -67,6 +68,7 @@ internal class KtFirSamConstructorSymbol( override val typeParameters: List get() = withValidityAssertion { firSymbol.createKtTypeParameters(builder) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { val callableId = firSymbol.callableId return KtFirSamConstructorSymbolPointer(ClassId(callableId.packageName, callableId.callableName)) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSyntheticJavaPropertySymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSyntheticJavaPropertySymbol.kt index 7965b97731e..5c723e0e315 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSyntheticJavaPropertySymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSyntheticJavaPropertySymbol.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtInitializerValue import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration @@ -56,7 +57,13 @@ internal class KtFirSyntheticJavaPropertySymbol( override val modality: Modality get() = withValidityAssertion { firSymbol.modality ?: firSymbol.invalidModalityError() } override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility } - override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) } + override val annotationsList by cached { + KtFirAnnotationListForDeclaration.create( + firSymbol, + firResolveSession.useSiteFirSession, + token + ) + } override val callableIdIfNonLocal: CallableId? get() = withValidityAssertion { firSymbol.getCallableIdIfNonLocal() } @@ -88,6 +95,7 @@ internal class KtFirSyntheticJavaPropertySymbol( override val origin: KtSymbolOrigin get() = withValidityAssertion { KtSymbolOrigin.JAVA_SYNTHETIC_PROPERTY } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtFirJavaSyntheticPropertySymbolPointer(requireOwnerPointer(), name) } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeAliasSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeAliasSymbol.kt index 61c8d9fc3d7..14ec6014633 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeAliasSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeAliasSymbol.kt @@ -1,11 +1,12 @@ /* - * 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. */ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration @@ -58,8 +59,10 @@ internal class KtFirTypeAliasSymbol( override val symbolKind: KtSymbolKind get() = withValidityAssertion { getSymbolKind(firResolveSession) } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } + when (val symbolKind = symbolKind) { KtSymbolKind.LOCAL -> throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException(classIdIfNonLocal?.asString() ?: name.asString()) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeParameterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeParameterSymbol.kt index af359c91cd8..2afbdda3651 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeParameterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeParameterSymbol.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.analysis.api.analyze +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration @@ -52,6 +52,7 @@ internal class KtFirTypeParameterSymbol( override val variance: Variance get() = withValidityAssertion { firSymbol.variance } override val isReified: Boolean get() = withValidityAssertion { firSymbol.isReified } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirValueParameterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirValueParameterSymbol.kt index ce4180c5634..5a30ed5da94 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirValueParameterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirValueParameterSymbol.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.KtFakeSourceElementKind +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.analyze import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration @@ -82,6 +83,7 @@ internal class KtFirValueParameterSymbol( ktPropertySymbol } + context(KtAnalysisSession) override fun createPointer(): KtSymbolPointer = withValidityAssertion { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KtFirMemberSymbolPointer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KtFirMemberSymbolPointer.kt index caac5300460..a56b6010376 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KtFirMemberSymbolPointer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/KtFirMemberSymbolPointer.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.api.analyze import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirSymbol import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KtClassOrObjectSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolTest.kt index 0babf0078c2..74de9c4d18e 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolTest.kt @@ -60,17 +60,17 @@ abstract class AbstractSymbolTest : AbstractAnalysisApiSingleFileTest() { } } - fun KtSymbol.safePointer(): PointerWrapper? { - val regularPointer = runCatching { - KtPsiBasedSymbolPointer.withDisabledPsiBasedPointers(disable = false, action = ::createPointer) + fun KtAnalysisSession.safePointer(ktSymbol: KtSymbol): PointerWrapper? { + val regularPointer = ktSymbol.runCatching { + KtPsiBasedSymbolPointer.withDisabledPsiBasedPointers(disable = false) { ktSymbol.createPointer() } }.let { if (directiveToIgnoreSymbolRestore == null) it.getOrThrow() else it.getOrNull() } ?: return null val nonPsiPointer = kotlin.runCatching { - if (this is KtFileSymbol) return@runCatching null + if (ktSymbol is KtFileSymbol) return@runCatching null - KtPsiBasedSymbolPointer.withDisabledPsiBasedPointers(disable = true, action = ::createPointer) + KtPsiBasedSymbolPointer.withDisabledPsiBasedPointers(disable = true) { ktSymbol.createPointer() } } return PointerWrapper( @@ -96,7 +96,7 @@ abstract class AbstractSymbolTest : AbstractAnalysisApiSingleFileTest() { .distinctBy { it.first } .map { (symbol, shouldBeRendered) -> PointerWithRenderedSymbol( - pointer = symbol.safePointer(), + pointer = safePointer(symbol), rendered = renderSymbolForComparison(symbol), shouldBeRendered = shouldBeRendered, ) @@ -105,7 +105,7 @@ abstract class AbstractSymbolTest : AbstractAnalysisApiSingleFileTest() { val pointerWithPrettyRenderedSymbol = symbolForPrettyRendering.map { symbol -> PointerWithRenderedSymbol( - symbol.safePointer(), + safePointer(symbol), when (symbol) { is KtDeclarationSymbol -> symbol.render(prettyRenderOptions) is KtFileSymbol -> prettyPrint { diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtCallableSymbol.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtCallableSymbol.kt index d18435ae555..120796faceb 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtCallableSymbol.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtCallableSymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.symbols +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.base.KtContextReceiversOwner import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotatedSymbol import org.jetbrains.kotlin.analysis.api.symbols.markers.KtPossibleMemberSymbol @@ -20,6 +21,7 @@ public sealed class KtCallableSymbol : KtSymbolWithKind, KtPossibleMemberSymbol, public abstract val receiverParameter: KtReceiverParameterSymbol? public abstract val isExtension: Boolean + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -39,5 +41,6 @@ public abstract class KtReceiverParameterSymbol : KtAnnotatedSymbol { */ public abstract val owningCallableSymbol: KtCallableSymbol + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } \ No newline at end of file diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtClassLikeSymbol.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtClassLikeSymbol.kt index 9b1b37893b4..6068a4c4c8a 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtClassLikeSymbol.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtClassLikeSymbol.kt @@ -1,10 +1,11 @@ /* - * 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. */ package org.jetbrains.kotlin.analysis.api.symbols +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.base.KtContextReceiversOwner import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.markers.* @@ -21,6 +22,7 @@ public val KtClassifierSymbol.nameOrAnonymous: Name get() = name ?: SpecialNames.ANONYMOUS public abstract class KtTypeParameterSymbol : KtClassifierSymbol(), KtNamedSymbol { + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer final override val typeParameters: List @@ -34,6 +36,7 @@ public abstract class KtTypeParameterSymbol : KtClassifierSymbol(), KtNamedSymbo public sealed class KtClassLikeSymbol : KtClassifierSymbol(), KtSymbolWithKind, KtPossibleMemberSymbol { public abstract val classIdIfNonLocal: ClassId? + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -47,6 +50,7 @@ public abstract class KtTypeAliasSymbol : KtClassLikeSymbol(), */ public abstract val expandedType: KtType + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -55,6 +59,7 @@ public sealed class KtClassOrObjectSymbol : KtClassLikeSymbol(), KtSymbolWithMem public abstract val classKind: KtClassKind public abstract val superTypes: List + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -67,6 +72,7 @@ public abstract class KtAnonymousObjectSymbol : KtClassOrObjectSymbol() { final override val typeParameters: List get() = withValidityAssertion { emptyList() } + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -85,6 +91,7 @@ public abstract class KtNamedClassOrObjectSymbol : KtClassOrObjectSymbol(), public abstract val companionObject: KtNamedClassOrObjectSymbol? + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtFileSymbol.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtFileSymbol.kt index 725da3bf9a5..c0af712cd22 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtFileSymbol.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtFileSymbol.kt @@ -1,13 +1,15 @@ /* - * 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. */ package org.jetbrains.kotlin.analysis.api.symbols +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotatedSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer public abstract class KtFileSymbol : KtAnnotatedSymbol { + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } \ No newline at end of file diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtFunctionLikeSymbol.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtFunctionLikeSymbol.kt index 24c9309d0ad..234fb2d2a74 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtFunctionLikeSymbol.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtFunctionLikeSymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.symbols +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.markers.* @@ -22,6 +23,7 @@ public sealed class KtFunctionLikeSymbol : KtCallableSymbol(), KtSymbolWithKind */ public abstract val hasStableParameterNames: Boolean + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -32,12 +34,14 @@ public abstract class KtAnonymousFunctionSymbol : KtFunctionLikeSymbol() { final override val typeParameters: List get() = withValidityAssertion { emptyList() } + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } public abstract class KtSamConstructorSymbol : KtFunctionLikeSymbol(), KtNamedSymbol { final override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.SAM_CONSTRUCTOR } + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -60,6 +64,7 @@ public abstract class KtFunctionSymbol : KtFunctionLikeSymbol(), */ public abstract val isBuiltinFunctionInvoke: Boolean + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -76,5 +81,6 @@ public abstract class KtConstructorSymbol : KtFunctionLikeSymbol(), final override val receiverParameter: KtReceiverParameterSymbol? get() = withValidityAssertion { null } final override val contextReceivers: List get() = withValidityAssertion { emptyList() } + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtPackageSymbol.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtPackageSymbol.kt index 0bdd0e00466..9cd42946fe7 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtPackageSymbol.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtPackageSymbol.kt @@ -1,15 +1,17 @@ /* - * 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. */ package org.jetbrains.kotlin.analysis.api.symbols +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.name.FqName public abstract class KtPackageSymbol : KtSymbol { public abstract val fqName: FqName + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } \ No newline at end of file diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtPropertyAccessorSymbol.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtPropertyAccessorSymbol.kt index 9b71e38941f..299270bf855 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtPropertyAccessorSymbol.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtPropertyAccessorSymbol.kt @@ -1,10 +1,11 @@ /* - * 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. */ package org.jetbrains.kotlin.analysis.api.symbols +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.api.symbols.markers.* @@ -30,15 +31,18 @@ public sealed class KtPropertyAccessorSymbol : KtFunctionLikeSymbol(), final override val symbolKind: KtSymbolKind get() = withValidityAssertion { KtSymbolKind.ACCESSOR } + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } public abstract class KtPropertyGetterSymbol : KtPropertyAccessorSymbol() { + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } public abstract class KtPropertySetterSymbol : KtPropertyAccessorSymbol() { public abstract val parameter: KtValueParameterSymbol + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtSymbol.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtSymbol.kt index 0d84f56a94a..dedf8c49c31 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtSymbol.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtSymbol.kt @@ -1,11 +1,12 @@ /* - * 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. */ package org.jetbrains.kotlin.analysis.api.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer @@ -21,6 +22,7 @@ public interface KtSymbol : KtLifetimeOwner { */ public val psi: PsiElement? + context(KtAnalysisSession) public fun createPointer(): KtSymbolPointer } diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtVariableLikeSymbol.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtVariableLikeSymbol.kt index 4c7206473a7..0bbed677b36 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtVariableLikeSymbol.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtVariableLikeSymbol.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtConstantInitializerValue import org.jetbrains.kotlin.analysis.api.KtInitializerValue import org.jetbrains.kotlin.analysis.api.KtNonConstantInitializerValue @@ -20,6 +21,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtExpression public sealed class KtVariableLikeSymbol : KtCallableSymbol(), KtNamedSymbol, KtSymbolWithKind, KtPossibleMemberSymbol { + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -49,6 +51,7 @@ public abstract class KtBackingFieldSymbol : KtVariableLikeSymbol() { final override val typeParameters: List get() = withValidityAssertion { emptyList() } + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer public companion object { @@ -69,12 +72,15 @@ public abstract class KtEnumEntrySymbol : KtVariableLikeSymbol(), KtSymbolWithMe //todo reduntant, remove public abstract val containingEnumClassIdIfNonLocal: ClassId? + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } public sealed class KtVariableSymbol : KtVariableLikeSymbol() { public abstract val isVal: Boolean + + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -93,6 +99,7 @@ public abstract class KtJavaFieldSymbol : public abstract val isStatic: Boolean + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -126,6 +133,7 @@ public sealed class KtPropertySymbol : KtVariableSymbol(), */ public abstract val initializer: KtInitializerValue? + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -134,6 +142,7 @@ public abstract class KtKotlinPropertySymbol : KtPropertySymbol() { public abstract val isConst: Boolean + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -150,6 +159,7 @@ public abstract class KtSyntheticJavaPropertySymbol : KtPropertySymbol() { public abstract val javaGetterSymbol: KtFunctionSymbol public abstract val javaSetterSymbol: KtFunctionSymbol? + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -162,6 +172,7 @@ public abstract class KtLocalVariableSymbol : KtVariableSymbol(), KtSymbolWithKi final override val typeParameters: List get() = withValidityAssertion { emptyList() } + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer } @@ -200,6 +211,7 @@ public abstract class KtValueParameterSymbol : KtVariableLikeSymbol(), KtSymbolW */ public abstract val isImplicitLambdaParameter: Boolean + context(KtAnalysisSession) abstract override fun createPointer(): KtSymbolPointer /** diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClass.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClass.kt index 4f79ac7d4a0..b6966310c61 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClass.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClass.kt @@ -132,7 +132,7 @@ internal open class SymbolLightClass(classOrObject: KtClassOrObject, ktModule: K } } - context(KtAnalysisSession) + context(ktAnalysisSession@KtAnalysisSession) private fun addMethodsFromDataClass(result: MutableList, classOrObjectSymbol: KtNamedClassOrObjectSymbol) { if (!classOrObjectSymbol.isData) return @@ -141,6 +141,7 @@ internal open class SymbolLightClass(classOrObject: KtClassOrObject, ktModule: K val lightMemberOrigin = LightMemberOriginForDeclaration(classOrObject, JvmDeclarationOriginKind.OTHER) result.add( SymbolLightSimpleMethod( + ktAnalysisSession = this@ktAnalysisSession, ktFunctionSymbol, lightMemberOrigin, this, METHOD_INDEX_BASE, false, suppressStatic = false ) @@ -185,13 +186,14 @@ internal open class SymbolLightClass(classOrObject: KtClassOrObject, ktModule: K private val Name.isFromAny: Boolean get() = this == EQUALS || this == HASHCODE_NAME || this == TO_STRING - context(KtAnalysisSession) + context(ktAnalysisSession@KtAnalysisSession) private fun addDelegatesToInterfaceMethods(result: MutableList, classOrObjectSymbol: KtNamedClassOrObjectSymbol) { fun createDelegateMethod(ktFunctionSymbol: KtFunctionSymbol) { val kotlinOrigin = ktFunctionSymbol.psiSafe() ?: classOrObject val lightMemberOrigin = LightMemberOriginForDeclaration(kotlinOrigin, JvmDeclarationOriginKind.DELEGATION) result.add( SymbolLightSimpleMethod( + ktAnalysisSession = this@ktAnalysisSession, ktFunctionSymbol, lightMemberOrigin, this, diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt index 909adc0dd41..8c1b28d2404 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt @@ -161,6 +161,7 @@ abstract class SymbolLightClassForClassOrObject(protected val classOrObject: KtC } ?.mapTo(result) { SymbolLightFieldForProperty( + ktAnalysisSession = this, propertySymbol = it, fieldName = it.name.asString(), containingClass = this@SymbolLightClassForClassOrObject, diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt index 773a2029ef4..bc793083eb3 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt @@ -71,7 +71,7 @@ private fun lightClassForEnumEntry(ktEnumEntry: KtEnumEntry): KtLightClass? { return (targetField as? SymbolLightFieldForEnumEntry)?.initializingClass as? KtLightClass } -context(KtAnalysisSession) +context(ktAnalysisSession@KtAnalysisSession) internal fun SymbolLightClassForClassOrObject.createConstructors( declarations: Sequence, result: MutableList, @@ -87,6 +87,7 @@ internal fun SymbolLightClassForClassOrObject.createConstructors( result.add( SymbolLightConstructor( + ktAnalysisSession = this@ktAnalysisSession, constructorSymbol = constructor, lightMemberOrigin = null, containingClass = this@createConstructors, @@ -96,6 +97,7 @@ internal fun SymbolLightClassForClassOrObject.createConstructors( createJvmOverloadsIfNeeded(constructor, result) { methodIndex, argumentSkipMask -> SymbolLightConstructor( + ktAnalysisSession = this@ktAnalysisSession, constructorSymbol = constructor, lightMemberOrigin = null, containingClass = this@createConstructors, @@ -152,7 +154,7 @@ private fun SymbolLightClassForClassOrObject.noArgConstructor( methodIndex, ) -context(KtAnalysisSession) +context(ktAnalysisSession@KtAnalysisSession) internal fun SymbolLightClassBase.createMethods( declarations: Sequence, result: MutableList, @@ -161,7 +163,7 @@ internal fun SymbolLightClassBase.createMethods( ) { val (ctorProperties, regularMembers) = declarations.partition { it is KtPropertySymbol && it.isFromPrimaryConstructor } - fun handleDeclaration(declaration: KtCallableSymbol) { + fun KtAnalysisSession.handleDeclaration(declaration: KtCallableSymbol) { when (declaration) { is KtFunctionSymbol -> { // TODO: check if it has expect modifier @@ -170,6 +172,7 @@ internal fun SymbolLightClassBase.createMethods( result.add( SymbolLightSimpleMethod( + ktAnalysisSession = this, functionSymbol = declaration, lightMemberOrigin = null, containingClass = this@createMethods, @@ -181,6 +184,7 @@ internal fun SymbolLightClassBase.createMethods( createJvmOverloadsIfNeeded(declaration, result) { methodIndex, argumentSkipMask -> SymbolLightSimpleMethod( + ktAnalysisSession = this, functionSymbol = declaration, lightMemberOrigin = null, containingClass = this@createMethods, @@ -206,11 +210,11 @@ internal fun SymbolLightClassBase.createMethods( // Regular members regularMembers.forEach { - handleDeclaration(it) + this@ktAnalysisSession.handleDeclaration(it) } // Then, properties from the primary constructor parameters ctorProperties.forEach { - handleDeclaration(it) + this@ktAnalysisSession.handleDeclaration(it) } } @@ -232,7 +236,7 @@ private inline fun SymbolLightClassBase.createJvmOver } } -context(KtAnalysisSession) +context(ktAnalysisSession@KtAnalysisSession) internal fun SymbolLightClassBase.createPropertyAccessors( result: MutableList, declaration: KtPropertySymbol, @@ -257,8 +261,7 @@ internal fun SymbolLightClassBase.createPropertyAccessors( if (declaration.hasReifiedParameters) return false if (!hasBody && visibility.isPrivateOrPrivateToThis()) return false if (declaration.isHiddenOrSynthetic(siteTarget)) return false - if (isHiddenOrSynthetic()) return false - return true + return !isHiddenOrSynthetic() } val originalElement = declaration.sourcePsiSafe() @@ -267,54 +270,40 @@ internal fun SymbolLightClassBase.createPropertyAccessors( it.needToCreateAccessor(AnnotationUseSiteTarget.PROPERTY_GETTER) } - if (getter != null) { + fun createSymbolLightAccessorMethod(accessor: KtPropertyAccessorSymbol): SymbolLightAccessorMethod { val lightMemberOrigin = originalElement?.let { LightMemberOriginForDeclaration( originalElement = it, originKind = JvmDeclarationOriginKind.OTHER, - auxiliaryOriginalElement = getter.sourcePsiSafe() + auxiliaryOriginalElement = accessor.sourcePsiSafe() ) } - result.add( - SymbolLightAccessorMethod( - propertyAccessorSymbol = getter, - containingPropertySymbol = declaration, - lightMemberOrigin = lightMemberOrigin, - containingClass = this@createPropertyAccessors, - isTopLevel = isTopLevel, - suppressStatic = suppressStatic, - ) + return SymbolLightAccessorMethod( + ktAnalysisSession = this@ktAnalysisSession, + propertyAccessorSymbol = accessor, + containingPropertySymbol = declaration, + lightMemberOrigin = lightMemberOrigin, + containingClass = this@createPropertyAccessors, + isTopLevel = isTopLevel, + suppressStatic = suppressStatic, ) } + if (getter != null) { + result.add(createSymbolLightAccessorMethod(getter)) + } + val setter = declaration.setter?.takeIf { !isAnnotationType && it.needToCreateAccessor(AnnotationUseSiteTarget.PROPERTY_SETTER) } if (isMutable && setter != null) { - val lightMemberOrigin = originalElement?.let { - LightMemberOriginForDeclaration( - originalElement = it, - originKind = JvmDeclarationOriginKind.OTHER, - auxiliaryOriginalElement = setter.sourcePsiSafe() - ) - } - - result.add( - SymbolLightAccessorMethod( - propertyAccessorSymbol = setter, - containingPropertySymbol = declaration, - lightMemberOrigin = lightMemberOrigin, - containingClass = this@createPropertyAccessors, - isTopLevel = isTopLevel, - suppressStatic = suppressStatic, - ) - ) + result.add(createSymbolLightAccessorMethod(setter)) } } -context(KtAnalysisSession) +context(ktAnalysisSession@KtAnalysisSession) internal fun SymbolLightClassBase.createField( declaration: KtPropertySymbol, nameGenerator: SymbolLightField.FieldNameGenerator, @@ -348,6 +337,7 @@ internal fun SymbolLightClassBase.createField( result.add( SymbolLightFieldForProperty( + ktAnalysisSession = this@ktAnalysisSession, propertySymbol = declaration, fieldName = fieldName, containingClass = this, diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForProperty.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForProperty.kt index bcdc1051530..10899691b87 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForProperty.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForProperty.kt @@ -31,17 +31,35 @@ import org.jetbrains.kotlin.name.JvmNames.VOLATILE_ANNOTATION_CLASS_ID import org.jetbrains.kotlin.psi.KtCallableDeclaration import org.jetbrains.kotlin.psi.KtProperty -internal class SymbolLightFieldForProperty( - propertySymbol: KtPropertySymbol, +internal class SymbolLightFieldForProperty private constructor( + private val propertySymbolPointer: KtSymbolPointer, private val fieldName: String, containingClass: SymbolLightClassBase, lightMemberOrigin: LightMemberOrigin?, isTopLevel: Boolean, forceStatic: Boolean, takePropertyVisibility: Boolean, + override val kotlinOrigin: KtCallableDeclaration?, ) : SymbolLightField(containingClass, lightMemberOrigin) { - override val kotlinOrigin: KtCallableDeclaration? = propertySymbol.sourcePsiSafe() - private val propertySymbolPointer: KtSymbolPointer = propertySymbol.createPointer() + internal constructor( + ktAnalysisSession: KtAnalysisSession, + propertySymbol: KtPropertySymbol, + fieldName: String, + containingClass: SymbolLightClassBase, + lightMemberOrigin: LightMemberOrigin?, + isTopLevel: Boolean, + forceStatic: Boolean, + takePropertyVisibility: Boolean, + ) : this( + propertySymbolPointer = with(ktAnalysisSession) { propertySymbol.createPointer() }, + fieldName = fieldName, + containingClass = containingClass, + lightMemberOrigin = lightMemberOrigin, + isTopLevel = isTopLevel, + forceStatic = forceStatic, + takePropertyVisibility = takePropertyVisibility, + kotlinOrigin = propertySymbol.sourcePsiSafe(), + ) private fun withPropertySymbol(action: context (KtAnalysisSession) (KtPropertySymbol) -> T): T { return propertySymbolPointer.withSymbol(ktModule, action) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt index ca8b732897b..41684737908 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt @@ -39,31 +39,48 @@ import org.jetbrains.kotlin.psi.KtParameter import org.jetbrains.kotlin.psi.KtPropertyAccessor import org.jetbrains.kotlin.utils.addToStdlib.ifTrue -internal class SymbolLightAccessorMethod( - propertyAccessorSymbol: KtPropertyAccessorSymbol, - containingPropertySymbol: KtPropertySymbol, +internal class SymbolLightAccessorMethod private constructor( lightMemberOrigin: LightMemberOrigin?, containingClass: SymbolLightClassBase, + methodIndex: Int, + private val isGetter: Boolean, + private val propertyAccessorDeclaration: KtPropertyAccessor?, + private val propertyAccessorSymbolPointer: KtSymbolPointer, + private val containingPropertyDeclaration: KtCallableDeclaration?, + private val containingPropertySymbolPointer: KtSymbolPointer, private val isTopLevel: Boolean, - private val suppressStatic: Boolean = false, + private val suppressStatic: Boolean, ) : SymbolLightMethodBase( lightMemberOrigin, containingClass, - if (propertyAccessorSymbol is KtPropertyGetterSymbol) METHOD_INDEX_FOR_GETTER else METHOD_INDEX_FOR_SETTER, + methodIndex, ) { - private val isGetter: Boolean = propertyAccessorSymbol is KtPropertyGetterSymbol - - private val propertyAccessorDeclaration: KtPropertyAccessor? = propertyAccessorSymbol.sourcePsiSafe() - private val propertyAccessorSymbolPointer: KtSymbolPointer = propertyAccessorSymbol.createPointer() + internal constructor( + ktAnalysisSession: KtAnalysisSession, + propertyAccessorSymbol: KtPropertyAccessorSymbol, + containingPropertySymbol: KtPropertySymbol, + lightMemberOrigin: LightMemberOrigin?, + containingClass: SymbolLightClassBase, + isTopLevel: Boolean, + suppressStatic: Boolean = false, + ) : this( + lightMemberOrigin, + containingClass, + methodIndex = if (propertyAccessorSymbol is KtPropertyGetterSymbol) METHOD_INDEX_FOR_GETTER else METHOD_INDEX_FOR_SETTER, + isGetter = propertyAccessorSymbol is KtPropertyGetterSymbol, + propertyAccessorDeclaration = propertyAccessorSymbol.sourcePsiSafe(), + propertyAccessorSymbolPointer = with(ktAnalysisSession) { propertyAccessorSymbol.createPointer() }, + containingPropertyDeclaration = containingPropertySymbol.sourcePsiSafe(), + containingPropertySymbolPointer = with(ktAnalysisSession) { containingPropertySymbol.createPointer() }, + isTopLevel = isTopLevel, + suppressStatic = suppressStatic, + ) context(KtAnalysisSession) private fun propertyAccessorSymbol(): KtPropertyAccessorSymbol { return propertyAccessorSymbolPointer.restoreSymbolOrThrowIfDisposed() } - private val containingPropertyDeclaration: KtCallableDeclaration? = containingPropertySymbol.sourcePsiSafe() - private val containingPropertySymbolPointer: KtSymbolPointer = containingPropertySymbol.createPointer() - context(KtAnalysisSession) private fun propertySymbol(): KtPropertySymbol { return containingPropertySymbolPointer.restoreSymbolOrThrowIfDisposed() @@ -226,7 +243,10 @@ internal class SymbolLightAccessorMethod( if (propertyParameter != null) { builder.addParameter( SymbolLightSetterParameter( - containingPropertySymbolPointer, propertyParameter, this@SymbolLightAccessorMethod + ktAnalysisSession = this, + containingPropertySymbolPointer = containingPropertySymbolPointer, + parameterSymbol = propertyParameter, + containingMethod = this@SymbolLightAccessorMethod, ) ) } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt index b89db7814e2..1d43fd828e0 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.light.classes.symbol.methods import com.intellij.psi.* +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin import org.jetbrains.kotlin.asJava.classes.lazyPub @@ -18,19 +19,20 @@ import org.jetbrains.kotlin.light.classes.symbol.toPsiVisibilityForMember import java.util.* internal class SymbolLightConstructor( + ktAnalysisSession: KtAnalysisSession, constructorSymbol: KtConstructorSymbol, lightMemberOrigin: LightMemberOrigin?, containingClass: SymbolLightClassBase, methodIndex: Int, argumentsSkipMask: BitSet? = null, ) : SymbolLightMethod( + ktAnalysisSession = ktAnalysisSession, functionSymbol = constructorSymbol, lightMemberOrigin = lightMemberOrigin, containingClass = containingClass, methodIndex = methodIndex, argumentsSkipMask = argumentsSkipMask ) { - private val _name: String? = containingClass.name override fun getName(): String = _name ?: "" diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethod.kt index 4840ab72a5a..139adaf777e 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethod.kt @@ -28,21 +28,38 @@ import org.jetbrains.kotlin.psi.KtCallableDeclaration import org.jetbrains.kotlin.psi.KtDeclaration import java.util.* -internal abstract class SymbolLightMethod( - functionSymbol: FType, +internal abstract class SymbolLightMethod private constructor( + protected val functionSymbolPointer: KtSymbolPointer, lightMemberOrigin: LightMemberOrigin?, containingClass: SymbolLightClassBase, methodIndex: Int, - private val argumentsSkipMask: BitSet? = null, + private val argumentsSkipMask: BitSet?, + protected val functionDeclaration: KtCallableDeclaration?, + override val kotlinOrigin: KtDeclaration?, ) : SymbolLightMethodBase( lightMemberOrigin, containingClass, methodIndex, ) { - protected val functionDeclaration: KtCallableDeclaration? = functionSymbol.sourcePsiSafe() - - @Suppress("UNCHECKED_CAST") - protected val functionSymbolPointer: KtSymbolPointer = functionSymbol.createPointer() as KtSymbolPointer + internal constructor( + ktAnalysisSession: KtAnalysisSession, + functionSymbol: FType, + lightMemberOrigin: LightMemberOrigin?, + containingClass: SymbolLightClassBase, + methodIndex: Int, + argumentsSkipMask: BitSet? = null, + ) : this( + functionSymbolPointer = with(ktAnalysisSession) { + @Suppress("UNCHECKED_CAST") + functionSymbol.createPointer() as KtSymbolPointer + }, + lightMemberOrigin = lightMemberOrigin, + containingClass = containingClass, + methodIndex = methodIndex, + argumentsSkipMask = argumentsSkipMask, + functionDeclaration = functionSymbol.sourcePsiSafe(), + kotlinOrigin = functionSymbol.sourcePsiSafe() ?: lightMemberOrigin?.originalElement ?: functionSymbol.psiSafe(), + ) protected fun withFunctionSymbol(action: KtAnalysisSession.(FType) -> T): T = functionSymbolPointer.withSymbol(ktModule, action) @@ -65,6 +82,7 @@ internal abstract class SymbolLightMethod( if (!needToSkip) { builder.addParameter( SymbolLightParameter( + ktAnalysisSession = this, parameterSymbol = parameter, containingMethod = this@SymbolLightMethod, ) @@ -101,9 +119,6 @@ internal abstract class SymbolLightMethod( override fun getParameterList(): PsiParameterList = _parametersList - override val kotlinOrigin: KtDeclaration? = - functionDeclaration ?: lightMemberOrigin?.originalElement ?: functionSymbol.psiSafe() - override fun isValid(): Boolean = super.isValid() && functionDeclaration?.isValid ?: functionSymbolPointer.isValid(ktModule) override fun isOverride(): Boolean = withFunctionSymbol { it.getDirectlyOverriddenSymbols().isNotEmpty() } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt index 4afda71a2f6..d91feec6bc2 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt @@ -27,14 +27,16 @@ import org.jetbrains.kotlin.utils.addToStdlib.ifTrue import java.util.* internal class SymbolLightSimpleMethod( + ktAnalysisSession: KtAnalysisSession, functionSymbol: KtFunctionSymbol, lightMemberOrigin: LightMemberOrigin?, containingClass: SymbolLightClassBase, methodIndex: Int, private val isTopLevel: Boolean, argumentsSkipMask: BitSet? = null, - private val suppressStatic: Boolean = false + private val suppressStatic: Boolean = false, ) : SymbolLightMethod( + ktAnalysisSession = ktAnalysisSession, functionSymbol = functionSymbol, lightMemberOrigin = lightMemberOrigin, containingClass = containingClass, diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameter.kt index a6f9b497aea..a374f5ef6d2 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameter.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameter.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.light.classes.symbol.parameters import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiModifierList +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget @@ -18,9 +19,10 @@ import org.jetbrains.kotlin.light.classes.symbol.withSymbol import org.jetbrains.kotlin.utils.addToStdlib.ifTrue internal class SymbolLightParameter( + ktAnalysisSession: KtAnalysisSession, parameterSymbol: KtValueParameterSymbol, containingMethod: SymbolLightMethodBase -) : SymbolLightParameterCommon(parameterSymbol, containingMethod) { +) : SymbolLightParameterCommon(ktAnalysisSession, parameterSymbol, containingMethod) { private val isConstructorParameterSymbol = containingMethod.isConstructor private val _annotations: List by lazyPub { @@ -33,7 +35,7 @@ internal class SymbolLightParameter( val nullability = if (parameterSymbol.isVararg) NullabilityType.NotNull else super.nullabilityType parameterSymbol.computeAnnotations( - parent = this, + parent = this@SymbolLightParameter, nullability = nullability, annotationUseSiteTarget = annotationSite, includeAnnotationsWithoutSite = true diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterCommon.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterCommon.kt index 7ed390bab21..c90935733c2 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterCommon.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterCommon.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.light.classes.symbol.parameters import com.intellij.psi.* +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.symbols.psiSafe @@ -18,11 +19,21 @@ import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase import org.jetbrains.kotlin.psi.KtParameter internal abstract class SymbolLightParameterCommon( - parameterSymbol: KtValueParameterSymbol, - private val containingMethod: SymbolLightMethodBase + protected val parameterSymbolPointer: KtSymbolPointer, + protected val parameterDeclaration: KtParameter?, + private val containingMethod: SymbolLightMethodBase, + override val kotlinOrigin: KtParameter?, ) : SymbolLightParameterBase(containingMethod) { - protected val parameterSymbolPointer: KtSymbolPointer = parameterSymbol.createPointer() - protected val parameterDeclaration: KtParameter? = parameterSymbol.sourcePsiSafe() + internal constructor( + ktAnalysisSession: KtAnalysisSession, + parameterSymbol: KtValueParameterSymbol, + containingMethod: SymbolLightMethodBase, + ) : this( + parameterSymbolPointer = with(ktAnalysisSession) { parameterSymbol.createPointer() }, + parameterDeclaration = parameterSymbol.sourcePsiSafe(), + containingMethod = containingMethod, + kotlinOrigin = parameterSymbol.psiSafe(), + ) private val _name: String by lazy { parameterSymbolPointer.withSymbol(ktModule) { @@ -34,8 +45,6 @@ internal abstract class SymbolLightParameterCommon( override fun hasModifierProperty(name: String): Boolean = modifierList.hasModifierProperty(name) - override val kotlinOrigin: KtParameter? = parameterDeclaration ?: parameterSymbol.psiSafe() - abstract override fun getModifierList(): PsiModifierList private val _identifier: PsiIdentifier by lazy { diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightSetterParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightSetterParameter.kt index 45ba124b202..16ee6e85c89 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightSetterParameter.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightSetterParameter.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.light.classes.symbol.parameters import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiModifierList +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer @@ -22,10 +23,11 @@ import org.jetbrains.kotlin.light.classes.symbol.withSymbol import org.jetbrains.kotlin.name.SpecialNames internal class SymbolLightSetterParameter( + ktAnalysisSession: KtAnalysisSession, private val containingPropertySymbolPointer: KtSymbolPointer, parameterSymbol: KtValueParameterSymbol, containingMethod: SymbolLightMethodBase, -) : SymbolLightParameterCommon(parameterSymbol, containingMethod) { +) : SymbolLightParameterCommon(ktAnalysisSession, parameterSymbol, containingMethod) { override fun getName(): String { if (isDefaultSetterParameter) return SpecialNames.IMPLICIT_SET_PARAMETER.asString() return super.getName() diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt index a2b867d7d5d..578b84f7e46 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt @@ -42,10 +42,15 @@ internal class SymbolLightTypeParameter private constructor( ) : LightElement(parent.manager, KotlinLanguage.INSTANCE), PsiTypeParameter, KtLightDeclaration { - constructor(parent: SymbolLightTypeParameterList, index: Int, typeParameterSymbol: KtTypeParameterSymbol) : this( + constructor( + ktAnalysisSession: KtAnalysisSession, + parent: SymbolLightTypeParameterList, + index: Int, + typeParameterSymbol: KtTypeParameterSymbol, + ) : this( parent = parent, index = index, - typeParameterSymbolPointer = typeParameterSymbol.createPointer(), + typeParameterSymbolPointer = with(ktAnalysisSession) { typeParameterSymbol.createPointer() }, typeParameterDeclaration = typeParameterSymbol.sourcePsiSafe(), kotlinOrigin = typeParameterSymbol.psiSafe(), ) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt index c86c8e9e54a..1548827fa6f 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt @@ -43,7 +43,8 @@ internal class SymbolLightTypeParameterList( symbolWithTypeParameterPointer.withSymbol(ktModule) { it.typeParameters.mapIndexed { index, parameter -> SymbolLightTypeParameter( - parent = this, + ktAnalysisSession = this, + parent = this@SymbolLightTypeParameterList, index = index, typeParameterSymbol = parameter, ) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt index c079abb9217..b4f3e5f8287 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt @@ -311,5 +311,5 @@ internal fun compareSymbolPointers(ktModule: KtModule, left: KtSy internal inline fun KtSymbolPointer.withSymbol( ktModule: KtModule, - crossinline action: context(KtAnalysisSession) (T) -> R, + crossinline action: KtAnalysisSession.(T) -> R, ): R = analyzeForLightClasses(ktModule) { action(this, restoreSymbolOrThrowIfDisposed()) }