[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() {
|
object CommonDeclarationCheckers : DeclarationCheckers() {
|
||||||
override val declarationCheckers: List<FirBasicDeclarationChecker> = listOf(
|
override val declarationCheckers: List<FirBasicDeclarationChecker> = listOf(
|
||||||
FirAnnotationClassDeclarationChecker,
|
FirAnnotationClassDeclarationChecker,
|
||||||
FirModifierChecker,
|
FirModifierChecker
|
||||||
RedundantVisibilityModifierChecker,
|
|
||||||
RedundantReturnUnitType
|
|
||||||
)
|
)
|
||||||
|
|
||||||
override val memberDeclarationCheckers: List<FirMemberDeclarationChecker> = listOf(
|
override val memberDeclarationCheckers: List<FirMemberDeclarationChecker> = listOf(
|
||||||
FirInfixFunctionDeclarationChecker,
|
FirInfixFunctionDeclarationChecker,
|
||||||
FirExposedVisibilityChecker,
|
FirExposedVisibilityChecker
|
||||||
RedundantModalityModifierChecker,
|
|
||||||
RedundantExplicitTypeChecker
|
|
||||||
)
|
)
|
||||||
|
|
||||||
override val constructorCheckers: List<FirConstructorChecker> = listOf(
|
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 class FirDeclarationChecker<in D : FirDeclaration> {
|
||||||
abstract fun check(declaration: D, context: CheckerContext, reporter: DiagnosticReporter)
|
abstract fun check(declaration: D, context: CheckerContext, reporter: DiagnosticReporter)
|
||||||
open val isExtended = false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
typealias FirBasicDeclarationChecker = FirDeclarationChecker<FirDeclaration>
|
typealias FirBasicDeclarationChecker = FirDeclarationChecker<FirDeclaration>
|
||||||
|
|||||||
-2
@@ -20,8 +20,6 @@ import org.jetbrains.kotlin.psi.KtDeclaration
|
|||||||
import org.jetbrains.kotlin.psi.psiUtil.modalityModifier
|
import org.jetbrains.kotlin.psi.psiUtil.modalityModifier
|
||||||
|
|
||||||
object RedundantModalityModifierChecker : FirMemberDeclarationChecker() {
|
object RedundantModalityModifierChecker : FirMemberDeclarationChecker() {
|
||||||
override val isExtended = true
|
|
||||||
|
|
||||||
override fun check(declaration: FirMemberDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
override fun check(declaration: FirMemberDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||||
if (declaration.source is FirFakeSourceElement<*>) return
|
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
|
import org.jetbrains.kotlin.fir.types.isUnit
|
||||||
|
|
||||||
object RedundantReturnUnitType : FirBasicDeclarationChecker() {
|
object RedundantReturnUnitType : FirBasicDeclarationChecker() {
|
||||||
override val isExtended = true
|
|
||||||
|
|
||||||
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||||
if (declaration !is FirSimpleFunction) return
|
if (declaration !is FirSimpleFunction) return
|
||||||
if (declaration.body is FirSingleExpressionBlock) 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
|
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifier
|
||||||
|
|
||||||
object RedundantVisibilityModifierChecker : FirBasicDeclarationChecker() {
|
object RedundantVisibilityModifierChecker : FirBasicDeclarationChecker() {
|
||||||
override val isExtended = true
|
|
||||||
|
|
||||||
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||||
if (declaration is FirConstructor && declaration.source is FirFakeSourceElement<*>) return
|
if (declaration is FirConstructor && declaration.source is FirFakeSourceElement<*>) return
|
||||||
if (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(
|
initializeComponents(
|
||||||
DeclarationCheckersDiagnosticComponent(this, checkExtended),
|
DeclarationCheckersDiagnosticComponent(this),
|
||||||
ExpressionCheckersDiagnosticComponent(this),
|
ExpressionCheckersDiagnosticComponent(this),
|
||||||
ErrorNodeDiagnosticCollectorComponent(this),
|
ErrorNodeDiagnosticCollectorComponent(this),
|
||||||
ControlFlowAnalysisDiagnosticComponent(this),
|
ControlFlowAnalysisDiagnosticComponent(this),
|
||||||
|
|||||||
+2
-2
@@ -11,10 +11,10 @@ import org.jetbrains.kotlin.fir.analysis.extensions.additionalCheckers
|
|||||||
import org.jetbrains.kotlin.fir.extensions.extensionService
|
import org.jetbrains.kotlin.fir.extensions.extensionService
|
||||||
|
|
||||||
object FirDiagnosticsCollector {
|
object FirDiagnosticsCollector {
|
||||||
fun create(session: FirSession, checkExtended: Boolean = false): AbstractDiagnosticCollector {
|
fun create(session: FirSession): AbstractDiagnosticCollector {
|
||||||
session.registerAdditionalCheckers()
|
session.registerAdditionalCheckers()
|
||||||
val collector = SimpleDiagnosticsCollector(session)
|
val collector = SimpleDiagnosticsCollector(session)
|
||||||
collector.registerAllComponents(checkExtended)
|
collector.registerAllComponents()
|
||||||
return collector
|
return collector
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-5
@@ -13,8 +13,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
|
|||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
|
|
||||||
class DeclarationCheckersDiagnosticComponent(
|
class DeclarationCheckersDiagnosticComponent(
|
||||||
collector: AbstractDiagnosticCollector,
|
collector: AbstractDiagnosticCollector
|
||||||
private val checkExtended: Boolean
|
|
||||||
) : AbstractDiagnosticCollectorComponent(collector) {
|
) : AbstractDiagnosticCollectorComponent(collector) {
|
||||||
private val checkers = session.checkersComponent.declarationCheckers
|
private val checkers = session.checkersComponent.declarationCheckers
|
||||||
|
|
||||||
@@ -72,9 +71,7 @@ class DeclarationCheckersDiagnosticComponent(
|
|||||||
reporter: DiagnosticReporter
|
reporter: DiagnosticReporter
|
||||||
) {
|
) {
|
||||||
for (checker in this) {
|
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
|
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() {
|
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 {
|
private fun createCollector(session: FirSession): AbstractDiagnosticCollector {
|
||||||
return FirDiagnosticsCollector.create(session, useExtendedCheckersIfNeeded())
|
return FirDiagnosticsCollector.create(session)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun checkCfgDump(testDataFile: File, firFiles: List<FirFile>) {
|
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