Basic tests for macros and arguments pass.
[pspp] / src / language / control / define.c
index 6c71f02c09e3986d40f5f35011a8590d1be6b210..187eb9fcf840b1e7932d36c49cfc77f1bde1b1ae 100644 (file)
@@ -23,6 +23,7 @@
 #include "language/lexer/macro.h"
 #include "language/lexer/scan.h"
 #include "language/lexer/token.h"
+#include "libpspp/message.h"
 
 #include "gl/xalloc.h"
 
@@ -59,7 +60,7 @@ parse_quoted_token (struct lexer *lexer, struct token *token)
   struct substring s = lex_tokss (lexer);
   struct string_lexer slex;
   string_lexer_init (&slex, s.string, s.length, SEG_MODE_INTERACTIVE);
-  struct token another_token;
+  struct token another_token = { .type = T_STOP };
   if (!string_lexer_next (&slex, token)
       || string_lexer_next (&slex, &another_token))
     {
@@ -228,6 +229,13 @@ cmd_debug_expand (struct lexer *lexer, struct dataset *ds UNUSED)
   settings_set_mprint (true);
 
   while (lex_token (lexer) != T_STOP)
-    lex_get (lexer);
+    {
+      if (!lex_next_is_from_macro (lexer, 0) && lex_token (lexer) != T_ENDCMD)
+        {
+          struct substring rep = lex_next_representation (lexer, 0, 0);
+          msg (MN, "unexpanded token \"%.*s\"", (int) rep.length, rep.string);
+        }
+      lex_get (lexer);
+    }
   return CMD_SUCCESS;
 }