diff --git a/analysis/analysis-api-fe10/build.gradle.kts b/analysis/analysis-api-fe10/build.gradle.kts index b4436b6d8f4..949c381ff3b 100644 --- a/analysis/analysis-api-fe10/build.gradle.kts +++ b/analysis/analysis-api-fe10/build.gradle.kts @@ -10,12 +10,12 @@ dependencies { implementation(project(":analysis:analysis-api-impl-base")) implementation(project(":analysis:analysis-internal-utils")) implementation(project(":analysis:kt-references")) + implementation(project(":analysis:kt-references:kt-references-fe10")) implementation(project(":compiler:backend")) implementation(project(":compiler:backend.jvm")) implementation(project(":compiler:backend-common")) implementation(project(":compiler:backend.common.jvm")) - implementation(project(":compiler:light-classes")) testApiJUnit5() testImplementation(project(":analysis:analysis-api-providers")) diff --git a/analysis/kt-references/kt-references-fe10/build.gradle.kts b/analysis/kt-references/kt-references-fe10/build.gradle.kts new file mode 100644 index 00000000000..c07394c9271 --- /dev/null +++ b/analysis/kt-references/kt-references-fe10/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + kotlin("jvm") + id("jps-compatible") +} + +dependencies { + implementation(project(":analysis:kt-references")) + + implementation(project(":compiler:psi")) + implementation(project(":compiler:light-classes")) + implementation(intellijCore()) + + compileOnly(commonDependency("com.google.guava:guava")) +} + +sourceSets { + "main" { projectDefault() } + "test" { none() } +} diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/Fe10KDocReference.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/Fe10KDocReference.kt similarity index 100% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/Fe10KDocReference.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/Fe10KDocReference.kt diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/Fe10SyntheticPropertyAccessorReference.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/Fe10SyntheticPropertyAccessorReference.kt similarity index 100% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/Fe10SyntheticPropertyAccessorReference.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/Fe10SyntheticPropertyAccessorReference.kt diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ArrayAccessReference.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ArrayAccessReference.kt similarity index 92% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ArrayAccessReference.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ArrayAccessReference.kt index 29b0334d639..3ad3b4b369f 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ArrayAccessReference.kt +++ b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ArrayAccessReference.kt @@ -1,11 +1,10 @@ /* - * 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.references -import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.api.descriptors.references.base.KtFe10Reference import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.idea.references.KtArrayAccessReference diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10CollectionLiteralReference.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10CollectionLiteralReference.kt similarity index 100% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10CollectionLiteralReference.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10CollectionLiteralReference.kt diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ConstructorDelegationReference.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ConstructorDelegationReference.kt similarity index 100% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ConstructorDelegationReference.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ConstructorDelegationReference.kt diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10DestructuringDeclarationEntry.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10DestructuringDeclarationEntry.kt similarity index 90% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10DestructuringDeclarationEntry.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10DestructuringDeclarationEntry.kt index 04246d7369f..cda43c03245 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10DestructuringDeclarationEntry.kt +++ b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10DestructuringDeclarationEntry.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,7 +8,6 @@ package org.jetbrains.kotlin.analysis.api.descriptors.references import com.intellij.openapi.util.TextRange import org.jetbrains.kotlin.analysis.api.descriptors.references.base.KtFe10Reference import org.jetbrains.kotlin.analysis.api.descriptors.references.base.KtFe10ReferenceResolutionHelper -import org.jetbrains.kotlin.analysis.api.tokens.HackToForceAllowRunningAnalyzeOnEDT import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.idea.references.KtDestructuringDeclarationReference @@ -36,7 +35,6 @@ class KtFe10DestructuringDeclarationEntry( return super.isReferenceToImportAlias(alias) } - @OptIn(HackToForceAllowRunningAnalyzeOnEDT::class) override fun canRename(): Boolean { val bindingContext = KtFe10ReferenceResolutionHelper.getInstance().partialAnalyze(element) //TODO: should it use full body resolve? return resolveToDescriptors(bindingContext).all { diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ForLoopInReference.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ForLoopInReference.kt similarity index 100% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ForLoopInReference.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10ForLoopInReference.kt diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10InvokeFunctionReference.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10InvokeFunctionReference.kt similarity index 100% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10InvokeFunctionReference.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10InvokeFunctionReference.kt diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10PropertyDelegationMethodsReference.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10PropertyDelegationMethodsReference.kt similarity index 100% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10PropertyDelegationMethodsReference.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10PropertyDelegationMethodsReference.kt diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10SimpleNameReference.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10SimpleNameReference.kt similarity index 100% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10SimpleNameReference.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/KtFe10SimpleNameReference.kt diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10KotlinReferenceProviderContributor.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10KotlinReferenceProviderContributor.kt similarity index 100% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10KotlinReferenceProviderContributor.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10KotlinReferenceProviderContributor.kt diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10PolyVariantResolver.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10PolyVariantResolver.kt similarity index 97% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10PolyVariantResolver.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10PolyVariantResolver.kt index 1e91ea9458e..d3cc72c1f97 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10PolyVariantResolver.kt +++ b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10PolyVariantResolver.kt @@ -10,7 +10,7 @@ import com.intellij.psi.PsiElement import com.intellij.psi.PsiElementResolveResult import com.intellij.psi.ResolveResult import com.intellij.psi.impl.source.resolve.ResolveCache -import org.jetbrains.kotlin.analysis.api.descriptors.utils.DescriptorToSourceUtilsIde +import org.jetbrains.kotlin.analysis.api.descriptors.references.util.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.PackageViewDescriptor import org.jetbrains.kotlin.idea.references.AbstractKtReference diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10Reference.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10Reference.kt similarity index 72% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10Reference.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10Reference.kt index ba65b05933c..7c61c3bc72a 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10Reference.kt +++ b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10Reference.kt @@ -7,11 +7,6 @@ package org.jetbrains.kotlin.analysis.api.descriptors.references.base import com.intellij.psi.PsiMethod import com.intellij.psi.impl.source.resolve.ResolveCache -import org.jetbrains.kotlin.analysis.api.KtAnalysisSession -import org.jetbrains.kotlin.analysis.api.KtSymbolBasedReference -import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession -import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.idea.references.KtReference import org.jetbrains.kotlin.idea.references.unwrappedTargets @@ -20,7 +15,7 @@ import org.jetbrains.kotlin.psi.KtImportAlias import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.resolve.BindingContext -interface KtFe10Reference : KtReference, KtSymbolBasedReference { +interface KtFe10Reference : KtReference { override val resolver: ResolveCache.PolyVariantResolver get() = KtFe10PolyVariantResolver @@ -51,11 +46,12 @@ interface KtFe10Reference : KtReference, KtSymbolBasedReference { } } - override fun KtAnalysisSession.resolveToSymbols(): Collection { - require(this is KtFe10AnalysisSession) - val bindingContext = KtFe10ReferenceResolutionHelper.getInstance().partialAnalyze(element) - return getTargetDescriptors(bindingContext).mapNotNull { descriptor -> - descriptor.toKtSymbol(analysisContext) - } - } +// TODO: Implement KtSymbolBasedReference and uncomment the following implementation after FE10 analysis API is made available in IDE +// override fun KtAnalysisSession.resolveToSymbols(): Collection { +// require(this is KtFe10AnalysisSession) +// val bindingContext = KtFe10ReferenceResolutionHelper.getInstance().partialAnalyze(element) +// return getTargetDescriptors(bindingContext).mapNotNull { descriptor -> +// descriptor.toKtSymbol(analysisContext) +// } +// } } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10ReferenceResolutionHelper.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10ReferenceResolutionHelper.kt similarity index 100% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10ReferenceResolutionHelper.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/base/KtFe10ReferenceResolutionHelper.kt diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/DescriptorsToSourceUtilsIde.kt b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/util/DescriptorsToSourceUtilsIde.kt similarity index 97% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/DescriptorsToSourceUtilsIde.kt rename to analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/util/DescriptorsToSourceUtilsIde.kt index ce39f21bd06..f10400f061b 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/DescriptorsToSourceUtilsIde.kt +++ b/analysis/kt-references/kt-references-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/references/util/DescriptorsToSourceUtilsIde.kt @@ -3,7 +3,7 @@ * 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.utils +package org.jetbrains.kotlin.analysis.api.descriptors.references.util import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement diff --git a/build.gradle.kts b/build.gradle.kts index 53976e75fdc..9e327df45f1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -307,6 +307,7 @@ extra["compilerArtifactsForIde"] = listOfNotNull( ":prepare:ide-plugin-dependencies:high-level-api-fir-tests-for-ide", ":prepare:ide-plugin-dependencies:high-level-api-fe10-for-ide", ":prepare:ide-plugin-dependencies:high-level-api-fe10-tests-for-ide", + ":prepare:ide-plugin-dependencies:kt-references-fe10-for-ide", ":prepare:ide-plugin-dependencies:analysis-api-providers-for-ide", ":prepare:ide-plugin-dependencies:analysis-project-structure-for-ide", ":prepare:ide-plugin-dependencies:symbol-light-classes-for-ide", diff --git a/prepare/ide-plugin-dependencies/kotlin-compiler-fe10-for-ide/build.gradle.kts b/prepare/ide-plugin-dependencies/kotlin-compiler-fe10-for-ide/build.gradle.kts index 249230b6874..6b14ece06fa 100644 --- a/prepare/ide-plugin-dependencies/kotlin-compiler-fe10-for-ide/build.gradle.kts +++ b/prepare/ide-plugin-dependencies/kotlin-compiler-fe10-for-ide/build.gradle.kts @@ -11,6 +11,6 @@ val excludedCompilerModules = listOf( ":compiler:incremental-compilation-impl" ) -val projects = fe10CompilerModules.asList() - excludedCompilerModules +val projects = fe10CompilerModules.asList() - excludedCompilerModules + listOf(":analysis:kt-references:kt-references-fe10") publishJarsForIde(projects) diff --git a/prepare/ide-plugin-dependencies/kt-references-fe10-for-ide/build.gradle.kts b/prepare/ide-plugin-dependencies/kt-references-fe10-for-ide/build.gradle.kts new file mode 100644 index 00000000000..5574c480530 --- /dev/null +++ b/prepare/ide-plugin-dependencies/kt-references-fe10-for-ide/build.gradle.kts @@ -0,0 +1,5 @@ +plugins { + kotlin("jvm") +} + +publishJarsForIde(listOf(":analysis:kt-references:kt-references-fe10")) diff --git a/settings.gradle b/settings.gradle index 340205520cd..1411793649a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -374,6 +374,7 @@ if (!buildProperties.inJpsBuildIdeaSync) { ":prepare:ide-plugin-dependencies:high-level-api-fir-tests-for-ide", ":prepare:ide-plugin-dependencies:high-level-api-fe10-for-ide", ":prepare:ide-plugin-dependencies:high-level-api-fe10-tests-for-ide", + ":prepare:ide-plugin-dependencies:kt-references-fe10-for-ide", ":prepare:ide-plugin-dependencies:analysis-api-providers-for-ide", ":prepare:ide-plugin-dependencies:analysis-project-structure-for-ide", ":prepare:ide-plugin-dependencies:symbol-light-classes-for-ide", @@ -547,6 +548,7 @@ include ":generators:analysis-api-generator", ":analysis:analysis-internal-utils", ":analysis:analysis-test-framework", ":analysis:kt-references", + ":analysis:kt-references:kt-references-fe10", ":analysis:symbol-light-classes", ":analysis:project-structure", ":analysis:analysis-api-standalone",