diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index 404e9f9e483..0829a3e9cd4 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -847,7 +847,7 @@ public class JetExpressionParsing extends AbstractJetParsing { advance(); // COMMA } - expect(ARROW, "Expecting '->' or 'when'", WHEN_CONDITION_RECOVERY_SET); + expect(ARROW, "Expecting '->'", WHEN_CONDITION_RECOVERY_SET); if (atSet(WHEN_CONDITION_RECOVERY_SET)) { error("Expecting an element"); } diff --git a/compiler/testData/psi/recovery/NoArrowInWhen.kt b/compiler/testData/psi/recovery/NoArrowInWhen.kt new file mode 100644 index 00000000000..43779079a6a --- /dev/null +++ b/compiler/testData/psi/recovery/NoArrowInWhen.kt @@ -0,0 +1,5 @@ +fun test() { + when(element) { + is JetProperty when { } + } +} \ No newline at end of file diff --git a/compiler/testData/psi/recovery/NoArrowInWhen.txt b/compiler/testData/psi/recovery/NoArrowInWhen.txt new file mode 100644 index 00000000000..3d46353165b --- /dev/null +++ b/compiler/testData/psi/recovery/NoArrowInWhen.txt @@ -0,0 +1,43 @@ +JetFile: NoArrowInWhen.kt + PACKAGE_DIRECTIVE + + FUN + PsiElement(fun)('fun') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('test') + VALUE_PARAMETER_LIST + PsiElement(LPAR)('(') + PsiElement(RPAR)(')') + PsiWhiteSpace(' ') + BLOCK + PsiElement(LBRACE)('{') + PsiWhiteSpace('\n ') + WHEN + PsiElement(when)('when') + PsiElement(LPAR)('(') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('element') + PsiElement(RPAR)(')') + PsiWhiteSpace(' ') + PsiElement(LBRACE)('{') + PsiWhiteSpace('\n ') + WHEN_ENTRY + WHEN_CONDITION_IS_PATTERN + PsiElement(is)('is') + PsiWhiteSpace(' ') + TYPE_REFERENCE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('JetProperty') + PsiWhiteSpace(' ') + PsiErrorElement:Expecting '->' + PsiElement(when)('when') + PsiWhiteSpace(' ') + BLOCK + PsiElement(LBRACE)('{') + PsiWhiteSpace(' ') + PsiElement(RBRACE)('}') + PsiWhiteSpace('\n ') + PsiElement(RBRACE)('}') + PsiWhiteSpace('\n') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/parsing/JetParsingTestGenerated.java b/compiler/tests/org/jetbrains/jet/parsing/JetParsingTestGenerated.java index 90031437fb8..010da6d3a27 100644 --- a/compiler/tests/org/jetbrains/jet/parsing/JetParsingTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/parsing/JetParsingTestGenerated.java @@ -1395,6 +1395,12 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest { doParsingTest(fileName); } + @TestMetadata("NoArrowInWhen.kt") + public void testNoArrowInWhen() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/psi/recovery/NoArrowInWhen.kt"); + doParsingTest(fileName); + } + @TestMetadata("PackageNewLineRecovery.kt") public void testPackageNewLineRecovery() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/psi/recovery/PackageNewLineRecovery.kt");