Fix some parsing issues in MatchExpression

This commit is contained in:
Sam Vervaeck 2023-05-31 11:15:31 +02:00
parent fd462f6d05
commit eaead44b18
Signed by: samvv
SSH key fingerprint: SHA256:dIg0ywU1OP+ZYifrYxy8c5esO72cIKB+4/9wkZj1VaY

View file

@ -433,35 +433,17 @@ after_tuple_element:
} }
auto Pattern = parsePattern(); auto Pattern = parsePattern();
if (!Pattern) { if (!Pattern) {
T0->unref();
Value->unref();
BlockStart->unref();
for (auto Case: Cases) {
Case->unref();
}
skipToLineFoldEnd(); skipToLineFoldEnd();
continue; continue;
} }
auto RArrowAlt = expectToken<class RArrowAlt>(); auto RArrowAlt = expectToken<class RArrowAlt>();
if (!RArrowAlt) { if (!RArrowAlt) {
T0->unref();
Value->unref();
BlockStart->unref();
for (auto Case: Cases) {
Case->unref();
}
Pattern->unref(); Pattern->unref();
skipToLineFoldEnd(); skipToLineFoldEnd();
continue; continue;
} }
auto Expression = parseExpression(); auto Expression = parseExpression();
if (!Expression) { if (!Expression) {
T0->unref();
Value->unref();
BlockStart->unref();
for (auto Case: Cases) {
Case->unref();
}
Pattern->unref(); Pattern->unref();
RArrowAlt->unref(); RArrowAlt->unref();
skipToLineFoldEnd(); skipToLineFoldEnd();
@ -1013,6 +995,7 @@ finish:
default: default:
auto P = parsePattern(); auto P = parsePattern();
if (!P) { if (!P) {
Tokens.get();
P = new BindPattern(new Identifier("_")); P = new BindPattern(new Identifier("_"));
} }
Params.push_back(new Parameter(P, nullptr)); Params.push_back(new Parameter(P, nullptr));