From 5e426d5c16846dacab3f88fcc2c64db0ce636b63 Mon Sep 17 00:00:00 2001 From: Anastasiya Shadrina Date: Thu, 18 Feb 2021 17:21:12 +0700 Subject: [PATCH] [Parser] Continue parsing if context receiver is not parsed correctly --- .../runners/FirOldFrontendDiagnosticsTestGenerated.java | 6 ++++++ .../psi/src/org/jetbrains/kotlin/parsing/KotlinParsing.java | 4 ++-- .../tests/extensions/contextReceivers/syntaxError.fir.kt | 3 +++ .../tests/extensions/contextReceivers/syntaxError.kt | 3 +++ .../tests/extensions/contextReceivers/syntaxError.txt | 3 +++ .../kotlin/test/runners/DiagnosticTestGenerated.java | 6 ++++++ 6 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.fir.kt create mode 100644 compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.kt create mode 100644 compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.txt diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java index 8117b030370..41ecb4d5084 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java @@ -10630,6 +10630,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/superWithContext.kt"); } + @Test + @TestMetadata("syntaxError.kt") + public void testSyntaxError() throws Exception { + runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.kt"); + } + @Test @TestMetadata("thisIdentifierInfo.kt") public void testThisIdentifierInfo() throws Exception { diff --git a/compiler/psi/src/org/jetbrains/kotlin/parsing/KotlinParsing.java b/compiler/psi/src/org/jetbrains/kotlin/parsing/KotlinParsing.java index ff69771589f..45e53dc64eb 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/parsing/KotlinParsing.java +++ b/compiler/psi/src/org/jetbrains/kotlin/parsing/KotlinParsing.java @@ -637,10 +637,10 @@ public class KotlinParsing extends AbstractKotlinParsing { } if (at(COMMA)) { advance(); - } - else { + } else { if (!at(RPAR)) { error("Expecting comma or ')'"); + break; } } } diff --git a/compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.fir.kt b/compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.fir.kt new file mode 100644 index 00000000000..95effbad181 --- /dev/null +++ b/compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.fir.kt @@ -0,0 +1,3 @@ +context( +fun foo() { +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.kt b/compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.kt new file mode 100644 index 00000000000..95effbad181 --- /dev/null +++ b/compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.kt @@ -0,0 +1,3 @@ +context( +fun foo() { +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.txt b/compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.txt new file mode 100644 index 00000000000..65a6ac47e1f --- /dev/null +++ b/compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.txt @@ -0,0 +1,3 @@ +package + +public fun foo(): kotlin.Unit diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index a38107d22a5..d11f8e6ef73 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -10636,6 +10636,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/superWithContext.kt"); } + @Test + @TestMetadata("syntaxError.kt") + public void testSyntaxError() throws Exception { + runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/syntaxError.kt"); + } + @Test @TestMetadata("thisIdentifierInfo.kt") public void testThisIdentifierInfo() throws Exception {