[FIR] extended checkers infrastructure refactoring
Removed strange way to enable Extended Checkers and add new way to do it
This commit is contained in:
committed by
Dmitriy Novozhilov
parent
38543ce2a3
commit
ab2128f55d
+2
-6
@@ -13,16 +13,12 @@ import org.jetbrains.kotlin.fir.analysis.checkers.extended.RedundantVisibilityMo
|
||||
object CommonDeclarationCheckers : DeclarationCheckers() {
|
||||
override val declarationCheckers: List<FirBasicDeclarationChecker> = listOf(
|
||||
FirAnnotationClassDeclarationChecker,
|
||||
FirModifierChecker,
|
||||
RedundantVisibilityModifierChecker,
|
||||
RedundantReturnUnitType
|
||||
FirModifierChecker
|
||||
)
|
||||
|
||||
override val memberDeclarationCheckers: List<FirMemberDeclarationChecker> = listOf(
|
||||
FirInfixFunctionDeclarationChecker,
|
||||
FirExposedVisibilityChecker,
|
||||
RedundantModalityModifierChecker,
|
||||
RedundantExplicitTypeChecker
|
||||
FirExposedVisibilityChecker
|
||||
)
|
||||
|
||||
override val constructorCheckers: List<FirConstructorChecker> = listOf(
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* 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.fir.analysis.checkers.declaration
|
||||
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.extended.RedundantExplicitTypeChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.extended.RedundantModalityModifierChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.extended.RedundantReturnUnitType
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.extended.RedundantVisibilityModifierChecker
|
||||
|
||||
object ExtendedDeclarationCheckers : DeclarationCheckers() {
|
||||
override val declarationCheckers = listOf(
|
||||
RedundantVisibilityModifierChecker,
|
||||
RedundantReturnUnitType
|
||||
)
|
||||
|
||||
override val memberDeclarationCheckers = listOf(
|
||||
RedundantExplicitTypeChecker,
|
||||
RedundantModalityModifierChecker
|
||||
)
|
||||
}
|
||||
+1
-1
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
|
||||
abstract class FirDeclarationChecker<in D : FirDeclaration> {
|
||||
abstract fun check(declaration: D, context: CheckerContext, reporter: DiagnosticReporter)
|
||||
open val isExtended = false
|
||||
|
||||
}
|
||||
|
||||
typealias FirBasicDeclarationChecker = FirDeclarationChecker<FirDeclaration>
|
||||
|
||||
-2
@@ -20,8 +20,6 @@ import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.psi.psiUtil.modalityModifier
|
||||
|
||||
object RedundantModalityModifierChecker : FirMemberDeclarationChecker() {
|
||||
override val isExtended = true
|
||||
|
||||
override fun check(declaration: FirMemberDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (declaration.source is FirFakeSourceElement<*>) return
|
||||
|
||||
|
||||
-2
@@ -15,8 +15,6 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
|
||||
import org.jetbrains.kotlin.fir.types.isUnit
|
||||
|
||||
object RedundantReturnUnitType : FirBasicDeclarationChecker() {
|
||||
override val isExtended = true
|
||||
|
||||
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (declaration !is FirSimpleFunction) return
|
||||
if (declaration.body is FirSingleExpressionBlock) return
|
||||
|
||||
-2
@@ -20,8 +20,6 @@ import org.jetbrains.kotlin.fir.toFirPsiSourceElement
|
||||
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifier
|
||||
|
||||
object RedundantVisibilityModifierChecker : FirBasicDeclarationChecker() {
|
||||
override val isExtended = true
|
||||
|
||||
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (declaration is FirConstructor && declaration.source is FirFakeSourceElement<*>) return
|
||||
if (declaration.source is FirFakeSourceElement<*>) return
|
||||
|
||||
+2
-2
@@ -196,9 +196,9 @@ abstract class AbstractDiagnosticCollector(
|
||||
}
|
||||
}
|
||||
|
||||
fun AbstractDiagnosticCollector.registerAllComponents(checkExtended: Boolean = false) {
|
||||
fun AbstractDiagnosticCollector.registerAllComponents() {
|
||||
initializeComponents(
|
||||
DeclarationCheckersDiagnosticComponent(this, checkExtended),
|
||||
DeclarationCheckersDiagnosticComponent(this),
|
||||
ExpressionCheckersDiagnosticComponent(this),
|
||||
ErrorNodeDiagnosticCollectorComponent(this),
|
||||
ControlFlowAnalysisDiagnosticComponent(this),
|
||||
|
||||
+2
-2
@@ -11,10 +11,10 @@ import org.jetbrains.kotlin.fir.analysis.extensions.additionalCheckers
|
||||
import org.jetbrains.kotlin.fir.extensions.extensionService
|
||||
|
||||
object FirDiagnosticsCollector {
|
||||
fun create(session: FirSession, checkExtended: Boolean = false): AbstractDiagnosticCollector {
|
||||
fun create(session: FirSession): AbstractDiagnosticCollector {
|
||||
session.registerAdditionalCheckers()
|
||||
val collector = SimpleDiagnosticsCollector(session)
|
||||
collector.registerAllComponents(checkExtended)
|
||||
collector.registerAllComponents()
|
||||
return collector
|
||||
}
|
||||
|
||||
|
||||
+2
-5
@@ -13,8 +13,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
|
||||
class DeclarationCheckersDiagnosticComponent(
|
||||
collector: AbstractDiagnosticCollector,
|
||||
private val checkExtended: Boolean
|
||||
collector: AbstractDiagnosticCollector
|
||||
) : AbstractDiagnosticCollectorComponent(collector) {
|
||||
private val checkers = session.checkersComponent.declarationCheckers
|
||||
|
||||
@@ -72,9 +71,7 @@ class DeclarationCheckersDiagnosticComponent(
|
||||
reporter: DiagnosticReporter
|
||||
) {
|
||||
for (checker in this) {
|
||||
if (!checker.isExtended || checkExtended) {
|
||||
checker.check(declaration, context, reporter)
|
||||
}
|
||||
checker.check(declaration, context, reporter)
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-1
@@ -5,6 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir
|
||||
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.ExtendedDeclarationCheckers
|
||||
import org.jetbrains.kotlin.fir.analysis.checkersComponent
|
||||
|
||||
abstract class AbstractExtendedFirDiagnosticsTest : AbstractFirDiagnosticsTest() {
|
||||
override fun useExtendedCheckersIfNeeded(): Boolean = true
|
||||
override fun configureSession(session: FirSession) {
|
||||
session.checkersComponent.register(ExtendedDeclarationCheckers)
|
||||
}
|
||||
}
|
||||
@@ -276,7 +276,7 @@ abstract class AbstractFirDiagnosticsTest : AbstractFirBaseDiagnosticsTest() {
|
||||
}
|
||||
|
||||
private fun createCollector(session: FirSession): AbstractDiagnosticCollector {
|
||||
return FirDiagnosticsCollector.create(session, useExtendedCheckersIfNeeded())
|
||||
return FirDiagnosticsCollector.create(session)
|
||||
}
|
||||
|
||||
private fun checkCfgDump(testDataFile: File, firFiles: List<FirFile>) {
|
||||
@@ -360,5 +360,4 @@ abstract class AbstractFirDiagnosticsTest : AbstractFirBaseDiagnosticsTest() {
|
||||
|
||||
}
|
||||
|
||||
internal open fun useExtendedCheckersIfNeeded() = false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user