Refactoring: inline single-used method, move checker closer to the usage

This commit is contained in:
Mikhail Zarechenskiy
2023-06-07 14:23:05 +02:00
committed by Space Team
parent ab7ae75f66
commit c613b312f9
3 changed files with 6 additions and 11 deletions
@@ -23,12 +23,12 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.diagnostics.WhenMissingCase
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.checkReservedPrefixWord
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.BindingContext.SMARTCAST
import org.jetbrains.kotlin.resolve.BindingContext.VARIABLE
@@ -44,7 +44,6 @@ import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.TypeUtils
import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.kotlin.utils.addToStdlib.runIf
import java.util.*
val List<WhenMissingCase>.hasUnknown: Boolean
@@ -479,7 +478,9 @@ object WhenChecker {
}
}
fun checkReservedPrefix(trace: BindingTrace, expression: KtWhenExpression) {
checkReservedPrefixWord(trace, expression.whenKeyword, "sealed", "sealed when")
fun checkSealedWhenIsReserved(sink: DiagnosticSink, element: PsiElement) {
KtPsiUtil.getPreviousWord(element, "sealed")?.let {
sink.report(Errors.UNSUPPORTED.on(it, "sealed when"))
}
}
}
@@ -12,12 +12,6 @@ import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtPsiUtil
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
fun checkReservedPrefixWord(sink: DiagnosticSink, element: PsiElement, word: String, message: String) {
KtPsiUtil.getPreviousWord(element, word)?.let {
sink.report(Errors.UNSUPPORTED.on(it, message))
}
}
fun checkReservedYield(expression: KtSimpleNameExpression?, sink: DiagnosticSink) {
// do not force identifier calculation for elements from stubs.
if (expression?.getReferencedName() != "yield") return
@@ -177,7 +177,7 @@ class PatternMatchingTypingVisitor internal constructor(facade: ExpressionTyping
): KotlinTypeInfo {
val trace = contextWithExpectedType.trace
WhenChecker.checkDeprecatedWhenSyntax(trace, expression)
WhenChecker.checkReservedPrefix(trace, expression)
WhenChecker.checkSealedWhenIsReserved(trace, expression.whenKeyword)
components.dataFlowAnalyzer.recordExpectedType(trace, expression, contextWithExpectedType.expectedType)