diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/boot/fe/item.ml | 11 | ||||
| -rw-r--r-- | src/test/compile-fail/does-nothing.rs | 7 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/boot/fe/item.ml b/src/boot/fe/item.ml index 5340d262..3d3bf84f 100644 --- a/src/boot/fe/item.ml +++ b/src/boot/fe/item.ml @@ -148,12 +148,21 @@ and parse_auto_slot_and_init let stmts = ctxt "slot, ident and init: init" (parse_init lval) ps in (stmts, slot_auto, ident) + +and parse_stmts (ps:pstate) : Ast.stmt array = + let arr = parse_stmts_including_none ps in + if (Array.length arr) == 0 then + raise (err "statement does nothing" ps); + arr + + + (* * We have no way to parse a single Ast.stmt; any incoming syntactic statement * may desugar to N>1 real Ast.stmts *) -and parse_stmts (ps:pstate) : Ast.stmt array = +and parse_stmts_including_none (ps:pstate) : Ast.stmt array = let apos = lexpos ps in let ensure_mutable slot = diff --git a/src/test/compile-fail/does-nothing.rs b/src/test/compile-fail/does-nothing.rs new file mode 100644 index 00000000..805d3142 --- /dev/null +++ b/src/test/compile-fail/does-nothing.rs @@ -0,0 +1,7 @@ +// error-pattern: does nothing +fn main() { + log "doing"; + this_does_nothing_what_the; + log "boing"; +} + |