LOOP: Improve error messages and coding style.
authorBen Pfaff <blp@cs.stanford.edu>
Wed, 21 Sep 2022 23:33:32 +0000 (16:33 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Wed, 21 Sep 2022 23:33:32 +0000 (16:33 -0700)
src/language/control/loop.c
tests/language/control/loop.at

index 4dbc7c90bd7ff0c3f62bf444177d50efed3974f8..0db3a491d391dc152aaeebc2f997e22198602b65 100644 (file)
@@ -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)
index 1e2c84e76df1a3b3f4aa55cbcd0f3cd10be01969..8f4d2b422568f8ac9312bc6f0c897fbaee4ce6a0 100644 (file)
@@ -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 !.
       |      ^