FIR: add ability to specify checkers list for checker components
This commit is contained in:
+7
-3
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.analysis.cfa
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
|
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.DeclarationCheckers
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkersComponent
|
import org.jetbrains.kotlin.fir.analysis.checkersComponent
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||||
@@ -15,9 +16,12 @@ import org.jetbrains.kotlin.fir.declarations.FirProperty
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
||||||
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.ControlFlowGraph
|
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.ControlFlowGraph
|
||||||
|
|
||||||
class FirControlFlowAnalyzer(session: FirSession) {
|
class FirControlFlowAnalyzer(
|
||||||
private val cfaCheckers = session.checkersComponent.declarationCheckers.controlFlowAnalyserCheckers
|
session: FirSession,
|
||||||
private val variableAssignmentCheckers = session.checkersComponent.declarationCheckers.variableAssignmentCfaBasedCheckers
|
declarationCheckers: DeclarationCheckers = session.checkersComponent.declarationCheckers
|
||||||
|
) {
|
||||||
|
private val cfaCheckers = declarationCheckers.controlFlowAnalyserCheckers
|
||||||
|
private val variableAssignmentCheckers = declarationCheckers.variableAssignmentCfaBasedCheckers
|
||||||
|
|
||||||
// Currently declaration in analyzeXXX is not used, but it may be useful in future
|
// Currently declaration in analyzeXXX is not used, but it may be useful in future
|
||||||
@Suppress("UNUSED_PARAMETER")
|
@Suppress("UNUSED_PARAMETER")
|
||||||
|
|||||||
+7
-2
@@ -7,13 +7,18 @@ package org.jetbrains.kotlin.fir.analysis.collectors.components
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.analysis.cfa.FirControlFlowAnalyzer
|
import org.jetbrains.kotlin.fir.analysis.cfa.FirControlFlowAnalyzer
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
|
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.DeclarationCheckers
|
||||||
|
import org.jetbrains.kotlin.fir.analysis.checkersComponent
|
||||||
import org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollector
|
import org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollector
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.dfa.controlFlowGraph
|
import org.jetbrains.kotlin.fir.resolve.dfa.controlFlowGraph
|
||||||
|
|
||||||
class ControlFlowAnalysisDiagnosticComponent(collector: AbstractDiagnosticCollector) : AbstractDiagnosticCollectorComponent(collector) {
|
class ControlFlowAnalysisDiagnosticComponent(
|
||||||
private val controlFlowAnalyzer = FirControlFlowAnalyzer(session)
|
collector: AbstractDiagnosticCollector,
|
||||||
|
declarationCheckers: DeclarationCheckers = collector.session.checkersComponent.declarationCheckers,
|
||||||
|
) : AbstractDiagnosticCollectorComponent(collector) {
|
||||||
|
private val controlFlowAnalyzer = FirControlFlowAnalyzer(session, declarationCheckers)
|
||||||
|
|
||||||
// ------------------------------- Class initializer -------------------------------
|
// ------------------------------- Class initializer -------------------------------
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.fir.analysis.collectors.components
|
package org.jetbrains.kotlin.fir.analysis.collectors.components
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
|
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.DeclarationCheckers
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirDeclarationChecker
|
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirDeclarationChecker
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkersComponent
|
import org.jetbrains.kotlin.fir.analysis.checkersComponent
|
||||||
import org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollector
|
import org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollector
|
||||||
@@ -13,9 +14,9 @@ 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 checkers: DeclarationCheckers = collector.session.checkersComponent.declarationCheckers,
|
||||||
) : AbstractDiagnosticCollectorComponent(collector) {
|
) : AbstractDiagnosticCollectorComponent(collector) {
|
||||||
private val checkers = session.checkersComponent.declarationCheckers
|
|
||||||
|
|
||||||
override fun visitFile(file: FirFile, data: CheckerContext) {
|
override fun visitFile(file: FirFile, data: CheckerContext) {
|
||||||
checkers.fileCheckers.check(file, data, reporter)
|
checkers.fileCheckers.check(file, data, reporter)
|
||||||
|
|||||||
+5
-2
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.fir.analysis.collectors.components
|
package org.jetbrains.kotlin.fir.analysis.collectors.components
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
|
import org.jetbrains.kotlin.fir.analysis.checkers.expression.ExpressionCheckers
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirExpressionChecker
|
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirExpressionChecker
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkersComponent
|
import org.jetbrains.kotlin.fir.analysis.checkersComponent
|
||||||
import org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollector
|
import org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollector
|
||||||
@@ -13,8 +14,10 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
|
|
||||||
class ExpressionCheckersDiagnosticComponent(collector: AbstractDiagnosticCollector) : AbstractDiagnosticCollectorComponent(collector) {
|
class ExpressionCheckersDiagnosticComponent(
|
||||||
private val checkers = session.checkersComponent.expressionCheckers
|
collector: AbstractDiagnosticCollector,
|
||||||
|
private val checkers: ExpressionCheckers = collector.session.checkersComponent.expressionCheckers,
|
||||||
|
) : AbstractDiagnosticCollectorComponent(collector) {
|
||||||
|
|
||||||
override fun visitAnonymousFunction(anonymousFunction: FirAnonymousFunction, data: CheckerContext) {
|
override fun visitAnonymousFunction(anonymousFunction: FirAnonymousFunction, data: CheckerContext) {
|
||||||
checkers.basicExpressionCheckers.check(anonymousFunction, data, reporter)
|
checkers.basicExpressionCheckers.check(anonymousFunction, data, reporter)
|
||||||
|
|||||||
Reference in New Issue
Block a user