From ececd074248a93d16fae08aeb596e89ff6e04814 Mon Sep 17 00:00:00 2001 From: bluebear94 Date: Tue, 20 Jun 2023 10:59:42 -0400 Subject: [PATCH] Make factorial take precedence over fraction in math expressions (#1487) Fixes #1475. --- src/syntax/parser.rs | 6 ++++++ tests/ref/math/frac.png | Bin 21679 -> 24197 bytes tests/typ/math/frac.typ | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/syntax/parser.rs b/src/syntax/parser.rs index 5fc9ec263..7d057ab9c 100644 --- a/src/syntax/parser.rs +++ b/src/syntax/parser.rs @@ -307,6 +307,12 @@ fn math_expr_prec(p: &mut Parser, min_prec: usize, stop: SyntaxKind) { } while !p.eof() && !p.at(stop) { + if p.directly_at(SyntaxKind::Text) && p.current_text() == "!" { + p.eat(); + p.wrap(m, SyntaxKind::Math); + continue; + } + let Some((kind, stop, assoc, mut prec)) = math_op(p.current()) else { break; }; diff --git a/tests/ref/math/frac.png b/tests/ref/math/frac.png index 6f0e81395f1b15bd56b687ecf8f57831c500b646..a116c876a0b0a3a221b570fc60b21b6a40e3431b 100644 GIT binary patch delta 7997 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