From 5fa244a7b0fcbd971e760cb67644514fe22aa4a3 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Wed, 21 Sep 2022 16:33:32 -0700 Subject: [PATCH] LOOP: Improve error messages and coding style. --- src/language/control/loop.c | 9 +++------ tests/language/control/loop.at | 8 +++++--- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/language/control/loop.c b/src/language/control/loop.c index 4dbc7c90bd..0db3a491d3 100644 --- a/src/language/control/loop.c +++ b/src/language/control/loop.c @@ -180,15 +180,12 @@ parse_index_clause (struct dataset *ds, struct lexer *lexer, { if (loop->index_var != NULL) { - msg (SE, _("Only one index clause may be specified.")); + lex_error (lexer, _("Only one index clause may be specified.")); return false; } - if (lex_token (lexer) != T_ID) - { - lex_error (lexer, NULL); - return false; - } + if (!lex_force_id (lexer)) + return false; loop->index_var = dict_lookup_var (dataset_dict (ds), lex_tokcstr (lexer)); if (!loop->index_var) diff --git a/tests/language/control/loop.at b/tests/language/control/loop.at index 1e2c84e76d..8f4d2b4225 100644 --- a/tests/language/control/loop.at +++ b/tests/language/control/loop.at @@ -313,9 +313,11 @@ END LOOP. 3 | END LOOP. | ^~~~~~~~ -loop.sps:5: error: LOOP: Only one index clause may be specified. +loop.sps:5.15: error: LOOP: Only one index clause may be specified. + 5 | LOOP A=1 TO 5 B=1 TO 5. + | ^ -loop.sps:7.6: error: LOOP: Syntax error. +loop.sps:7.6: error: LOOP: Syntax error expecting identifier. 7 | LOOP 5. | ^ @@ -347,7 +349,7 @@ loop.sps:21.1-21.9: error: LOOP: Required subcommand TO was not specified. 21 | LOOP A=1. | ^~~~~~~~~ -loop.sps:23.6: error: LOOP: Syntax error. +loop.sps:23.6: error: LOOP: Syntax error expecting identifier. 23 | LOOP !. | ^ -- 2.30.2