diff --git a/compiler/frontend/src/org/jetbrains/kotlin/cfg/WhenChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/cfg/WhenChecker.kt index a38bcbf4051..b572a8217b1 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/cfg/WhenChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/cfg/WhenChecker.kt @@ -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.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")) + } } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/ReservedChecking.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/ReservedChecking.kt index c902c7ad564..5929fa7f2c5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/ReservedChecking.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/ReservedChecking.kt @@ -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 diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/PatternMatchingTypingVisitor.kt b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/PatternMatchingTypingVisitor.kt index f9843c6f9ae..e6d91246fec 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/PatternMatchingTypingVisitor.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/PatternMatchingTypingVisitor.kt @@ -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)