MATRIX: Improve error messages.
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 18 Sep 2022 23:47:58 +0000 (16:47 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 18 Sep 2022 23:47:58 +0000 (16:47 -0700)
src/language/stats/matrix.c
tests/language/stats/matrix.at

index 7e9bd54658ff8db3a37b56cdba26ad6197f5d255..69c6323ef48152076b9c953bf2b4aaea13f2dc27 100644 (file)
@@ -6265,6 +6265,8 @@ matrix_save_parse (struct matrix_state *s)
   if (!save->expression)
     goto error;
 
+  int names_start = 0;
+  int names_end = 0;
   while (lex_match (s->lexer, T_SLASH))
     {
       if (lex_match_id (s->lexer, "OUTFILE"))
@@ -6302,7 +6304,9 @@ matrix_save_parse (struct matrix_state *s)
         {
           lex_match (s->lexer, T_EQUALS);
           matrix_expr_destroy (names);
+          names_start = lex_ofs (s->lexer);
           names = matrix_parse_exp (s);
+          names_end = lex_ofs (s->lexer) - 1;
           if (!names)
             goto error;
         }
@@ -6340,7 +6344,8 @@ matrix_save_parse (struct matrix_state *s)
 
   if (variables.n && names)
     {
-      msg (SW, _("VARIABLES and NAMES both specified; ignoring NAMES."));
+      lex_ofs_msg (s->lexer, SW, names_start, names_end,
+                   _("Ignoring NAMES because VARIABLES was also specified."));
       matrix_expr_destroy (names);
       names = NULL;
     }
index 5a6cd48bb2d6f74e83aba71db7aadb4587a0eac3..5fcc8b038d5b32ef74a6a9dcbe4a622a5121d6ed 100644 (file)
@@ -4026,8 +4026,10 @@ matrix.sps:7.1-7.7: error: SAVE: Required subcommand OUTFILE was not specified.
     7 | SAVE 1.
       | ^~~~~~~
 
-matrix.sps:8: warning: SAVE: VARIABLES and NAMES both specified; ignoring
-NAMES.
+matrix.sps:8.35-8.39: warning: SAVE: Ignoring NAMES because VARIABLES was also
+specified.
+    8 | SAVE 1/OUTFILE='matrix.sav'/NAMES={'a'}/VARIABLES=a.
+      |                                   ^~~~~
 
 matrix.sps:10: error: MATRIX: Cannot save 1×2 matrix to `matrix2.sav' because
 the first SAVE to `matrix2.sav' in this matrix program wrote a 1-column matrix.