Improve error messages for format specifiers.
[pspp] / src / language / expressions / evaluate.c
index e07deeaf81876eac96be8a84319a2a0f49527b6e..18e794f271701728b0720d38249b69a360f410ca 100644 (file)
@@ -227,10 +227,17 @@ cmd_debug_evaluate (struct lexer *lexer, struct dataset *dsother UNUSED)
       else if (lex_match_id (lexer, "FORMAT"))
         {
           lex_match (lexer, T_EQUALS);
-          if (!parse_format_specifier (lexer, &format)
-              || !fmt_check_output (&format)
-              || !fmt_check_type_compat (&format, VAL_NUMERIC))
+          if (!parse_format_specifier (lexer, &format))
             goto done;
+          char *error = fmt_check_output__ (&format);
+          if (!error)
+            error = fmt_check_type_compat__ (&format, VAL_NUMERIC);
+          if (error)
+            {
+              lex_next_error (lexer, -1, -1, "%s", error);
+              free (error);
+              goto done;
+            }
           has_format = true;
         }
       else