diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/file/structure/FileStructureElement.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/file/structure/FileStructureElement.kt index 20decefc8ff..881972f5d2b 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/file/structure/FileStructureElement.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/file/structure/FileStructureElement.kt @@ -94,7 +94,7 @@ internal sealed class ReanalyzableStructureElement = ConcurrentHashMap()) { +@JvmInline +internal value class LibrariesCache(private val cache: ConcurrentHashMap = ConcurrentHashMap()) { fun cached(moduleSourceInfo: ModuleSourceInfoBase, create: (ModuleSourceInfoBase) -> FirIdeLibrariesSession): FirIdeLibrariesSession = cache.computeIfAbsent(moduleSourceInfo, create) -} \ No newline at end of file +} diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/compiler/based/AbstractCompilerBasedTest.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/compiler/based/AbstractCompilerBasedTest.kt index 3bdce7ff338..c2e71e0383a 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/compiler/based/AbstractCompilerBasedTest.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/compiler/based/AbstractCompilerBasedTest.kt @@ -25,7 +25,6 @@ import org.jetbrains.kotlin.fir.DependencyListForCliModule import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProvider import org.jetbrains.kotlin.fir.deserialization.ModuleDataProvider -import org.jetbrains.kotlin.fir.java.FirJavaElementFinder import org.jetbrains.kotlin.fir.session.FirModuleInfoBasedModuleData import org.jetbrains.kotlin.idea.asJava.IDEKotlinAsJavaFirSupport import org.jetbrains.kotlin.idea.fir.low.level.api.* @@ -51,7 +50,8 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.testConfiguration import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.directives.model.DirectivesContainer -import org.jetbrains.kotlin.test.frontend.fir.* +import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact +import org.jetbrains.kotlin.test.frontend.fir.getAnalyzerServices import org.jetbrains.kotlin.test.model.* import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest import org.jetbrains.kotlin.test.services.* @@ -328,5 +328,6 @@ private fun reRegisterJavaElementFinder(project: Project) { IDEKotlinAsJavaFirSupport(project) ) } + @Suppress("DEPRECATION") PsiElementFinder.EP.getPoint(project).registerExtension(JavaElementFinder(project)) } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/compiler/based/IdeTestIgnoreHandler.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/compiler/based/IdeTestIgnoreHandler.kt index 55d644b56b4..7f6786f0a34 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/compiler/based/IdeTestIgnoreHandler.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/compiler/based/IdeTestIgnoreHandler.kt @@ -24,7 +24,6 @@ class IdeTestIgnoreHandler(testServices: TestServices) : AfterAnalysisChecker(te override fun check(failedAssertions: List) { if (!isFirIdeIgnoreDirectivePresent()) return if (failedAssertions.isNotEmpty()) return - val moduleStructure = testServices.moduleStructure val testDataFile = testServices.moduleStructure.originalTestDataFiles.first() if (!isTeamCityBuild) { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/test/base/AbstractLowLevelApiTest.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/test/base/AbstractLowLevelApiTest.kt index 6582bd9847e..2928b8eb2d2 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/test/base/AbstractLowLevelApiTest.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/test/base/AbstractLowLevelApiTest.kt @@ -5,16 +5,14 @@ package org.jetbrains.kotlin.idea.fir.low.level.api.test.base -import com.intellij.DynamicBundle -import com.intellij.core.CoreApplicationEnvironment import com.intellij.mock.MockApplication import com.intellij.mock.MockProject -import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.util.Disposer -import com.intellij.psi.impl.source.tree.TreeCopyHandler import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.* +import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.ModuleRegistrarPreAnalysisHandler +import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.TestModuleInfoProvider +import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.moduleInfoProvider import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.TestInfrastructureInternals @@ -57,7 +55,7 @@ abstract class AbstractLowLevelApiTest : TestWithDisposable() { useDirectives(JvmEnvironmentConfigurationDirectives) useSourcePreprocessor(::ExpressionMarkersSourceFilePreprocessor) - useAdditionalService(::ExpressionMarkerProvider) + useAdditionalService { ExpressionMarkerProvider() } useAdditionalService(::TestModuleInfoProvider) usePreAnalysisHandlers(::ModuleRegistrarPreAnalysisHandler.bind(disposable)) configureTest(this) @@ -133,9 +131,5 @@ abstract class AbstractLowLevelApiTest : TestWithDisposable() { } } - fun String.indexOfOrNull(substring: String) = indexOf(substring).takeIf { it >= 0 } - -private fun String.indexOfOrNull(substring: String, startingIndex: Int) = - indexOf(substring, startingIndex).takeIf { it >= 0 } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/test/base/ExpressionMarkersSourceFilePreprocessor.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/test/base/ExpressionMarkersSourceFilePreprocessor.kt index 71a0b5faf7b..077d314a281 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/test/base/ExpressionMarkersSourceFilePreprocessor.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/test/base/ExpressionMarkersSourceFilePreprocessor.kt @@ -55,7 +55,7 @@ internal class ExpressionMarkersSourceFilePreprocessor(testServices: TestService } } -class ExpressionMarkerProvider(testServices: TestServices) : TestService { +class ExpressionMarkerProvider : TestService { private val selected = mutableMapOf() @PrivateForInline diff --git a/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/HLDiagnosticConverter.kt b/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/HLDiagnosticConverter.kt index 9e1a76332a9..ac8f5d7a539 100644 --- a/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/HLDiagnosticConverter.kt +++ b/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/HLDiagnosticConverter.kt @@ -109,7 +109,7 @@ private object FirToKtConversionCreator { val nullable = type.isMarkedNullable val kClass = type.classifier as KClass<*> return tryMapAllowedType(kClass) - ?: tryMapPsiElementType(type, kClass) + ?: tryMapPsiElementType(kClass) ?: tryMapFirTypeToKtType(kClass, nullable) ?: tryMapPlatformType(type, kClass) ?: error("Unsupported type $type, consider add corresponding mapping") @@ -165,7 +165,7 @@ private object FirToKtConversionCreator { return null } - private fun tryMapPsiElementType(type: KType, kClass: KClass<*>): HLParameterConversion? { + private fun tryMapPsiElementType(kClass: KClass<*>): HLParameterConversion? { if (kClass.isSubclassOf(PsiElement::class)) { return HLIdParameterConversion } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForClassOrObjectSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForClassOrObjectSymbol.kt index 8d9935e9dc1..573be1ba62d 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForClassOrObjectSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForClassOrObjectSymbol.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.idea.asJava -import com.intellij.openapi.util.Comparing import com.intellij.psi.* import com.intellij.psi.impl.InheritanceImplUtil import com.intellij.psi.impl.PsiClassImplUtil @@ -13,16 +12,18 @@ import com.intellij.psi.search.SearchScope import com.intellij.psi.stubs.IStubElementType import com.intellij.psi.stubs.StubElement import org.jetbrains.annotations.NonNls -import org.jetbrains.kotlin.asJava.classes.* +import org.jetbrains.kotlin.asJava.classes.KtLightClass +import org.jetbrains.kotlin.asJava.classes.LightClassInheritanceHelper +import org.jetbrains.kotlin.asJava.classes.getOutermostClassOrObject +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.idea.asJava.classes.checkIsInheritor import org.jetbrains.kotlin.idea.asJava.classes.getOrCreateFirLightClass import org.jetbrains.kotlin.idea.asJava.elements.FirLightTypeParameterListForSymbol -import org.jetbrains.kotlin.idea.frontend.api.symbols.* +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind -import org.jetbrains.kotlin.psi.KtBlockExpression import org.jetbrains.kotlin.psi.KtClassBody import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.debugText.getDebugText @@ -111,7 +112,7 @@ internal abstract class FirLightClassForClassOrObjectSymbol( override fun isEquivalentTo(another: PsiElement?): Boolean = basicIsEquivalentTo(this, another) || - another is PsiClass && qualifiedName != null && Comparing.equal(another.qualifiedName, qualifiedName) + another is PsiClass && qualifiedName != null && another.qualifiedName == qualifiedName abstract override fun equals(other: Any?): Boolean diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForFacade.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForFacade.kt index db11df2e86c..f7e4bf91afd 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForFacade.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForFacade.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.idea.asJava -import com.intellij.openapi.util.Comparing import com.intellij.openapi.util.TextRange import com.intellij.psi.* import com.intellij.psi.impl.light.LightEmptyImplementsList @@ -13,7 +12,9 @@ import com.intellij.psi.impl.light.LightModifierList import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.asJava.classes.lazyPub -import org.jetbrains.kotlin.asJava.elements.* +import org.jetbrains.kotlin.asJava.elements.FakeFileForLightClass +import org.jetbrains.kotlin.asJava.elements.KtLightField +import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName import org.jetbrains.kotlin.idea.KotlinLanguage @@ -23,8 +24,8 @@ import org.jetbrains.kotlin.idea.asJava.classes.createMethods import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.scopes.KtDeclarationScope import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol -import org.jetbrains.kotlin.idea.frontend.api.symbols.KtKotlinPropertySymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtKotlinPropertySymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithDeclarations import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithVisibility import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind @@ -225,7 +226,7 @@ class FirLightClassForFacade( override fun getNavigationElement() = firstFileInFacade override fun isEquivalentTo(another: PsiElement?): Boolean = - equals(another) || another is FirLightClassForFacade && Comparing.equal(another.qualifiedName, qualifiedName) + equals(another) || another is FirLightClassForFacade && another.qualifiedName == qualifiedName override fun isInheritor(baseClass: PsiClass, checkDeep: Boolean): Boolean { return baseClass.qualifiedName == CommonClassNames.JAVA_LANG_OBJECT diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt index c6665952eb1..f350bf55c7f 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt @@ -20,7 +20,10 @@ import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.backend.jvm.jvmTypeMapper -import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.fir.declarations.FirClass +import org.jetbrains.kotlin.fir.declarations.FirConstructor +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.utils.modality import org.jetbrains.kotlin.fir.declarations.utils.superConeTypes import org.jetbrains.kotlin.fir.isPrimitiveType @@ -36,7 +39,10 @@ import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirSymbol import org.jetbrains.kotlin.idea.frontend.api.fir.types.KtFirType import org.jetbrains.kotlin.idea.frontend.api.symbols.* -import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.* +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSimpleConstantValue +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithModality +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithVisibility +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypeAndAnnotations import org.jetbrains.kotlin.idea.frontend.api.types.KtNonErrorClassType import org.jetbrains.kotlin.idea.frontend.api.types.KtType import org.jetbrains.kotlin.idea.frontend.api.types.KtTypeNullability @@ -162,12 +168,11 @@ private fun mapSupertype( internal fun KtTypeAndAnnotations.mapSupertype( psiContext: PsiElement, kotlinCollectionAsIs: Boolean = false -): PsiClassType? = type.mapSupertype(psiContext, kotlinCollectionAsIs, emptyList()) +): PsiClassType? = type.mapSupertype(psiContext, kotlinCollectionAsIs) internal fun KtType.mapSupertype( psiContext: PsiElement, kotlinCollectionAsIs: Boolean = false, - annotations: List ): PsiClassType? { if (this !is KtNonErrorClassType) return null require(this is KtFirType) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightTypeParameter.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightTypeParameter.kt index 7793cc48c5c..e864ad9c4fb 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightTypeParameter.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightTypeParameter.kt @@ -18,15 +18,14 @@ import org.jetbrains.kotlin.asJava.classes.cannotModify import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation import org.jetbrains.kotlin.asJava.elements.KtLightDeclaration -import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.asJava.basicIsEquivalentTo import org.jetbrains.kotlin.idea.asJava.invalidAccess import org.jetbrains.kotlin.idea.asJava.mapSupertype import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtTypeParameterSymbol -import org.jetbrains.kotlin.idea.frontend.api.types.KtClassType import org.jetbrains.kotlin.idea.frontend.api.types.KtNonErrorClassType +import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.psi.KtTypeParameter import org.jetbrains.kotlin.psi.psiUtil.startOffset @@ -70,7 +69,6 @@ internal class FirLightTypeParameter( it.mapSupertype( psiContext = this, kotlinCollectionAsIs = true, - annotations = emptyList() ) } .forEach { listBuilder.addReference(it) } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/fir/FirUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/fir/FirUtils.kt index d3d908a66eb..bc2ba419939 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/fir/FirUtils.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/fir/FirUtils.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.idea.fir -import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression import org.jetbrains.kotlin.fir.references.FirErrorNamedReference @@ -19,7 +18,6 @@ import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol import org.jetbrains.kotlin.util.OperatorNameConventions - fun FirFunctionCall.isImplicitFunctionCall(): Boolean { if (dispatchReceiver !is FirQualifiedAccessExpression) return false return calleeReference.getCandidateSymbols().any(FirBasedSymbol<*>::isInvokeFunction) @@ -35,9 +33,7 @@ fun FirReference.getResolvedSymbolOfNameReference(): FirBasedSymbol<*>? = (this as? FirResolvedNamedReference)?.resolvedSymbol internal fun FirReference.getResolvedKtSymbolOfNameReference(builder: KtSymbolByFirBuilder): KtSymbol? = - (getResolvedSymbolOfNameReference()?.fir as? FirDeclaration)?.let { firDeclaration -> - builder.buildSymbol(firDeclaration) - } + getResolvedSymbolOfNameReference()?.fir?.let(builder::buildSymbol) internal fun FirErrorNamedReference.getCandidateSymbols(): Collection> = when (val diagnostic = diagnostic) { diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirCompletionCandidateChecker.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirCompletionCandidateChecker.kt index 8caee26f99f..e3fc03a76f0 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirCompletionCandidateChecker.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirCompletionCandidateChecker.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.components import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration -import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.expressions.FirExpression @@ -62,7 +61,7 @@ internal class KtFirCompletionCandidateChecker( val file = originalFile.getOrBuildFirFile(firResolveState) val explicitReceiverExpression = possibleExplicitReceiver?.getOrBuildFirOfType(firResolveState) val resolver = SingleCandidateResolver(firResolveState.rootModuleSession, file) - val implicitReceivers = getImplicitReceivers(originalFile, file, nameExpression) + val implicitReceivers = getImplicitReceivers(nameExpression) for (implicitReceiverValue in implicitReceivers) { val resolutionParameters = ResolutionParameters( singleCandidateResolutionMode = SingleCandidateResolutionMode.CHECK_EXTENSION_FOR_COMPLETION, @@ -84,11 +83,7 @@ internal class KtFirCompletionCandidateChecker( return KtExtensionApplicabilityResult.NonApplicable } - private fun getImplicitReceivers( - originalFile: KtFile, - firFile: FirFile, - fakeNameExpression: KtSimpleNameExpression - ): Sequence?> { + private fun getImplicitReceivers(fakeNameExpression: KtSimpleNameExpression): Sequence?> { val towerDataContext = analysisSession.firResolveState.getTowerContextProvider() .getClosestAvailableParentContext(fakeNameExpression) ?: error("Cannot find enclosing declaration for ${fakeNameExpression.getElementTextInContext()}") diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirScopeProvider.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirScopeProvider.kt index de11e54ae3c..4e15c71d83e 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirScopeProvider.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirScopeProvider.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.components import com.intellij.openapi.project.Project import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirClass -import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.expressions.FirAnonymousObjectExpression import org.jetbrains.kotlin.fir.resolve.ScopeSession @@ -169,7 +168,7 @@ internal class KtFirScopeProvider( KtImplicitReceiver( token, builder.typeBuilder.buildKtType(receiver.type), - builder.buildSymbol(receiver.boundSymbol.fir as FirDeclaration), + builder.buildSymbol(receiver.boundSymbol.fir), ) } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeAndAnnotations.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeAndAnnotations.kt index b5868240126..f7a41f162f2 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeAndAnnotations.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeAndAnnotations.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.idea.frontend.api.types.KtType internal class KtFirTypeAndAnnotations( private val containingDeclaration: FirRefWithValidityCheck, - typeResolvePhase: FirResolvePhase, + @Suppress("UNUSED_PARAMETER") typeResolvePhase: FirResolvePhase, _builder: KtSymbolByFirBuilder, private val typeRef: (T) -> FirTypeRef, ) : KtTypeAndAnnotations() { diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/pointers/KtFirBackingFieldSymbolPointer.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/pointers/KtFirBackingFieldSymbolPointer.kt index 90969115978..47f45bab594 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/pointers/KtFirBackingFieldSymbolPointer.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/pointers/KtFirBackingFieldSymbolPointer.kt @@ -17,6 +17,7 @@ internal class KtFirBackingFieldSymbolPointer( ) : KtSymbolPointer() { override fun restoreSymbol(analysisSession: KtAnalysisSession): KtBackingFieldSymbol? { require(analysisSession is KtFirAnalysisSession) + @Suppress("DEPRECATION") val propertySymbol = propertySymbolPointer.restoreSymbol(analysisSession) ?: return null check(propertySymbol is KtFirKotlinPropertySymbol) return propertySymbol.firRef.withFir { firProperty -> diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/types/PublicTypeApproximator.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/types/PublicTypeApproximator.kt index a9df2bd452d..b9568a882b2 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/types/PublicTypeApproximator.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/types/PublicTypeApproximator.kt @@ -16,7 +16,7 @@ internal object PublicTypeApproximator { session: FirSession, ): ConeKotlinType? { val approximator = session.inferenceComponents.approximator - return approximator.approximateToSuperType(type, PublicApproximatorConfiguration) as ConeKotlinType? + return approximator.approximateToSuperType(type, PublicApproximatorConfiguration) } private object PublicApproximatorConfiguration : TypeApproximatorConfiguration.AllFlexibleSameValue() { @@ -27,4 +27,4 @@ internal object PublicTypeApproximator { override val intersectionTypesInContravariantPositions: Boolean get() = true override val localTypes: Boolean get() = true } -} \ No newline at end of file +} diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/KtAnalysisSessionFe10BindingHolder.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/KtAnalysisSessionFe10BindingHolder.kt index 4e6d04b254c..c73a2be71b5 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/KtAnalysisSessionFe10BindingHolder.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/KtAnalysisSessionFe10BindingHolder.kt @@ -48,6 +48,7 @@ class KtAnalysisSessionFe10BindingHolder private constructor( companion object { @InvalidWayOfUsingAnalysisSession fun create(firResolveState: FirModuleResolveState, token: ValidityToken, ktElement: KtElement): KtAnalysisSessionFe10BindingHolder { + @Suppress("DEPRECATION") val firAnalysisSession = KtFirAnalysisSession.createAnalysisSessionByResolveState(firResolveState, token, ktElement) return KtAnalysisSessionFe10BindingHolder(firAnalysisSession) } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/LazyOnlyWeakRef.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/LazyOnlyWeakRef.kt index ce3be9a1b4c..148773f619a 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/LazyOnlyWeakRef.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/LazyOnlyWeakRef.kt @@ -11,7 +11,7 @@ import java.lang.ref.WeakReference import kotlin.reflect.KProperty class ReadOnlyWeakRef -@Deprecated("Consider suing ValidityTokenOwner.weakRef instead") +@Deprecated("Consider using ValidityTokenOwner.weakRef instead") constructor(value: V, val token: ValidityToken) { val weakRef = WeakReference(value) @@ -24,7 +24,8 @@ constructor(value: V, val token: ValidityToken) { } } -@Suppress("NOTHING_TO_INLINE") +@Suppress("NOTHING_TO_INLINE", "DEPRECATION") internal inline fun ValidityTokenOwner.weakRef(value: V) = ReadOnlyWeakRef(value, token) -internal inline fun ValidityTokenOwner.weakRef(value: () -> V) = ReadOnlyWeakRef(value(), token) \ No newline at end of file +@Suppress("DEPRECATION") +internal inline fun ValidityTokenOwner.weakRef(value: () -> V) = ReadOnlyWeakRef(value(), token)