- insist(m->args == 0);
- insist(m->next == 0);
- check_string(mx_dump(m), "@macro@");
- m = mx_parse("macro3", 1, "@macro @", NULL);
- check_integer(m->type, MX_EXPANSION);
- check_string(m->filename, "macro3");
- check_integer(m->line, 1);
- check_string(m->name, "macro");
- check_integer(m->nargs, 0);
- insist(m->args == 0);
- insist(m->next == 0);
- check_string(mx_dump(m), "@macro@");
-
- /* Unterminated variants */
- m = mx_parse("macro4", 1, "@macro", NULL);
- check_integer(m->type, MX_EXPANSION);
- check_string(m->filename, "macro4");
- check_integer(m->line, 1);
- check_string(m->name, "macro");
- check_integer(m->nargs, 0);
- insist(m->args == 0);
- insist(m->next == 0);
- check_string(mx_dump(m), "@macro@");
- m = mx_parse("macro5", 1, "@macro ", NULL);
- check_integer(m->type, MX_EXPANSION);
- check_string(m->filename, "macro5");
- check_integer(m->line, 1);
- check_string(m->name, "macro");
- check_integer(m->nargs, 0);
- insist(m->args == 0);
- insist(m->next == 0);
- check_string(mx_dump(m), "@macro@");
-
- /* Macros with a :-separated argument */
- m = mx_parse("macro5", 1, "@macro:arg@", NULL);
- check_integer(m->type, MX_EXPANSION);
- check_string(m->filename, "macro5");
- check_integer(m->line, 1);
- check_string(m->name, "macro");
- check_integer(m->nargs, 1);
- insist(m->next == 0);
-
- check_integer(m->args[0]->type, MX_TEXT);
- check_string(m->args[0]->filename, "macro5");
- check_integer(m->args[0]->line, 1);
- check_string(m->args[0]->text, "arg");
- insist(m->args[0]->next == 0);
-
- check_string(mx_dump(m), "@macro{arg}@");
-
- /* Multiple :-separated arguments, and spacing, and newlines */
- m = mx_parse("macro6", 1, "@macro : \n arg1 : \n arg2@", NULL);
- check_integer(m->type, MX_EXPANSION);
- check_string(m->filename, "macro6");
- check_integer(m->line, 1);
- check_string(m->name, "macro");
- check_integer(m->nargs, 2);
- insist(m->next == 0);
-
- check_integer(m->args[0]->type, MX_TEXT);
- check_string(m->args[0]->filename, "macro6");
- check_integer(m->args[0]->line, 2);
- check_string(m->args[0]->text, "arg1");
- insist(m->args[0]->next == 0);
-
- check_integer(m->args[1]->type, MX_TEXT);
- check_string(m->args[1]->filename, "macro6");
- check_integer(m->args[1]->line, 3);
- check_string(m->args[1]->text, "arg2");
- insist(m->args[1]->next == 0);
-
- check_string(mx_dump(m), "@macro{arg1}{arg2}@");