Skip to content

Commit e29a557

Browse files
committed
Improve parser error message when float is encountered
1 parent 3e0009f commit e29a557

2 files changed

Lines changed: 18 additions & 14 deletions

File tree

crates/parser/src/grammar/expressions.rs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -395,22 +395,26 @@ fn infix_op(
395395

396396
Dot => {
397397
let span = left.span + right.span;
398-
if let Expr::Name(name) = right.kind {
399-
Node::new(
398+
match right.kind {
399+
Expr::Name(name) => Node::new(
400400
Expr::Attribute {
401401
value: Box::new(left),
402402
attr: Node::new(name, right.span),
403403
},
404404
span,
405-
)
406-
} else {
407-
// TODO: check for float number and say something helpful
408-
par.fancy_error(
409-
"failed to parse attribute expression",
410-
vec![Label::primary(right.span, "expected a name")],
411-
vec![],
412-
);
413-
return Err(ParseFailed);
405+
),
406+
Expr::Num(_num) => {
407+
par.error(span, "floats not supported");
408+
return Err(ParseFailed);
409+
}
410+
_ => {
411+
par.fancy_error(
412+
"failed to parse attribute expression",
413+
vec![Label::primary(right.span, "expected a name")],
414+
vec![],
415+
);
416+
return Err(ParseFailed);
417+
}
414418
}
415419
}
416420
ColonColon => {

crates/parser/tests/cases/snapshots/cases__errors__expr_dotted_number.snap

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ source: crates/parser/tests/cases/errors.rs
33
expression: "err_string(stringify!(expr_dotted_number), expressions::parse_expr, true,\n \"3.14\")"
44

55
---
6-
error: failed to parse attribute expression
7-
┌─ expr_dotted_number:1:3
6+
error: floats not supported
7+
┌─ expr_dotted_number:1:1
88
99
13.14
10-
^^ expected a name
10+
^^^^
1111

1212

0 commit comments

Comments
 (0)