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.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.diagnostics.WhenMissingCase import org.jetbrains.kotlin.diagnostics.WhenMissingCase
import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.checkReservedPrefixWord
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.BindingContext.SMARTCAST import org.jetbrains.kotlin.resolve.BindingContext.SMARTCAST
import org.jetbrains.kotlin.resolve.BindingContext.VARIABLE 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.types.TypeUtils
import org.jetbrains.kotlin.utils.addIfNotNull import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.kotlin.utils.addToStdlib.runIf import org.jetbrains.kotlin.utils.addToStdlib.runIf
import java.util.*
val List<WhenMissingCase>.hasUnknown: Boolean val List<WhenMissingCase>.hasUnknown: Boolean
@@ -479,7 +478,9 @@ object WhenChecker {
} }
} }
fun checkReservedPrefix(trace: BindingTrace, expression: KtWhenExpression) { fun checkSealedWhenIsReserved(sink: DiagnosticSink, element: PsiElement) {
checkReservedPrefixWord(trace, expression.whenKeyword, "sealed", "sealed when") 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.KtPsiUtil
import org.jetbrains.kotlin.psi.KtSimpleNameExpression 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) { fun checkReservedYield(expression: KtSimpleNameExpression?, sink: DiagnosticSink) {
// do not force identifier calculation for elements from stubs. // do not force identifier calculation for elements from stubs.
if (expression?.getReferencedName() != "yield") return if (expression?.getReferencedName() != "yield") return
@@ -177,7 +177,7 @@ class PatternMatchingTypingVisitor internal constructor(facade: ExpressionTyping
): KotlinTypeInfo { ): KotlinTypeInfo {
val trace = contextWithExpectedType.trace val trace = contextWithExpectedType.trace
WhenChecker.checkDeprecatedWhenSyntax(trace, expression) WhenChecker.checkDeprecatedWhenSyntax(trace, expression)
WhenChecker.checkReservedPrefix(trace, expression) WhenChecker.checkSealedWhenIsReserved(trace, expression.whenKeyword)
components.dataFlowAnalyzer.recordExpectedType(trace, expression, contextWithExpectedType.expectedType) components.dataFlowAnalyzer.recordExpectedType(trace, expression, contextWithExpectedType.expectedType)