[FIR] Introduce FirReturnExpressionChecker
This commit is contained in:
committed by
TeamCityServer
parent
5ebd24eac5
commit
76f2e349cc
+1
@@ -22,6 +22,7 @@ fun main(args: Array<String>) {
|
|||||||
alias<FirVariableAssignment>("VariableAssignmentChecker")
|
alias<FirVariableAssignment>("VariableAssignmentChecker")
|
||||||
alias<FirTryExpression>("TryExpressionChecker")
|
alias<FirTryExpression>("TryExpressionChecker")
|
||||||
alias<FirWhenExpression>("WhenExpressionChecker")
|
alias<FirWhenExpression>("WhenExpressionChecker")
|
||||||
|
alias<FirReturnExpression>("ReturnExpressionChecker")
|
||||||
}
|
}
|
||||||
|
|
||||||
val declarationPackage = "org.jetbrains.kotlin.fir.analysis.checkers.declaration"
|
val declarationPackage = "org.jetbrains.kotlin.fir.analysis.checkers.declaration"
|
||||||
|
|||||||
+4
@@ -25,6 +25,8 @@ internal class ComposedExpressionCheckers : ExpressionCheckers() {
|
|||||||
get() = _tryExpressionCheckers
|
get() = _tryExpressionCheckers
|
||||||
override val whenExpressionCheckers: Set<FirWhenExpressionChecker>
|
override val whenExpressionCheckers: Set<FirWhenExpressionChecker>
|
||||||
get() = _whenExpressionCheckers
|
get() = _whenExpressionCheckers
|
||||||
|
override val returnExpressionCheckers: Set<FirReturnExpressionChecker>
|
||||||
|
get() = _returnExpressionCheckers
|
||||||
|
|
||||||
private val _basicExpressionCheckers: MutableSet<FirBasicExpressionChecker> = mutableSetOf()
|
private val _basicExpressionCheckers: MutableSet<FirBasicExpressionChecker> = mutableSetOf()
|
||||||
private val _qualifiedAccessCheckers: MutableSet<FirQualifiedAccessChecker> = mutableSetOf()
|
private val _qualifiedAccessCheckers: MutableSet<FirQualifiedAccessChecker> = mutableSetOf()
|
||||||
@@ -32,6 +34,7 @@ internal class ComposedExpressionCheckers : ExpressionCheckers() {
|
|||||||
private val _variableAssignmentCheckers: MutableSet<FirVariableAssignmentChecker> = mutableSetOf()
|
private val _variableAssignmentCheckers: MutableSet<FirVariableAssignmentChecker> = mutableSetOf()
|
||||||
private val _tryExpressionCheckers: MutableSet<FirTryExpressionChecker> = mutableSetOf()
|
private val _tryExpressionCheckers: MutableSet<FirTryExpressionChecker> = mutableSetOf()
|
||||||
private val _whenExpressionCheckers: MutableSet<FirWhenExpressionChecker> = mutableSetOf()
|
private val _whenExpressionCheckers: MutableSet<FirWhenExpressionChecker> = mutableSetOf()
|
||||||
|
private val _returnExpressionCheckers: MutableSet<FirReturnExpressionChecker> = mutableSetOf()
|
||||||
|
|
||||||
@CheckersComponentInternal
|
@CheckersComponentInternal
|
||||||
internal fun register(checkers: ExpressionCheckers) {
|
internal fun register(checkers: ExpressionCheckers) {
|
||||||
@@ -41,5 +44,6 @@ internal class ComposedExpressionCheckers : ExpressionCheckers() {
|
|||||||
_variableAssignmentCheckers += checkers.variableAssignmentCheckers
|
_variableAssignmentCheckers += checkers.variableAssignmentCheckers
|
||||||
_tryExpressionCheckers += checkers.tryExpressionCheckers
|
_tryExpressionCheckers += checkers.tryExpressionCheckers
|
||||||
_whenExpressionCheckers += checkers.whenExpressionCheckers
|
_whenExpressionCheckers += checkers.whenExpressionCheckers
|
||||||
|
_returnExpressionCheckers += checkers.returnExpressionCheckers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -23,6 +23,7 @@ abstract class ExpressionCheckers {
|
|||||||
open val variableAssignmentCheckers: Set<FirVariableAssignmentChecker> = emptySet()
|
open val variableAssignmentCheckers: Set<FirVariableAssignmentChecker> = emptySet()
|
||||||
open val tryExpressionCheckers: Set<FirTryExpressionChecker> = emptySet()
|
open val tryExpressionCheckers: Set<FirTryExpressionChecker> = emptySet()
|
||||||
open val whenExpressionCheckers: Set<FirWhenExpressionChecker> = emptySet()
|
open val whenExpressionCheckers: Set<FirWhenExpressionChecker> = emptySet()
|
||||||
|
open val returnExpressionCheckers: Set<FirReturnExpressionChecker> = emptySet()
|
||||||
|
|
||||||
@CheckersComponentInternal internal val allBasicExpressionCheckers: Set<FirBasicExpressionChecker> get() = basicExpressionCheckers
|
@CheckersComponentInternal internal val allBasicExpressionCheckers: Set<FirBasicExpressionChecker> get() = basicExpressionCheckers
|
||||||
@CheckersComponentInternal internal val allQualifiedAccessCheckers: Set<FirQualifiedAccessChecker> get() = qualifiedAccessCheckers + basicExpressionCheckers
|
@CheckersComponentInternal internal val allQualifiedAccessCheckers: Set<FirQualifiedAccessChecker> get() = qualifiedAccessCheckers + basicExpressionCheckers
|
||||||
@@ -30,4 +31,5 @@ abstract class ExpressionCheckers {
|
|||||||
@CheckersComponentInternal internal val allVariableAssignmentCheckers: Set<FirVariableAssignmentChecker> get() = variableAssignmentCheckers + basicExpressionCheckers
|
@CheckersComponentInternal internal val allVariableAssignmentCheckers: Set<FirVariableAssignmentChecker> get() = variableAssignmentCheckers + basicExpressionCheckers
|
||||||
@CheckersComponentInternal internal val allTryExpressionCheckers: Set<FirTryExpressionChecker> get() = tryExpressionCheckers + basicExpressionCheckers
|
@CheckersComponentInternal internal val allTryExpressionCheckers: Set<FirTryExpressionChecker> get() = tryExpressionCheckers + basicExpressionCheckers
|
||||||
@CheckersComponentInternal internal val allWhenExpressionCheckers: Set<FirWhenExpressionChecker> get() = whenExpressionCheckers + basicExpressionCheckers
|
@CheckersComponentInternal internal val allWhenExpressionCheckers: Set<FirWhenExpressionChecker> get() = whenExpressionCheckers + basicExpressionCheckers
|
||||||
|
@CheckersComponentInternal internal val allReturnExpressionCheckers: Set<FirReturnExpressionChecker> get() = returnExpressionCheckers + basicExpressionCheckers
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -12,6 +12,7 @@ package org.jetbrains.kotlin.fir.analysis.checkers.expression
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirTryExpression
|
import org.jetbrains.kotlin.fir.expressions.FirTryExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||||
@@ -23,3 +24,4 @@ typealias FirFunctionCallChecker = FirExpressionChecker<FirFunctionCall>
|
|||||||
typealias FirVariableAssignmentChecker = FirExpressionChecker<FirVariableAssignment>
|
typealias FirVariableAssignmentChecker = FirExpressionChecker<FirVariableAssignment>
|
||||||
typealias FirTryExpressionChecker = FirExpressionChecker<FirTryExpression>
|
typealias FirTryExpressionChecker = FirExpressionChecker<FirTryExpression>
|
||||||
typealias FirWhenExpressionChecker = FirExpressionChecker<FirWhenExpression>
|
typealias FirWhenExpressionChecker = FirExpressionChecker<FirWhenExpression>
|
||||||
|
typealias FirReturnExpressionChecker = FirExpressionChecker<FirReturnExpression>
|
||||||
|
|||||||
+4
@@ -97,6 +97,10 @@ class ExpressionCheckersDiagnosticComponent(
|
|||||||
checkers.allVariableAssignmentCheckers.check(variableAssignment, data, reporter)
|
checkers.allVariableAssignmentCheckers.check(variableAssignment, data, reporter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitReturnExpression(returnExpression: FirReturnExpression, data: CheckerContext) {
|
||||||
|
checkers.returnExpressionCheckers.check(returnExpression, data, reporter)
|
||||||
|
}
|
||||||
|
|
||||||
private fun <E : FirStatement> Collection<FirExpressionChecker<E>>.check(
|
private fun <E : FirStatement> Collection<FirExpressionChecker<E>>.check(
|
||||||
expression: E,
|
expression: E,
|
||||||
context: CheckerContext,
|
context: CheckerContext,
|
||||||
|
|||||||
Reference in New Issue
Block a user