From 4d3ea3f73e5f040c1de020d0075a87c006c2ad67 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Thu, 4 Jul 2024 18:45:04 -0400 Subject: Check for newline between statements in blocks --- parse.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'parse.c') diff --git a/parse.c b/parse.c index 6f3de7d9..13c37862 100644 --- a/parse.c +++ b/parse.c @@ -1619,7 +1619,16 @@ PARSER(parse_block) { break; } statements = new(ast_list_t, .ast=stmt, .next=statements); - whitespace(&pos); // TODO: check for newline + whitespace(&pos); + + // Guard against having two valid statements on the same line, separated by spaces (but no newlines): + if (!memchr(stmt->end, '\n', (size_t)(pos - stmt->end))) { + if (*pos) + parser_err(ctx, pos, strchrnul(pos, '\n'), "I don't know how to parse the rest of this line"); + pos = stmt->end; + break; + } + if (get_indent(ctx, pos) != block_indent) { pos = stmt->end; // backtrack break; -- cgit v1.2.3