From dee5f07052d915c97330a2f9371d44e0e5333fa8 Mon Sep 17 00:00:00 2001
From: Ben Pfaff <blp@cs.stanford.edu>
Date: Sun, 6 Nov 2022 11:41:06 -0800
Subject: [PATCH] Use lex_error_expecting() in more places.

---
 src/language/control/do-if.c         | 2 +-
 src/language/control/loop.c          | 2 +-
 src/language/data-io/combine-files.c | 6 +++++-
 tests/language/control/do-if.at      | 2 +-
 tests/language/control/loop.at       | 2 +-
 5 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/language/control/do-if.c b/src/language/control/do-if.c
index 69288e5c14..24a1e4f106 100644
--- a/src/language/control/do-if.c
+++ b/src/language/control/do-if.c
@@ -120,7 +120,7 @@ cmd_do_if (struct lexer *lexer, struct dataset *ds)
     {
       if (lex_token (lexer) == T_STOP)
         {
-          lex_error (lexer, NULL);
+          lex_error_expecting (lexer, "END IF");
           break;
         }
       else if (lex_match_phrase (lexer, "ELSE IF"))
diff --git a/src/language/control/loop.c b/src/language/control/loop.c
index 0db3a491d3..ed6d38dd6e 100644
--- a/src/language/control/loop.c
+++ b/src/language/control/loop.c
@@ -97,7 +97,7 @@ cmd_loop (struct lexer *lexer, struct dataset *ds)
     {
       if (lex_token (lexer) == T_STOP)
         {
-          lex_error (lexer, NULL);
+          lex_error_expecting (lexer, "END LOOP");
           ok = false;
           break;
         }
diff --git a/src/language/data-io/combine-files.c b/src/language/data-io/combine-files.c
index dde261a68f..3306ffec68 100644
--- a/src/language/data-io/combine-files.c
+++ b/src/language/data-io/combine-files.c
@@ -357,7 +357,11 @@ combine_files (enum comb_command_type command,
         }
       else
 	{
-	  lex_error (lexer, NULL);
+          if (command == COMB_UPDATE)
+            lex_error_expecting (lexer, "BY", "MAP", "DROP", "KEEP");
+          else
+            lex_error_expecting (lexer, "BY", "FIRST", "LAST",
+                                 "MAP", "DROP", "KEEP");
 	  goto error;
 	}
 
diff --git a/tests/language/control/do-if.at b/tests/language/control/do-if.at
index b12cdaa4fd..6281a0fd68 100644
--- a/tests/language/control/do-if.at
+++ b/tests/language/control/do-if.at
@@ -132,6 +132,6 @@ AT_CHECK([pspp -O format=csv do-if.sps], [1], [dnl
    20 | DO IF !.
       |       ^"
 
-error: DO IF: At end of input: Syntax error.
+error: DO IF: At end of input: Syntax error expecting END IF.
 ])
 AT_CLEANUP
diff --git a/tests/language/control/loop.at b/tests/language/control/loop.at
index 8f4d2b4225..23ab6b5b18 100644
--- a/tests/language/control/loop.at
+++ b/tests/language/control/loop.at
@@ -369,6 +369,6 @@ loop.sps:36.10: error: LOOP: Syntax error expecting end of command.
    36 | END LOOP !.
       |          ^
 
-error: LOOP: At end of input: Syntax error.
+error: LOOP: At end of input: Syntax error expecting END LOOP.
 ])
 AT_CLEANUP
\ No newline at end of file
-- 
2.30.2