diff --git a/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/KotlinModuleInfoProvider.kt b/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/KotlinModuleInfoProvider.kt new file mode 100644 index 00000000000..a0feee91a2b --- /dev/null +++ b/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/KotlinModuleInfoProvider.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2021 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.providers + +import com.intellij.openapi.components.ServiceManager +import org.jetbrains.kotlin.analyzer.ModuleInfo +import org.jetbrains.kotlin.psi.KtElement + +public abstract class KotlinModuleInfoProvider { + public abstract fun getModuleInfo(element: KtElement): ModuleInfo +} + +public fun KtElement.getModuleInfo(): ModuleInfo = + ServiceManager.getService(project, KotlinModuleInfoProvider::class.java).getModuleInfo(this) \ No newline at end of file diff --git a/analysis/symbol-light-classes/build.gradle.kts b/analysis/symbol-light-classes/build.gradle.kts new file mode 100644 index 00000000000..8779171159d --- /dev/null +++ b/analysis/symbol-light-classes/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + kotlin("jvm") + id("jps-compatible") +} + +dependencies { + implementation(project(":compiler:psi")) + implementation(project(":compiler:frontend.java")) + implementation(project(":core:compiler.common")) + implementation(project(":compiler:light-classes")) + implementation(project(":analysis:analysis-api-providers")) + implementation(project(":idea-frontend-api")) + implementation(intellijCoreDep()) { includeJars("intellij-core", rootProject = rootProject) } +} + +sourceSets { + "main" { projectDefault() } + "test" { none() } +} diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/FirFakeFileImpl.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/FirFakeFileImpl.kt similarity index 89% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/FirFakeFileImpl.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/FirFakeFileImpl.kt index 544278c910d..a64f8b98de3 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/FirFakeFileImpl.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/FirFakeFileImpl.kt @@ -1,9 +1,9 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2021 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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiElement @@ -12,7 +12,7 @@ import com.intellij.psi.scope.PsiScopeProcessor import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.getOutermostClassOrObject import org.jetbrains.kotlin.asJava.elements.FakeFileForLightClass -import org.jetbrains.kotlin.idea.asJava.classes.getOrCreateFirLightClass +import org.jetbrains.kotlin.light.classes.symbol.classes.getOrCreateFirLightClass import org.jetbrains.kotlin.psi.KtClassOrObject class FirFakeFileImpl(private val classOrObject: KtClassOrObject, ktClass: KtLightClass) : FakeFileForLightClass( diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/FirLightIdentifier.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/FirLightIdentifier.kt similarity index 67% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/FirLightIdentifier.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/FirLightIdentifier.kt index 48f63972ca0..f3d232fa6cf 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/FirLightIdentifier.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/FirLightIdentifier.kt @@ -1,31 +1,22 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2021 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.asJava.elements +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiCompiledElement import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile -import com.intellij.psi.PsiNameIdentifierOwner import com.intellij.psi.impl.light.LightIdentifier -import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol +import org.jetbrains.kotlin.asJava.elements.PsiElementWithOrigin import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtNamedSymbol -import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.KtNamedDeclaration +import org.jetbrains.kotlin.psi.KtPrimaryConstructor +import org.jetbrains.kotlin.psi.KtPropertyAccessor +import org.jetbrains.kotlin.psi.KtSecondaryConstructor import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject open class FirLightIdentifier( diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/FirLightMemberImpl.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/FirLightMemberImpl.kt similarity index 87% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/FirLightMemberImpl.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/FirLightMemberImpl.kt index 251cac267e5..d44dfb478b4 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/FirLightMemberImpl.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/FirLightMemberImpl.kt @@ -1,9 +1,9 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2021 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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.PsiElement import com.intellij.psi.PsiIdentifier @@ -12,12 +12,9 @@ import com.intellij.psi.PsiMethod import com.intellij.psi.javadoc.PsiDocComment import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin import org.jetbrains.kotlin.asJava.classes.KtLightClass -import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightElementBase -import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier import org.jetbrains.kotlin.asJava.elements.KtLightMember import org.jetbrains.kotlin.psi.KtDeclaration -import org.jetbrains.kotlin.psi.KtNamedDeclaration internal abstract class FirLightMemberImpl( override val lightMemberOrigin: LightMemberOrigin?, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/FirLightTypeParameterListForSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/FirLightTypeParameterListForSymbol.kt similarity index 93% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/FirLightTypeParameterListForSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/FirLightTypeParameterListForSymbol.kt index da083aec2be..87e69fa0b83 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/FirLightTypeParameterListForSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/FirLightTypeParameterListForSymbol.kt @@ -1,17 +1,17 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2021 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.idea.asJava.elements +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import com.intellij.psi.impl.light.LightElement import com.intellij.psi.scope.PsiScopeProcessor import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.idea.KotlinLanguage -import org.jetbrains.kotlin.idea.asJava.basicIsEquivalentTo import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithTypeParameters +import org.jetbrains.kotlin.light.classes.symbol.elements.FirLightTypeParameter internal class FirLightTypeParameterListForSymbol( diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/IDEKotlinAsJavaFirSupport.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/IDEKotlinAsJavaFirSupport.kt similarity index 92% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/IDEKotlinAsJavaFirSupport.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/IDEKotlinAsJavaFirSupport.kt index 4742bd68639..79e5cf26efa 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/IDEKotlinAsJavaFirSupport.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/IDEKotlinAsJavaFirSupport.kt @@ -1,25 +1,24 @@ /* - * Copyright 2000-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2021 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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.openapi.project.Project -import com.intellij.openapi.util.Key import com.intellij.psi.PsiClass import com.intellij.psi.search.GlobalSearchScope -import com.intellij.util.SmartList -import org.jetbrains.kotlin.analyzer.LibraryModuleInfo +import org.jetbrains.kotlin.analysis.providers.createDeclarationProvider +import org.jetbrains.kotlin.analysis.providers.createPackageProvider +import org.jetbrains.kotlin.analysis.providers.getModuleInfo import org.jetbrains.kotlin.analyzer.LibraryModuleSourceInfoBase import org.jetbrains.kotlin.analyzer.NonSourceModuleInfoBase import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport import org.jetbrains.kotlin.asJava.classes.KtFakeLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName -import org.jetbrains.kotlin.idea.asJava.classes.getOrCreateFirLightClass -import org.jetbrains.kotlin.idea.asJava.classes.getOrCreateFirLightFacade -import org.jetbrains.kotlin.idea.fir.low.level.api.api.getModuleInfo +import org.jetbrains.kotlin.light.classes.symbol.classes.getOrCreateFirLightClass +import org.jetbrains.kotlin.light.classes.symbol.classes.getOrCreateFirLightFacade import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.parentOrNull @@ -27,11 +26,8 @@ import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtScript import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty -import org.jetbrains.kotlin.analysis.providers.createDeclarationProvider -import org.jetbrains.kotlin.analysis.providers.createPackageProvider class IDEKotlinAsJavaFirSupport(private val project: Project) : KotlinAsJavaSupport() { - override fun findClassOrObjectDeclarationsInPackage( packageFqName: FqName, searchScope: GlobalSearchScope diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/FirAnnotationParameterList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/FirAnnotationParameterList.kt similarity index 97% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/FirAnnotationParameterList.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/FirAnnotationParameterList.kt index 919b82aa1a3..232229bf4ed 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/FirAnnotationParameterList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/FirAnnotationParameterList.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import com.intellij.psi.impl.light.LightIdentifier diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/FirLightAbstractAnnotation.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/FirLightAbstractAnnotation.kt similarity index 98% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/FirLightAbstractAnnotation.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/FirLightAbstractAnnotation.kt index 8b72656f47e..e269d75056a 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/FirLightAbstractAnnotation.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/FirLightAbstractAnnotation.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import org.jetbrains.kotlin.asJava.classes.cannotModify diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/FirLightAnnotationForAnnotationCall.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/FirLightAnnotationForAnnotationCall.kt similarity index 86% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/FirLightAnnotationForAnnotationCall.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/FirLightAnnotationForAnnotationCall.kt index 496a9dfa09f..d764c2b7e7d 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/FirLightAnnotationForAnnotationCall.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/FirLightAnnotationForAnnotationCall.kt @@ -3,11 +3,14 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol -import com.intellij.psi.* +import com.intellij.psi.PsiAnnotation +import com.intellij.psi.PsiAnnotationMemberValue +import com.intellij.psi.PsiAnnotationParameterList +import com.intellij.psi.PsiElement import com.intellij.psi.impl.PsiImplUtil -import org.jetbrains.kotlin.asJava.classes.* +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtAnnotationCall import org.jetbrains.kotlin.psi.KtCallElement diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/FirLightSimpleAnnotation.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/FirLightSimpleAnnotation.kt similarity index 95% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/FirLightSimpleAnnotation.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/FirLightSimpleAnnotation.kt index 2b63812e83e..fc68ee8f335 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/FirLightSimpleAnnotation.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/FirLightSimpleAnnotation.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.PsiAnnotationMemberValue import com.intellij.psi.PsiElement diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/annotationsUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/annotationsUtils.kt similarity index 87% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/annotationsUtils.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/annotationsUtils.kt index 9201f75839a..1a795e66533 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/annotations/annotationsUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/annotationsUtils.kt @@ -3,15 +3,15 @@ * 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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol +import com.intellij.openapi.project.Project import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiElement import org.jetbrains.annotations.NotNull import org.jetbrains.annotations.Nullable import org.jetbrains.kotlin.descriptors.DeprecationLevelValue import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFileSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtAnnotatedSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSimpleConstantValue @@ -35,14 +35,18 @@ internal fun KtAnnotatedSymbol.getJvmNameFromAnnotation(annotationUseSiteTarget: } } -internal fun isHiddenByDeprecation(symbol: KtAnnotatedSymbol, annotationUseSiteTarget: AnnotationUseSiteTarget? = null): Boolean { - return analyzeWithSymbolAsContext(symbol) { +internal fun isHiddenByDeprecation( + project: Project, + symbol: KtAnnotatedSymbol, + annotationUseSiteTarget: AnnotationUseSiteTarget? = null +): Boolean { + return project.analyzeWithSymbolAsContext(symbol) { symbol.deprecationStatus?.level == DeprecationLevelValue.HIDDEN } } -internal fun KtAnnotatedSymbol.isHiddenOrSynthetic(annotationUseSiteTarget: AnnotationUseSiteTarget? = null) = - isHiddenByDeprecation(this, annotationUseSiteTarget) || hasJvmSyntheticAnnotation(annotationUseSiteTarget) +internal fun KtAnnotatedSymbol.isHiddenOrSynthetic(project: Project, annotationUseSiteTarget: AnnotationUseSiteTarget? = null) = + isHiddenByDeprecation(project, this, annotationUseSiteTarget) || hasJvmSyntheticAnnotation(annotationUseSiteTarget) internal fun KtAnnotatedSymbol.hasJvmFieldAnnotation(): Boolean = hasAnnotation("kotlin/jvm/JvmField", null) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnnotationClassSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightAnnotationClassSymbol.kt similarity index 91% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnnotationClassSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightAnnotationClassSymbol.kt index c147389bf11..bd8da6e2086 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnnotationClassSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightAnnotationClassSymbol.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.idea.asJava.classes +package org.jetbrains.kotlin.light.classes.symbol.classes import com.intellij.psi.PsiManager import com.intellij.psi.PsiMethod @@ -11,11 +11,11 @@ import com.intellij.psi.PsiReferenceList import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightMethod -import org.jetbrains.kotlin.idea.asJava.FirLightClassForClassOrObjectSymbol -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.* import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.isPrivateOrPrivateToThis +import org.jetbrains.kotlin.light.classes.symbol.FirLightClassForClassOrObjectSymbol +import org.jetbrains.kotlin.light.classes.symbol.analyzeWithSymbolAsContext internal class FirLightAnnotationClassSymbol( private val classOrObjectSymbol: KtNamedClassOrObjectSymbol, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnonymousClassForSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightAnonymousClassForSymbol.kt similarity index 95% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnonymousClassForSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightAnonymousClassForSymbol.kt index 03a097bf6bf..ba2bb622baf 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnonymousClassForSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightAnonymousClassForSymbol.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.idea.asJava.classes +package org.jetbrains.kotlin.light.classes.symbol.classes import com.intellij.psi.* import com.intellij.psi.impl.InheritanceImplUtil @@ -15,14 +15,10 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier import org.jetbrains.kotlin.asJava.elements.KtLightMethod -import org.jetbrains.kotlin.idea.asJava.* -import org.jetbrains.kotlin.idea.asJava.FirLightClassForSymbol -import org.jetbrains.kotlin.idea.asJava.FirLightField -import org.jetbrains.kotlin.idea.asJava.hasJvmFieldAnnotation -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtAnonymousObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySymbol +import org.jetbrains.kotlin.light.classes.symbol.* import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.debugText.getDebugText diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassBase.kt similarity index 99% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassBase.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassBase.kt index 190a6a1c1f4..9f654cc43c3 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassBase.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassBase.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.kotlin.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.navigation.ItemPresentation import com.intellij.navigation.ItemPresentationProviders diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForClassOrObjectSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForClassOrObjectSymbol.kt similarity index 95% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForClassOrObjectSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForClassOrObjectSymbol.kt index 573be1ba62d..7a0075043c3 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForClassOrObjectSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForClassOrObjectSymbol.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import com.intellij.psi.impl.InheritanceImplUtil @@ -16,18 +16,18 @@ 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.KtNamedClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolKind +import org.jetbrains.kotlin.light.classes.symbol.classes.checkIsInheritor +import org.jetbrains.kotlin.light.classes.symbol.classes.getOrCreateFirLightClass import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind import org.jetbrains.kotlin.psi.KtClassBody import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.debugText.getDebugText import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub +import org.jetbrains.kotlin.utils.addToStdlib.ifFalse +import org.jetbrains.kotlin.utils.addToStdlib.ifTrue internal abstract class FirLightClassForClassOrObjectSymbol( private val classOrObjectSymbol: KtNamedClassOrObjectSymbol, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForEnumEntry.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForEnumEntry.kt similarity index 92% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForEnumEntry.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForEnumEntry.kt index 8bc8d11108e..b1ae49fa339 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForEnumEntry.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForEnumEntry.kt @@ -8,14 +8,11 @@ package org.jetbrains.kotlin.asJava.classes import com.intellij.psi.* import com.intellij.psi.impl.PsiClassImplUtil import org.jetbrains.kotlin.asJava.elements.KtLightMethod -import org.jetbrains.kotlin.idea.asJava.* -import org.jetbrains.kotlin.idea.asJava.FirLightClassModifierList -import org.jetbrains.kotlin.idea.asJava.FirLightPsiJavaCodeReferenceElementWithNoReference -import org.jetbrains.kotlin.idea.asJava.classes.createConstructors -import org.jetbrains.kotlin.idea.asJava.classes.createMethods -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtEnumEntrySymbol +import org.jetbrains.kotlin.light.classes.symbol.* +import org.jetbrains.kotlin.light.classes.symbol.classes.createConstructors +import org.jetbrains.kotlin.light.classes.symbol.classes.createMethods import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind import org.jetbrains.kotlin.load.kotlin.TypeMappingMode import org.jetbrains.kotlin.psi.KtClassOrObject diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForFacade.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForFacade.kt similarity index 97% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForFacade.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForFacade.kt index f7e4bf91afd..eb5e53fbf9a 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForFacade.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForFacade.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.openapi.util.TextRange import com.intellij.psi.* @@ -18,16 +18,15 @@ 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 -import org.jetbrains.kotlin.idea.asJava.classes.analyseForLightClasses -import org.jetbrains.kotlin.idea.asJava.classes.createField -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.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.light.classes.symbol.classes.analyseForLightClasses +import org.jetbrains.kotlin.light.classes.symbol.classes.createField +import org.jetbrains.kotlin.light.classes.symbol.classes.createMethods import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtClassOrObject diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForSymbol.kt similarity index 98% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForSymbol.kt index 0375c38b3a1..37cf60558a6 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassForSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForSymbol.kt @@ -3,20 +3,20 @@ * 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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.descriptors.Visibility -import org.jetbrains.kotlin.idea.asJava.classes.* -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.* import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithVisibility +import org.jetbrains.kotlin.light.classes.symbol.classes.* import org.jetbrains.kotlin.load.java.JvmAbi +import org.jetbrains.kotlin.utils.addToStdlib.applyIf internal class FirLightClassForSymbol( private val classOrObjectSymbol: KtNamedClassOrObjectSymbol, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightInterfaceClassSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightInterfaceClassSymbol.kt similarity index 90% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightInterfaceClassSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightInterfaceClassSymbol.kt index 4df84a6981f..38a5c684d2f 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightInterfaceClassSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightInterfaceClassSymbol.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.idea.asJava.classes +package org.jetbrains.kotlin.light.classes.symbol.classes import com.intellij.psi.PsiManager import com.intellij.psi.PsiMethod @@ -11,14 +11,13 @@ import com.intellij.psi.PsiReferenceList import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightMethod -import org.jetbrains.kotlin.idea.asJava.FirLightClassForClassOrObjectSymbol -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind -import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.isPrivateOrPrivateToThis +import org.jetbrains.kotlin.light.classes.symbol.FirLightClassForClassOrObjectSymbol +import org.jetbrains.kotlin.light.classes.symbol.analyzeWithSymbolAsContext internal class FirLightInterfaceClassSymbol( private val classOrObjectSymbol: KtNamedClassOrObjectSymbol, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightInterfaceOrAnnotationClassSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightInterfaceOrAnnotationClassSymbol.kt similarity index 92% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightInterfaceOrAnnotationClassSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightInterfaceOrAnnotationClassSymbol.kt index 63ea69446c0..fa7541098eb 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightInterfaceOrAnnotationClassSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightInterfaceOrAnnotationClassSymbol.kt @@ -3,16 +3,15 @@ * 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.idea.asJava.classes +package org.jetbrains.kotlin.light.classes.symbol.classes import com.intellij.psi.* import org.jetbrains.kotlin.asJava.classes.lazyPub -import org.jetbrains.kotlin.idea.asJava.* import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind -import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolKind +import org.jetbrains.kotlin.light.classes.symbol.* internal abstract class FirLightInterfaceOrAnnotationClassSymbol( private val classOrObjectSymbol: KtNamedClassOrObjectSymbol, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/KtFirBasedFakeLightClass.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/KtFirBasedFakeLightClass.kt similarity index 92% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/KtFirBasedFakeLightClass.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/KtFirBasedFakeLightClass.kt index 20d6f479556..3736aa42843 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/KtFirBasedFakeLightClass.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/KtFirBasedFakeLightClass.kt @@ -3,14 +3,14 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.PsiClass import org.jetbrains.kotlin.asJava.classes.KtFakeLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.LightClassInheritanceHelper -import org.jetbrains.kotlin.idea.asJava.classes.checkIsInheritor import org.jetbrains.kotlin.idea.frontend.api.tokens.HackToForceAllowRunningAnalyzeOnEDT +import org.jetbrains.kotlin.light.classes.symbol.classes.checkIsInheritor import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/analyseForLightClasses.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/analyseForLightClasses.kt similarity index 91% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/analyseForLightClasses.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/analyseForLightClasses.kt index d755a897620..3982a5996e9 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/analyseForLightClasses.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/analyseForLightClasses.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.idea.asJava.classes +package org.jetbrains.kotlin.light.classes.symbol.classes import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession import org.jetbrains.kotlin.idea.frontend.api.analyseWithCustomToken diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/firLightClassUtils.kt similarity index 93% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/firLightClassUtils.kt index 600e1b0deb4..e8520205b62 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/firLightClassUtils.kt @@ -3,29 +3,33 @@ * 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.idea.asJava.classes +package org.jetbrains.kotlin.light.classes.symbol.classes import com.intellij.psi.PsiManager import com.intellij.psi.PsiReferenceList import com.intellij.psi.util.CachedValueProvider import com.intellij.psi.util.CachedValuesManager import org.jetbrains.kotlin.analysis.providers.createProjectWideOutOfBlockModificationTracker -import org.jetbrains.kotlin.asJava.classes.* +import org.jetbrains.kotlin.asJava.classes.KotlinSuperTypeListBuilder +import org.jetbrains.kotlin.asJava.classes.KtLightClass +import org.jetbrains.kotlin.asJava.classes.METHOD_INDEX_BASE +import org.jetbrains.kotlin.asJava.classes.shouldNotBeVisibleAsLightClass import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget -import org.jetbrains.kotlin.name.StandardClassIds -import org.jetbrains.kotlin.idea.asJava.* -import org.jetbrains.kotlin.idea.frontend.api.tokens.HackToForceAllowRunningAnalyzeOnEDT -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext -import org.jetbrains.kotlin.idea.frontend.api.tokens.hackyAllowRunningOnEdt 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.KtSymbolWithMembers +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypeAndAnnotations +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.isPrivateOrPrivateToThis +import org.jetbrains.kotlin.idea.frontend.api.tokens.HackToForceAllowRunningAnalyzeOnEDT +import org.jetbrains.kotlin.idea.frontend.api.tokens.hackyAllowRunningOnEdt import org.jetbrains.kotlin.idea.frontend.api.types.KtNonErrorClassType import org.jetbrains.kotlin.idea.frontend.api.types.KtType import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.light.classes.symbol.* import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.containingClass import java.util.* @@ -125,7 +129,7 @@ internal fun FirLightClassBase.createConstructors( result: MutableList ) { for (declaration in declarations) { - if (declaration.isHiddenOrSynthetic()) continue + if (declaration.isHiddenOrSynthetic(project)) continue result.add( FirLightConstructorForSymbol( constructorSymbol = declaration, @@ -148,7 +152,7 @@ internal fun FirLightClassBase.createMethods( fun handleDeclaration(declaration: KtCallableSymbol) { when (declaration) { is KtFunctionSymbol -> { - if (declaration.isInline || declaration.isHiddenOrSynthetic()) return + if (declaration.isInline || declaration.isHiddenOrSynthetic(project)) return var methodIndex = METHOD_INDEX_BASE result.add( @@ -198,8 +202,8 @@ internal fun FirLightClassBase.createMethods( fun KtPropertyAccessorSymbol.needToCreateAccessor(siteTarget: AnnotationUseSiteTarget): Boolean { if (isInline) return false if (!hasBody && visibility.isPrivateOrPrivateToThis()) return false - if (declaration.isHiddenOrSynthetic(siteTarget)) return false - if (isHiddenOrSynthetic()) return false + if (declaration.isHiddenOrSynthetic(project, siteTarget)) return false + if (isHiddenOrSynthetic(project)) return false return true } @@ -262,7 +266,7 @@ internal fun FirLightClassBase.createField( is KtSyntheticJavaPropertySymbol -> true is KtKotlinPropertySymbol -> when { property.modality == Modality.ABSTRACT -> false - property.isHiddenOrSynthetic() -> false + property.isHiddenOrSynthetic(project) -> false property.isLateInit -> true //TODO Fix it when KtFirConstructorValueParameterSymbol be ready property.psi.let { it == null || it is KtParameter } -> true @@ -334,7 +338,7 @@ internal fun KtSymbolWithMembers.createInnerClasses(manager: PsiManager): List().mapTo(result) { it.createLightClassNoCache(manager) } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/codeReferences/FirLightPsiJavaCodeReferenceElementBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/codeReferences/FirLightPsiJavaCodeReferenceElementBase.kt similarity index 95% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/codeReferences/FirLightPsiJavaCodeReferenceElementBase.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/codeReferences/FirLightPsiJavaCodeReferenceElementBase.kt index 7d0200d1d31..632aed62997 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/codeReferences/FirLightPsiJavaCodeReferenceElementBase.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/codeReferences/FirLightPsiJavaCodeReferenceElementBase.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import com.intellij.psi.scope.PsiScopeProcessor diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/codeReferences/FirLightPsiJavaCodeReferenceElementWithNoReference.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/codeReferences/FirLightPsiJavaCodeReferenceElementWithNoReference.kt similarity index 96% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/codeReferences/FirLightPsiJavaCodeReferenceElementWithNoReference.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/codeReferences/FirLightPsiJavaCodeReferenceElementWithNoReference.kt index 59f9313d479..732de8fde2d 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/codeReferences/FirLightPsiJavaCodeReferenceElementWithNoReference.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/codeReferences/FirLightPsiJavaCodeReferenceElementWithNoReference.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiElement diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/codeReferences/FirLightPsiJavaCodeReferenceElementWithReference.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/codeReferences/FirLightPsiJavaCodeReferenceElementWithReference.kt similarity index 79% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/codeReferences/FirLightPsiJavaCodeReferenceElementWithReference.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/codeReferences/FirLightPsiJavaCodeReferenceElementWithReference.kt index 848deb7bdc7..d315e66c8b2 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/codeReferences/FirLightPsiJavaCodeReferenceElementWithReference.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/codeReferences/FirLightPsiJavaCodeReferenceElementWithReference.kt @@ -3,9 +3,10 @@ * 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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol -import com.intellij.psi.* +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiReference internal class FirLightPsiJavaCodeReferenceElementWithReference(private val ktElement: PsiElement, reference: PsiReference): FirLightPsiJavaCodeReferenceElementBase(ktElement), diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/fields/FirLightField.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/FirLightField.kt similarity index 97% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/fields/FirLightField.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/FirLightField.kt index 5603b18d99d..b8b6f796deb 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/fields/FirLightField.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/FirLightField.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.lang.Language import com.intellij.psi.* @@ -17,7 +17,6 @@ import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.cannotModify import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.idea.KotlinLanguage -import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.psi.KtNamedDeclaration import javax.swing.Icon diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/fields/FirLightFieldEnumEntry.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/FirLightFieldEnumEntry.kt similarity index 90% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/fields/FirLightFieldEnumEntry.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/FirLightFieldEnumEntry.kt index aab6c041e18..e7e77444465 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/fields/FirLightFieldEnumEntry.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/FirLightFieldEnumEntry.kt @@ -3,18 +3,17 @@ * 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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin -import org.jetbrains.kotlin.asJava.classes.* -import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier -import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.idea.asJava.* -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext +import org.jetbrains.kotlin.asJava.classes.FirLightClassForEnumEntry +import org.jetbrains.kotlin.asJava.classes.cannotModify +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtEnumEntrySymbol import org.jetbrains.kotlin.psi.KtEnumEntry +import org.jetbrains.kotlin.utils.addToStdlib.ifTrue internal class FirLightFieldForEnumEntry( private val enumEntrySymbol: KtEnumEntrySymbol, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/fields/FirLightFieldForObjectSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/FirLightFieldForObjectSymbol.kt similarity index 91% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/fields/FirLightFieldForObjectSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/FirLightFieldForObjectSymbol.kt index b7fa27eb86b..0c45b184fdd 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/fields/FirLightFieldForObjectSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/FirLightFieldForObjectSymbol.kt @@ -3,17 +3,14 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.lazyPub -import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedClassOrObjectSymbol -import org.jetbrains.kotlin.load.kotlin.TypeMappingMode import org.jetbrains.kotlin.psi.KtDeclaration internal class FirLightFieldForObjectSymbol( diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/fields/FirLightFieldForPropertySymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/FirLightFieldForPropertySymbol.kt similarity index 95% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/fields/FirLightFieldForPropertySymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/FirLightFieldForPropertySymbol.kt index d54f1b6e24a..f3464ef3198 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/fields/FirLightFieldForPropertySymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/FirLightFieldForPropertySymbol.kt @@ -3,14 +3,12 @@ * 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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin import org.jetbrains.kotlin.asJava.classes.lazyPub -import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtKotlinPropertySymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySymbol diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/firLightUtils.kt similarity index 98% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/firLightUtils.kt index 7bad38eb8c6..dc27a5710a6 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/firLightUtils.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import com.intellij.util.IncorrectOperationException @@ -200,7 +200,5 @@ internal fun KtSimpleConstantValue<*>.createPsiLiteral(parent: PsiElement): PsiE } } -internal inline fun T.applyIf(`if`: Boolean, body: T.() -> T): T = - if (`if`) body() else this internal fun BitSet.copy(): BitSet = clone() as BitSet diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/lightClassUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/lightClassUtils.kt new file mode 100644 index 00000000000..09da936a033 --- /dev/null +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/lightClassUtils.kt @@ -0,0 +1,34 @@ +/* + * Copyright 2010-2021 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.light.classes.symbol + +import com.intellij.openapi.project.Project +import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.idea.frontend.api.InvalidWayOfUsingAnalysisSession +import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession +import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSessionProvider +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol +import org.jetbrains.kotlin.idea.frontend.api.tokens.HackToForceAllowRunningAnalyzeOnEDT +import org.jetbrains.kotlin.idea.frontend.api.tokens.hackyAllowRunningOnEdt + +@OptIn(HackToForceAllowRunningAnalyzeOnEDT::class) +internal inline fun allowLightClassesOnEdt(action: () -> E): E = hackyAllowRunningOnEdt(action) + +@OptIn(InvalidWayOfUsingAnalysisSession::class) +internal inline fun PsiElement.analyzeWithSymbolAsContext( + contextSymbol: KtSymbol, + action: KtAnalysisSession.() -> R +): R { + return project.analyzeWithSymbolAsContext(contextSymbol, action) +} + +@OptIn(InvalidWayOfUsingAnalysisSession::class) +internal inline fun Project.analyzeWithSymbolAsContext( + contextSymbol: KtSymbol, + action: KtAnalysisSession.() -> R +): R { + return KtAnalysisSessionProvider.getInstance(this).analyzeWithSymbolAsContext(contextSymbol, action) +} \ No newline at end of file diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightAccessorMethodForSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightAccessorMethodForSymbol.kt similarity index 93% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightAccessorMethodForSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightAccessorMethodForSymbol.kt index c6c3c3b8731..9ab74bf5503 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightAccessorMethodForSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightAccessorMethodForSymbol.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import com.intellij.psi.impl.light.LightParameterListBuilder @@ -11,16 +11,18 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin import org.jetbrains.kotlin.asJava.classes.METHOD_INDEX_FOR_GETTER import org.jetbrains.kotlin.asJava.classes.METHOD_INDEX_FOR_SETTER import org.jetbrains.kotlin.asJava.classes.lazyPub -import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget -import org.jetbrains.kotlin.idea.asJava.parameters.FirLightSetterParameterForSymbol -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.isValid -import org.jetbrains.kotlin.idea.frontend.api.symbols.* +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertyAccessorSymbol +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertyGetterSymbol +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySetterSymbol +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySymbol +import org.jetbrains.kotlin.light.classes.symbol.parameters.FirLightSetterParameterForSymbol import org.jetbrains.kotlin.load.java.JvmAbi.getterName import org.jetbrains.kotlin.load.java.JvmAbi.setterName import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtParameter +import org.jetbrains.kotlin.utils.addToStdlib.ifTrue internal class FirLightAccessorMethodForSymbol( private val propertyAccessorSymbol: KtPropertyAccessorSymbol, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightConstructorForSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightConstructorForSymbol.kt similarity index 97% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightConstructorForSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightConstructorForSymbol.kt index c08798015bf..171923efb3a 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightConstructorForSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightConstructorForSymbol.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightMethod.kt similarity index 96% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightMethod.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightMethod.kt index 587585fdb16..3b1823ae599 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightMethod.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import com.intellij.psi.impl.PsiImplUtil @@ -15,13 +15,12 @@ import org.jetbrains.kotlin.asJava.classes.KotlinLightReferenceListBuilder import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.cannotModify import org.jetbrains.kotlin.asJava.elements.KtLightMethod -import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget -import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtAnnotatedSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithVisibility +import org.jetbrains.kotlin.utils.addToStdlib.ifTrue internal abstract class FirLightMethod( lightMemberOrigin: LightMemberOrigin?, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightMethodForSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightMethodForSymbol.kt similarity index 86% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightMethodForSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightMethodForSymbol.kt index 9e76674fe5a..d5bf7d104a7 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightMethodForSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightMethodForSymbol.kt @@ -3,17 +3,17 @@ * 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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol -import com.intellij.psi.* +import com.intellij.psi.PsiIdentifier +import com.intellij.psi.PsiParameterList import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin import org.jetbrains.kotlin.asJava.classes.lazyPub -import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier -import org.jetbrains.kotlin.idea.asJava.parameters.FirLightParameterList import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionLikeSymbol +import org.jetbrains.kotlin.light.classes.symbol.parameters.FirLightParameterList import org.jetbrains.kotlin.psi.KtDeclaration -import java.util.BitSet +import java.util.* internal abstract class FirLightMethodForSymbol( private val functionSymbol: KtFunctionLikeSymbol, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightSimpleMethodForSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightSimpleMethodForSymbol.kt similarity index 96% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightSimpleMethodForSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightSimpleMethodForSymbol.kt index fd93aba7342..b5117fcbbb1 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/methods/FirLightSimpleMethodForSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/FirLightSimpleMethodForSymbol.kt @@ -3,16 +3,15 @@ * 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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin import org.jetbrains.kotlin.asJava.classes.lazyPub -import org.jetbrains.kotlin.idea.asJava.elements.FirLightTypeParameterListForSymbol -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.utils.addToStdlib.ifTrue import java.util.* internal class FirLightSimpleMethodForSymbol( diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/modifierLists/FirLightClassModifierList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/FirLightClassModifierList.kt similarity index 96% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/modifierLists/FirLightClassModifierList.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/FirLightClassModifierList.kt index 92592d8c4a7..155226c51bb 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/modifierLists/FirLightClassModifierList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/FirLightClassModifierList.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiModifierListOwner diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/modifierLists/FirLightModifierList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/FirLightModifierList.kt similarity index 92% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/modifierLists/FirLightModifierList.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/FirLightModifierList.kt index f18ac6720db..bb1ff8363b7 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/modifierLists/FirLightModifierList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/FirLightModifierList.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiElement @@ -11,7 +11,8 @@ import com.intellij.psi.PsiModifierList import com.intellij.psi.PsiModifierListOwner import com.intellij.util.IncorrectOperationException import org.jetbrains.kotlin.asJava.classes.cannotModify -import org.jetbrains.kotlin.asJava.elements.* +import org.jetbrains.kotlin.asJava.elements.KtLightElement +import org.jetbrains.kotlin.asJava.elements.KtLightElementBase import org.jetbrains.kotlin.psi.KtModifierList import org.jetbrains.kotlin.psi.KtModifierListOwner diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameter.kt similarity index 98% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameter.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameter.kt index 7a9d2f05073..e2cfe6e1485 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameter.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameter.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.navigation.NavigationItem import com.intellij.psi.* diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameterBaseForSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameterBaseForSymbol.kt similarity index 90% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameterBaseForSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameterBaseForSymbol.kt index 7b78205ffdf..3b29ecc0c9c 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameterBaseForSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameterBaseForSymbol.kt @@ -3,13 +3,11 @@ * 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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.* import org.jetbrains.kotlin.asJava.classes.lazyPub -import org.jetbrains.kotlin.asJava.elements.FirLightIdentifier -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext -import org.jetbrains.kotlin.idea.frontend.api.symbols.* +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtValueParameterSymbol import org.jetbrains.kotlin.psi.KtParameter internal abstract class FirLightParameterBaseForSymbol( diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameterForReceiver.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameterForReceiver.kt similarity index 94% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameterForReceiver.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameterForReceiver.kt index 141c6c43ce2..ebdc5f2cd6e 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameterForReceiver.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameterForReceiver.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiIdentifier @@ -11,13 +11,11 @@ import com.intellij.psi.PsiModifierList import com.intellij.psi.PsiType import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.codegen.AsmUtil -import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol -import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypeAndAnnotations import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtNamedSymbol +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypeAndAnnotations import org.jetbrains.kotlin.psi.KtParameter internal class FirLightParameterForReceiver private constructor( diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameterForSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameterForSymbol.kt similarity index 94% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameterForSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameterForSymbol.kt index cb13d181c93..1afee923be0 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameterForSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameterForSymbol.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.idea.asJava +package org.jetbrains.kotlin.light.classes.symbol import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiModifierList @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.idea.frontend.api.isValid import org.jetbrains.kotlin.idea.frontend.api.symbols.KtValueParameterSymbol +import org.jetbrains.kotlin.utils.addToStdlib.ifTrue internal class FirLightParameterForSymbol( private val parameterSymbol: KtValueParameterSymbol, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameterList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameterList.kt similarity index 88% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameterList.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameterList.kt index 04ae0cef665..2e19f4a27c6 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightParameterList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightParameterList.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.idea.asJava.parameters +package org.jetbrains.kotlin.light.classes.symbol.parameters import com.intellij.psi.PsiParameter import com.intellij.psi.PsiParameterList @@ -11,13 +11,13 @@ import com.intellij.psi.impl.light.LightParameterListBuilder import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightElement import org.jetbrains.kotlin.asJava.elements.KtLightElementBase -import org.jetbrains.kotlin.idea.asJava.FirLightMethod -import org.jetbrains.kotlin.idea.asJava.FirLightParameterForReceiver -import org.jetbrains.kotlin.idea.asJava.FirLightParameterForSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionLikeSymbol +import org.jetbrains.kotlin.light.classes.symbol.FirLightMethod +import org.jetbrains.kotlin.light.classes.symbol.FirLightParameterForReceiver +import org.jetbrains.kotlin.light.classes.symbol.FirLightParameterForSymbol import org.jetbrains.kotlin.psi.KtFunction import org.jetbrains.kotlin.psi.KtParameterList -import java.util.BitSet +import java.util.* internal class FirLightParameterList( private val parent: FirLightMethod, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightSetterParameterForSymbol.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightSetterParameterForSymbol.kt similarity index 94% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightSetterParameterForSymbol.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightSetterParameterForSymbol.kt index 43b1addebff..c80bea245ed 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightSetterParameterForSymbol.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightSetterParameterForSymbol.kt @@ -3,16 +3,16 @@ * 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.idea.asJava.parameters +package org.jetbrains.kotlin.light.classes.symbol.parameters import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiModifierList import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget -import org.jetbrains.kotlin.idea.asJava.* import org.jetbrains.kotlin.idea.frontend.api.isValid -import org.jetbrains.kotlin.idea.frontend.api.symbols.KtValueParameterSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPropertySymbol +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtValueParameterSymbol +import org.jetbrains.kotlin.light.classes.symbol.* internal class FirLightSetterParameterForSymbol( private val containingPropertySymbol: KtPropertySymbol, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightTypeParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightTypeParameter.kt similarity index 94% rename from idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightTypeParameter.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightTypeParameter.kt index f86e987d957..7d23b63e946 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/parameters/FirLightTypeParameter.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightTypeParameter.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.idea.asJava.elements +package org.jetbrains.kotlin.light.classes.symbol.elements import com.intellij.lang.Language import com.intellij.openapi.util.Pair @@ -19,14 +19,15 @@ 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.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.fir.analyzeWithSymbolAsContext 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.KtNonErrorClassType -import org.jetbrains.kotlin.load.kotlin.TypeMappingMode +import org.jetbrains.kotlin.light.classes.symbol.* +import org.jetbrains.kotlin.light.classes.symbol.FirLightTypeParameterListForSymbol +import org.jetbrains.kotlin.light.classes.symbol.analyzeWithSymbolAsContext +import org.jetbrains.kotlin.light.classes.symbol.basicIsEquivalentTo +import org.jetbrains.kotlin.light.classes.symbol.invalidAccess +import org.jetbrains.kotlin.light.classes.symbol.mapSuperType import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.psi.KtTypeParameter import org.jetbrains.kotlin.psi.psiUtil.startOffset diff --git a/build.gradle.kts b/build.gradle.kts index 1fcdcb9c228..f5ca62fd26e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -299,6 +299,7 @@ extra["compilerArtifactsForIde"] = listOf( ":prepare:ide-plugin-dependencies:high-level-api-fir-for-ide", ":prepare:ide-plugin-dependencies:high-level-api-fir-tests-for-ide", ":prepare:ide-plugin-dependencies:analysis-api-providers-for-ide", + ":prepare:ide-plugin-dependencies:symbol-light-classes-for-ide", ":kotlin-script-runtime", ":kotlin-script-util", ":kotlin-scripting-common", diff --git a/core/util.runtime/src/org/jetbrains/kotlin/utils/addToStdlib.kt b/core/util.runtime/src/org/jetbrains/kotlin/utils/addToStdlib.kt index 820ce20ed9f..bcdd8d37d68 100644 --- a/core/util.runtime/src/org/jetbrains/kotlin/utils/addToStdlib.kt +++ b/core/util.runtime/src/org/jetbrains/kotlin/utils/addToStdlib.kt @@ -184,3 +184,13 @@ inline fun MutableMap.getOrPut(key: K, defaultValue: (K) -> value } } + +inline fun T.applyIf(`if`: Boolean, body: T.() -> T): T = + if (`if`) body() else this + + +inline fun Boolean.ifTrue(body: () -> T?): T? = + if (this) body() else null + +inline fun Boolean.ifFalse(body: () -> T?): T? = + if (!this) body() else null diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtAnalysisSessionProvider.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtAnalysisSessionProvider.kt index 52da4eee02c..59e07136f1f 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtAnalysisSessionProvider.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtAnalysisSessionProvider.kt @@ -13,6 +13,7 @@ import com.intellij.openapi.progress.Task import com.intellij.openapi.project.Project import com.intellij.openapi.util.Computable import org.jetbrains.annotations.TestOnly +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol import org.jetbrains.kotlin.idea.frontend.api.tokens.AlwaysAccessibleValidityTokenFactory import org.jetbrains.kotlin.idea.frontend.api.tokens.ReadActionConfinementValidityTokenFactory import org.jetbrains.kotlin.idea.frontend.api.tokens.ValidityTokenFactory @@ -38,6 +39,18 @@ public abstract class KtAnalysisSessionProvider : Disposable { @InvalidWayOfUsingAnalysisSession public abstract fun getAnalysisSession(contextElement: KtElement, factory: ValidityTokenFactory): KtAnalysisSession + @InvalidWayOfUsingAnalysisSession + public abstract fun getAnalysisSessionBySymbol(contextSymbol: KtSymbol): KtAnalysisSession + + @InvalidWayOfUsingAnalysisSession + public inline fun analyzeWithSymbolAsContext( + contextSymbol: KtSymbol, + action: KtAnalysisSession.() -> R + ): R { + val analysisSession = getAnalysisSessionBySymbol(contextSymbol) + return action(analysisSession) + } + @InvalidWayOfUsingAnalysisSession public inline fun analyseInDependedAnalysisSession( originalFile: KtFile, diff --git a/idea/idea-frontend-fir/build.gradle.kts b/idea/idea-frontend-fir/build.gradle.kts index 02b4c37ddf3..d2c691ab4ee 100644 --- a/idea/idea-frontend-fir/build.gradle.kts +++ b/idea/idea-frontend-fir/build.gradle.kts @@ -28,6 +28,7 @@ dependencies { testCompile(project(":kotlin-test:kotlin-test-junit")) testCompile(toolsJar()) testApiJUnit5() + testRuntime(project(":analysis:symbol-light-classes")) testRuntimeOnly(intellijDep()) { includeJars( diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/build.gradle.kts b/idea/idea-frontend-fir/idea-fir-low-level-api/build.gradle.kts index 1a2e33da29b..916b99d48ad 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/build.gradle.kts +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/build.gradle.kts @@ -33,6 +33,7 @@ dependencies { testCompile(project(":kotlin-test:kotlin-test-junit")) testApiJUnit5() testCompile(project(":kotlin-reflect")) + testImplementation(project(":analysis:symbol-light-classes")) testRuntimeOnly(intellijDep()) { includeJars( diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirModuleResolveStateImpl.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirModuleResolveStateImpl.kt index c0a54e4dc41..a8fa8991760 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirModuleResolveStateImpl.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirModuleResolveStateImpl.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.idea.fir.low.level.api import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.analysis.providers.getModuleInfo import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.analyzer.ModuleSourceInfoBase import org.jetbrains.kotlin.fir.FirElement @@ -21,7 +22,6 @@ import org.jetbrains.kotlin.fir.resolve.symbolProvider import org.jetbrains.kotlin.idea.fir.low.level.api.annotations.InternalForInline import org.jetbrains.kotlin.idea.fir.low.level.api.api.DiagnosticCheckerFilter import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState -import org.jetbrains.kotlin.idea.fir.low.level.api.api.getModuleInfo import org.jetbrains.kotlin.idea.fir.low.level.api.diagnostics.DiagnosticsCollector import org.jetbrains.kotlin.idea.fir.low.level.api.element.builder.FirElementBuilder import org.jetbrains.kotlin.idea.fir.low.level.api.element.builder.getNonLocalContainingOrThisDeclaration diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/FirModuleResolveStateConfigurator.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/FirModuleResolveStateConfigurator.kt index 693a990dc09..2909df373fc 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/FirModuleResolveStateConfigurator.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/FirModuleResolveStateConfigurator.kt @@ -29,13 +29,9 @@ abstract class FirModuleResolveStateConfigurator { abstract fun getModuleSourceScope(moduleInfo: ModuleSourceInfoBase): GlobalSearchScope abstract fun createScopeForModuleLibraries(moduleInfo: ModuleSourceInfoBase): GlobalSearchScope abstract fun createSealedInheritorsProvider(): SealedClassInheritorsProvider - abstract fun getModuleInfoFor(element: KtElement): ModuleInfo abstract fun configureSourceSession(session: FirSession) } val Project.stateConfigurator: FirModuleResolveStateConfigurator - get() = ServiceManager.getService(this, FirModuleResolveStateConfigurator::class.java) - -fun KtElement.getModuleInfo(): ModuleInfo = - project.stateConfigurator.getModuleInfoFor(this) \ No newline at end of file + get() = ServiceManager.getService(this, FirModuleResolveStateConfigurator::class.java) \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacade.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacade.kt index 50a49131670..b3b0052acb6 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacade.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacade.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.idea.fir.low.level.api.api import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.analysis.providers.getModuleInfo import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacadeForResolveOnAir.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacadeForResolveOnAir.kt index b03682b30c3..6fc88f10f65 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacadeForResolveOnAir.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacadeForResolveOnAir.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.idea.fir.low.level.api.api import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.kotlin.analysis.providers.getModuleInfo import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall 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 c2ab37813c1..9e24944682b 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 @@ -14,6 +14,7 @@ import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.ProjectScope import org.jetbrains.kotlin.analysis.providers.KotlinDeclarationProviderFactory import org.jetbrains.kotlin.analysis.providers.KotlinModificationTrackerFactory +import org.jetbrains.kotlin.analysis.providers.KotlinModuleInfoProvider import org.jetbrains.kotlin.analysis.providers.KotlinPackageProviderFactory import org.jetbrains.kotlin.analysis.providers.impl.KotlinStaticDeclarationProviderFactory import org.jetbrains.kotlin.analysis.providers.impl.KotlinStaticModificationTrackerFactory @@ -32,7 +33,6 @@ 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.session.FirModuleInfoBasedModuleData -import org.jetbrains.kotlin.idea.asJava.IDEKotlinAsJavaFirSupport import org.jetbrains.kotlin.idea.fir.low.level.api.* import org.jetbrains.kotlin.idea.fir.low.level.api.api.* import org.jetbrains.kotlin.idea.fir.low.level.api.test.base.SealedClassInheritorsProviderTestImpl @@ -40,6 +40,7 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.transformers.FirLazyTransform import org.jetbrains.kotlin.idea.frontend.api.InvalidWayOfUsingAnalysisSession import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSessionProvider import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSessionProvider +import org.jetbrains.kotlin.light.classes.symbol.IDEKotlinAsJavaFirSupport import org.jetbrains.kotlin.load.kotlin.PackagePartProvider import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.TargetPlatform @@ -190,7 +191,7 @@ class ModuleRegistrarPreAnalysisHandler( testServices, parentDisposable ) - (project as MockProject).registerTestServices(configurator, allKtFiles) + (project as MockProject).registerTestServices(configurator, allKtFiles, testServices) } } } @@ -233,7 +234,6 @@ class FirModuleResolveStateConfiguratorForSingleModuleTestImpl( testServices: TestServices, private val parentDisposable: Disposable, ) : FirModuleResolveStateConfigurator() { - private val moduleInfoProvider = testServices.moduleInfoProvider private val compilerConfigurationProvider = testServices.compilerConfigurationProvider private val librariesScope = ProjectScope.getLibrariesScope(project)//todo incorrect? private val sealedClassInheritorsProvider = SealedClassInheritorsProviderTestImpl() @@ -282,11 +282,6 @@ class FirModuleResolveStateConfiguratorForSingleModuleTestImpl( return sealedClassInheritorsProvider } - override fun getModuleInfoFor(element: KtElement): ModuleInfo { - val containingFile = element.containingKtFile - return moduleInfoProvider.getModuleInfoByKtFile(containingFile) - } - override fun configureSourceSession(session: FirSession) { } } @@ -294,6 +289,7 @@ class FirModuleResolveStateConfiguratorForSingleModuleTestImpl( fun MockProject.registerTestServices( configurator: FirModuleResolveStateConfiguratorForSingleModuleTestImpl, allKtFiles: List, + testServices: TestServices, ) { registerService( FirModuleResolveStateConfigurator::class.java, @@ -306,9 +302,19 @@ fun MockProject.registerTestServices( ) registerService(KotlinDeclarationProviderFactory::class.java, KotlinStaticDeclarationProviderFactory(allKtFiles)) registerService(KotlinPackageProviderFactory::class.java, KotlinStaticPackageProviderFactory(allKtFiles)) + registerService(KotlinModuleInfoProvider::class.java, TestKotlinModuleInfoProvider(testServices)) reRegisterJavaElementFinder(this) } +private class TestKotlinModuleInfoProvider(testServices: TestServices): KotlinModuleInfoProvider() { + private val moduleInfoProvider = testServices.moduleInfoProvider + override fun getModuleInfo(element: KtElement): ModuleInfo { + val containingFile = element.containingKtFile + return moduleInfoProvider.getModuleInfoByKtFile(containingFile) + } + +} + @OptIn(InvalidWayOfUsingAnalysisSession::class) private fun reRegisterJavaElementFinder(project: Project) { PsiElementFinder.EP.getPoint(project).unregisterExtension(JavaElementFinder::class.java) diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/firTestUtils.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/firTestUtils.kt index 6ad8eff8838..ad2898cc918 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/firTestUtils.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/firTestUtils.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.idea.fir.low.level.api import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.analysis.providers.getModuleInfo import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirRenderer import org.jetbrains.kotlin.fir.declarations.FirDeclaration @@ -17,7 +18,6 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState -import org.jetbrains.kotlin.idea.fir.low.level.api.api.getModuleInfo import org.jetbrains.kotlin.idea.fir.low.level.api.sessions.FirIdeSession import org.jetbrains.kotlin.psi.KtElement 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 2928b8eb2d2..3d1159b4d11 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 @@ -9,6 +9,7 @@ import com.intellij.mock.MockApplication import com.intellij.mock.MockProject import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.util.Disposer +import org.jetbrains.kotlin.analysis.providers.KotlinModuleInfoProvider import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.ModuleRegistrarPreAnalysisHandler import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.TestModuleInfoProvider diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/lightClassUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/lightClassUtils.kt deleted file mode 100644 index e3351af53da..00000000000 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/lightClassUtils.kt +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright 2010-2020 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.idea.asJava - -import org.jetbrains.kotlin.idea.frontend.api.tokens.HackToForceAllowRunningAnalyzeOnEDT -import org.jetbrains.kotlin.idea.frontend.api.tokens.hackyAllowRunningOnEdt - -@OptIn(HackToForceAllowRunningAnalyzeOnEDT::class) -internal inline fun allowLightClassesOnEdt(action: () -> E): E = hackyAllowRunningOnEdt(action) - -internal inline fun Boolean.ifTrue(body: () -> T?): T? = if (this) body() else null - -internal inline fun Boolean.ifFalse(body: () -> T?): T? = if (!this) body() else null \ No newline at end of file diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSessionProvider.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSessionProvider.kt index be855147895..0d7a3f4c98f 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSessionProvider.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSessionProvider.kt @@ -15,6 +15,8 @@ import org.jetbrains.kotlin.analysis.providers.createProjectWideOutOfBlockModifi import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState import org.jetbrains.kotlin.idea.fir.low.level.api.api.getResolveState import org.jetbrains.kotlin.idea.frontend.api.* +import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirSymbol +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol import org.jetbrains.kotlin.idea.frontend.api.tokens.ValidityToken import org.jetbrains.kotlin.idea.frontend.api.tokens.ValidityTokenFactory import org.jetbrains.kotlin.psi.KtElement @@ -35,8 +37,15 @@ class KtFirAnalysisSessionProvider(private val project: Project) : KtAnalysisSes } } - @InvalidWayOfUsingAnalysisSession - fun getCachedAnalysisSession(resolveState: FirModuleResolveState, token: ValidityToken): KtAnalysisSession? { + override fun getAnalysisSessionBySymbol(contextSymbol: KtSymbol): KtAnalysisSession { + require(contextSymbol is KtFirSymbol<*>) + val resolveState = contextSymbol.firRef.resolveState + val token = contextSymbol.token + return getCachedAnalysisSession(resolveState, token) + ?: error("analysis session was not found for ${contextSymbol::class}, symbol.isValid=${contextSymbol.isValid()}") + } + + private fun getCachedAnalysisSession(resolveState: FirModuleResolveState, token: ValidityToken): KtAnalysisSession? { return cache.getCachedAnalysisSession(resolveState to token::class) } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/analysisSessionInternalUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/analysisSessionInternalUtils.kt deleted file mode 100644 index eee112704f9..00000000000 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/analysisSessionInternalUtils.kt +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2010-2020 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.idea.frontend.api.fir - -import com.intellij.openapi.components.ServiceManager -import org.jetbrains.kotlin.idea.frontend.api.InvalidWayOfUsingAnalysisSession -import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession -import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSessionProvider -import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirSymbol -import org.jetbrains.kotlin.idea.frontend.api.fir.utils.EntityWasGarbageCollectedException -import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol - -@OptIn(InvalidWayOfUsingAnalysisSession::class) -internal inline fun analyzeWithSymbolAsContext( - contextSymbol: KtSymbol, - action: KtAnalysisSession.() -> R -): R { - require(contextSymbol is KtFirSymbol<*>) - val resolveState = contextSymbol.firRef.resolveState - val token = contextSymbol.token - val analysisSessionProvider = ServiceManager.getService(resolveState.project, KtAnalysisSessionProvider::class.java) - check(analysisSessionProvider is KtFirAnalysisSessionProvider) - val analysisSession = analysisSessionProvider.getCachedAnalysisSession(resolveState, token) - ?: throw EntityWasGarbageCollectedException("KtAnalysisSession") - return action(analysisSession) -} diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/ConeTypeIdeRenderer.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/ConeTypeIdeRenderer.kt index 231a9f0ea91..2429ebb0267 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/ConeTypeIdeRenderer.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/ConeTypeIdeRenderer.kt @@ -19,12 +19,12 @@ import org.jetbrains.kotlin.fir.resolve.toFirRegularClass import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.types.* -import org.jetbrains.kotlin.idea.asJava.applyIf import org.jetbrains.kotlin.idea.fir.low.level.api.api.tryCollectDesignation import org.jetbrains.kotlin.idea.frontend.api.components.KtTypeRendererOptions import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.renderer.render +import org.jetbrains.kotlin.utils.addToStdlib.applyIf internal class ConeTypeIdeRenderer( private val session: FirSession, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/FirIdeRenderer.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/FirIdeRenderer.kt index 84be8300b40..cb6da967124 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/FirIdeRenderer.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/FirIdeRenderer.kt @@ -18,8 +18,6 @@ import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.resolve.defaultType import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.visitors.FirVisitor -import org.jetbrains.kotlin.idea.asJava.applyIf -import org.jetbrains.kotlin.idea.asJava.ifTrue import org.jetbrains.kotlin.idea.frontend.api.components.KtDeclarationRendererOptions import org.jetbrains.kotlin.idea.frontend.api.components.RendererModifier import org.jetbrains.kotlin.idea.frontend.api.fir.types.PublicTypeApproximator @@ -27,6 +25,8 @@ import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.renderer.render import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly +import org.jetbrains.kotlin.utils.addToStdlib.applyIf +import org.jetbrains.kotlin.utils.addToStdlib.ifTrue internal class FirIdeRenderer private constructor( private var containingDeclaration: FirDeclaration?, diff --git a/prepare/ide-plugin-dependencies/symbol-light-classes-for-ide/build.gradle.kts b/prepare/ide-plugin-dependencies/symbol-light-classes-for-ide/build.gradle.kts new file mode 100644 index 00000000000..4028d670a0b --- /dev/null +++ b/prepare/ide-plugin-dependencies/symbol-light-classes-for-ide/build.gradle.kts @@ -0,0 +1,5 @@ +plugins { + kotlin("jvm") +} + +publishJarsForIde(listOf(":analysis:symbol-light-classes")) diff --git a/settings.gradle b/settings.gradle index ccb12ea8752..a852ec16d0e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -327,7 +327,8 @@ if (!buildProperties.inJpsBuildIdeaSync) { ":prepare:ide-plugin-dependencies:high-level-api-for-ide", ":prepare:ide-plugin-dependencies:high-level-api-fir-for-ide", ":prepare:ide-plugin-dependencies:high-level-api-fir-tests-for-ide", - ":prepare:ide-plugin-dependencies:analysis-api-providers-for-ide" + ":prepare:ide-plugin-dependencies:analysis-api-providers-for-ide", + ":prepare:ide-plugin-dependencies:symbol-light-classes-for-ide" } void intellij(String imlPath) { @@ -442,7 +443,9 @@ include ":generators:frontend-api-generator", ":idea-frontend-fir:idea-frontend-fir-generator", ":idea-frontend-fir", ":idea-frontend-api", - ":analysis:analysis-api-providers" + ":analysis:analysis-api-providers", + ":analysis:symbol-light-classes" + if (buildProperties.inJpsBuildIdeaSync) { include ":kotlin-stdlib:jps-build"