From a1dce2d1e00f0c2b5d670960f8ad432d7db3333b Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 18 Sep 2022 16:47:58 -0700 Subject: [PATCH] MATRIX: Improve error messages. --- src/language/stats/matrix.c | 7 ++++++- tests/language/stats/matrix.at | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/language/stats/matrix.c b/src/language/stats/matrix.c index 7e9bd54658..69c6323ef4 100644 --- a/src/language/stats/matrix.c +++ b/src/language/stats/matrix.c @@ -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; } diff --git a/tests/language/stats/matrix.at b/tests/language/stats/matrix.at index 5a6cd48bb2..5fcc8b038d 100644 --- a/tests/language/stats/matrix.at +++ b/tests/language/stats/matrix.at @@ -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. -- 2.30.2