From a9838131ada71c3792fd8b7a881916628d4e861c Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Thu, 20 May 2021 12:11:39 +0300 Subject: [PATCH] [FIR] Move jvm specific checkers to checkers.jvm module --- .../analysis/jvm}/checkers/JvmDeclarationCheckers.kt | 5 ++--- .../declaration}/FirJvmExternalDeclarationChecker.kt | 3 +-- .../kotlin/fir/analysis/checkers/FirModifierUtils.kt | 12 ++++++------ .../kotlin/fir/checkers/CheckersContainers.kt | 1 - .../AbstractFirIdeDiagnosticsCollector.kt | 2 ++ 5 files changed, 11 insertions(+), 12 deletions(-) rename compiler/fir/{entrypoint/src/org/jetbrains/kotlin/fir => checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm}/checkers/JvmDeclarationCheckers.kt (71%) rename compiler/fir/checkers/{src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/jvm => checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration}/FirJvmExternalDeclarationChecker.kt (94%) diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/JvmDeclarationCheckers.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/JvmDeclarationCheckers.kt similarity index 71% rename from compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/JvmDeclarationCheckers.kt rename to compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/JvmDeclarationCheckers.kt index 4f0f9734650..d754bdd67ec 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/JvmDeclarationCheckers.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/JvmDeclarationCheckers.kt @@ -3,12 +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.fir.checkers +package org.jetbrains.kotlin.fir.analysis.jvm.checkers import org.jetbrains.kotlin.fir.analysis.checkers.declaration.* -import org.jetbrains.kotlin.fir.analysis.checkers.declaration.jvm.FirJvmExternalDeclarationChecker +import org.jetbrains.kotlin.fir.analysis.jvm.checkers.declaration.FirJvmExternalDeclarationChecker -// TODO: Move this to different, JVM-specific module? object JvmDeclarationCheckers : DeclarationCheckers() { override val memberDeclarationCheckers: Set get() = setOf( diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/jvm/FirJvmExternalDeclarationChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmExternalDeclarationChecker.kt similarity index 94% rename from compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/jvm/FirJvmExternalDeclarationChecker.kt rename to compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmExternalDeclarationChecker.kt index 708388a2149..b25068a0809 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/jvm/FirJvmExternalDeclarationChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmExternalDeclarationChecker.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.fir.analysis.checkers.declaration.jvm +package org.jetbrains.kotlin.fir.analysis.jvm.checkers.declaration import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.lexer.KtTokens -// TODO: Move this to different, JVM-specific module? object FirJvmExternalDeclarationChecker : FirMemberDeclarationChecker() { override fun check(declaration: FirMemberDeclaration, context: CheckerContext, reporter: DiagnosticReporter) { if (!declaration.isExternal) return diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirModifierUtils.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirModifierUtils.kt index c9fb26237cb..b83d20620c5 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirModifierUtils.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirModifierUtils.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.psi.KtModifierListOwner // - use this to retrieve modifiers on the source and confirm a certain modifier indeed appears // DON'T // - don't use this to report an error or warning *on* that specific modifier. Use positioning strategies instead. -internal sealed class FirModifierList { +sealed class FirModifierList { abstract val modifiers: List> class FirPsiModifierList(val modifierList: KtModifierList) : FirModifierList() { @@ -51,7 +51,7 @@ internal sealed class FirModifierList { private val MODIFIER_KEYWORD_SET = TokenSet.orSet(KtTokens.SOFT_KEYWORDS, TokenSet.create(KtTokens.IN_KEYWORD, KtTokens.FUN_KEYWORD)) -internal sealed class FirModifier(val node: Node, val token: KtModifierKeywordToken) { +sealed class FirModifier(val node: Node, val token: KtModifierKeywordToken) { class FirPsiModifier( node: ASTNode, @@ -78,7 +78,7 @@ internal sealed class FirModifier(val node: Node, val token: KtModif abstract val source: FirSourceElement } -internal fun FirSourceElement?.getModifierList(): FirModifierList? { +fun FirSourceElement?.getModifierList(): FirModifierList? { return when (this) { null -> null is FirPsiSourceElement<*> -> (psi as? KtModifierListOwner)?.modifierList?.let { FirModifierList.FirPsiModifierList(it) } @@ -91,8 +91,8 @@ internal fun FirSourceElement?.getModifierList(): FirModifierList? { } } -internal operator fun FirModifierList?.contains(token: KtModifierKeywordToken): Boolean = this?.contains(token) == true +operator fun FirModifierList?.contains(token: KtModifierKeywordToken): Boolean = this?.contains(token) == true -internal fun FirElement.getModifier(token: KtModifierKeywordToken): FirModifier<*>? = source.getModifierList()?.get(token) +fun FirElement.getModifier(token: KtModifierKeywordToken): FirModifier<*>? = source.getModifierList()?.get(token) -internal fun FirElement.hasModifier(token: KtModifierKeywordToken): Boolean = token in source.getModifierList() +fun FirElement.hasModifier(token: KtModifierKeywordToken): Boolean = token in source.getModifierList() diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CheckersContainers.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CheckersContainers.kt index c7dccccb6ee..03623a39d1a 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CheckersContainers.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CheckersContainers.kt @@ -18,7 +18,6 @@ fun FirSessionFactory.FirSessionConfigurator.registerExtendedCommonCheckers() { useCheckers(ExtendedDeclarationCheckers) } -// TODO: Move this to different, JVM-specific module? fun FirSessionFactory.FirSessionConfigurator.registerJvmCheckers() { useCheckers(JvmDeclarationCheckers) } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostics/AbstractFirIdeDiagnosticsCollector.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostics/AbstractFirIdeDiagnosticsCollector.kt index 0250446ef43..0b9e150f6b1 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostics/AbstractFirIdeDiagnosticsCollector.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostics/AbstractFirIdeDiagnosticsCollector.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.idea.fir.low.level.api.diagnostics import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.analysis.CheckersComponentInternal +import org.jetbrains.kotlin.fir.analysis.checkers.* import org.jetbrains.kotlin.fir.analysis.checkers.declaration.ComposedDeclarationCheckers import org.jetbrains.kotlin.fir.analysis.checkers.declaration.DeclarationCheckers import org.jetbrains.kotlin.fir.analysis.checkers.expression.ExpressionCheckers @@ -14,6 +15,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.type.TypeCheckers import org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollector import org.jetbrains.kotlin.fir.analysis.collectors.components.* import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter +import org.jetbrains.kotlin.fir.analysis.jvm.checkers.JvmDeclarationCheckers import org.jetbrains.kotlin.fir.checkers.* import org.jetbrains.kotlin.fir.moduleData import org.jetbrains.kotlin.idea.fir.low.level.api.sessions.moduleSourceInfo