summaryrefslogtreecommitdiff
path: root/crates/typst-syntax
diff options
context:
space:
mode:
Diffstat (limited to 'crates/typst-syntax')
-rw-r--r--crates/typst-syntax/src/parser.rs12
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) {