diff options
Diffstat (limited to 'crates/typst-syntax')
| -rw-r--r-- | crates/typst-syntax/src/parser.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/crates/typst-syntax/src/parser.rs b/crates/typst-syntax/src/parser.rs index d341bca2..e27cafcf 100644 --- a/crates/typst-syntax/src/parser.rs +++ b/crates/typst-syntax/src/parser.rs @@ -633,6 +633,10 @@ fn code_exprs(p: &mut Parser, mut stop: impl FnMut(&Parser) -> bool) { code_expr(p); if !p.end() && !stop(p) && !p.eat_if(SyntaxKind::Semicolon) { p.expected("semicolon or line break"); + if p.at(SyntaxKind::Label) { + p.hint("labels can only be applied in markup mode"); + p.hint("try wrapping your code in a markup block (`[ ]`)"); + } } } @@ -1838,6 +1842,14 @@ impl<'s> Parser<'s> { self.nodes.insert(m.0, error); } + /// Produce a hint. + fn hint(&mut self, hint: &str) { + let m = self.before_trivia(); + if let Some(error) = self.nodes.get_mut(m.0 - 1) { + error.hint(hint); + } + } + /// Consume the next token (if any) and produce an error stating that it was /// unexpected. fn unexpected(&mut self) { |
