DELETE VARIABLES: Improve error messages.
authorBen Pfaff <blp@cs.stanford.edu>
Fri, 16 Sep 2022 23:14:34 +0000 (16:14 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Fri, 16 Sep 2022 23:14:34 +0000 (16:14 -0700)
src/language/dictionary/delete-variables.c
tests/language/dictionary/delete-variables.at

index 1063b1652e6abe0b549162f5ad40f31b1f28d5e4..03ccd115fed7e7ae7374ad6674aba9c0c0a7baf9 100644 (file)
@@ -47,9 +47,10 @@ cmd_delete_variables (struct lexer *lexer, struct dataset *ds)
     goto error;
   if (n_vars == dict_get_n_vars (dataset_dict (ds)))
     {
-      msg (SE, _("%s may not be used to delete all variables "
-                 "from the active dataset dictionary.  "
-                 "Use %s instead."), "DELETE VARIABLES", "NEW FILE");
+      lex_ofs_error (lexer, 0, lex_ofs (lexer) - 1,
+                     _("%s may not be used to delete all variables "
+                       "from the active dataset dictionary.  "
+                       "Use %s instead."), "DELETE VARIABLES", "NEW FILE");
       goto error;
     }
 
index b4b199987b0633e4e71a6208928e66ff7c9430e7..b5cda6e9d0f7797570db4f0e2f0a2786ecb5c7d2 100644 (file)
@@ -62,3 +62,27 @@ s2,n1
 2,.  @&t@
 ])
 AT_CLEANUP
+
+AT_SETUP([DELETE VARIABLES syntax errors])
+AT_DATA([delete-variables.sps], [dnl
+DATA LIST LIST NOTABLE /x y z.
+BEGIN DATA.
+1 2 3
+END DATA.
+TEMPORARY.
+DELETE VARIABLES x.
+DELETE VARIABLES y z.
+])
+AT_DATA([insert.sps], [dnl
+INSERT FILE='delete-variables.sps' ERROR=IGNORE.
+])
+AT_CHECK([pspp --testing-mode -O format=csv insert.sps], [1], [dnl
+"delete-variables.sps:6.1-6.16: error: DELETE VARIABLES: DELETE VARIABLES may not be used after TEMPORARY.  Temporary transformations will be made permanent.
+    6 | DELETE VARIABLES x.
+      | ^~~~~~~~~~~~~~~~"
+
+"delete-variables.sps:7.1-7.20: error: DELETE VARIABLES: DELETE VARIABLES may not be used to delete all variables from the active dataset dictionary.  Use NEW FILE instead.
+    7 | DELETE VARIABLES y z.
+      | ^~~~~~~~~~~~~~~~~~~~"
+])
+AT_CLEANUP
\ No newline at end of file