From 877df549aae877cf53de2fe250a552358fa5aad9 Mon Sep 17 00:00:00 2001 From: bluebear94 Date: Mon, 21 Aug 2023 10:21:37 -0400 Subject: [PATCH] Check for control flow event before let binding (#1912) Fixes #1906 (trying to destructure the result of `continue`). --- crates/typst/src/eval/mod.rs | 3 +++ tests/ref/compiler/break-continue.png | Bin 7854 -> 9732 bytes tests/typ/compiler/break-continue.typ | 15 +++++++++++++++ 3 files changed, 18 insertions(+) diff --git a/crates/typst/src/eval/mod.rs b/crates/typst/src/eval/mod.rs index 88302c4a..f3da4263 100644 --- a/crates/typst/src/eval/mod.rs +++ b/crates/typst/src/eval/mod.rs @@ -1470,6 +1470,9 @@ impl Eval for ast::LetBinding<'_> { Some(expr) => expr.eval(vm)?, None => Value::None, }; + if vm.flow.is_some() { + return Ok(Value::None); + } match self.kind() { ast::LetBindingKind::Normal(pattern) => define_pattern(vm, pattern, value), diff --git a/tests/ref/compiler/break-continue.png b/tests/ref/compiler/break-continue.png index 6619744303ee83f84da6e2e72b892b5372ca0b98..9751d39516e558447d2503d7660e43cfe2783a4b 100644 GIT binary patch literal 9732 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 b+Adz;Y3s1i;~b;@QgtGvm7f+!zVQ1mmn6Bj diff --git a/tests/typ/compiler/break-continue.typ b/tests/typ/compiler/break-continue.typ index 6f505f80..4c4738bb 100644 --- a/tests/typ/compiler/break-continue.typ +++ b/tests/typ/compiler/break-continue.typ @@ -145,3 +145,18 @@ for _ in range(3) [B] ) } + +--- +// Ref: true +// Test continue while destructuring. +// Should output "one = I \ two = II \ one = I". +#for num in (1, 2, 3, 1) { + let (word, roman) = if num == 1 { + ("one", "I") + } else if num == 2 { + ("two", "II") + } else { + continue + } + [#word = #roman \ ] +}