} else {
/* Some non-whitespace thing. */
+ /* If there's no test, then report an error. Set the muffle flag,
+ * because there's no point in complaining about every assignment
+ * in this block.
+ */
+ if (!tv->test) {
+ if (!(tv->f&TVSF_MUFFLE)) tvec_error(tv, "no current test");
+ tv->f |= TVSF_MUFFLE; goto flush_line;
+ }
+
/* Put the character back and read a word, which ought to be a
* register name.
*/
if (tvec_readword(tv, &d, 0, "=:*;", "register name"))
goto flush_line;
+ /* Open the test. This is syntactically a paragraph of settings,
+ * so it's fair to report on missing register assignments.
+ */
+ open_test(tv);
+
/* See what sort of thing we have found. */
if (d.buf[0] == '@') {
/* A special register assignment. */
{ tvec_dupregerr(tv, rd->name); goto flush_line; }
}
- /* If there's no test, then report an error. Set the muffle flag,
- * because there's no point in complaining about every assignment
- * in this block.
- */
- if (!tv->test) {
- if (!(tv->f&TVSF_MUFFLE)) tvec_error(tv, "no current test");
- tv->f |= TVSF_MUFFLE; goto flush_line;
- }
-
- /* Open the test. This is syntactically a paragraph of settings,
- * so it's fair to report on missing register assignments.
- */
- open_test(tv);
-
/* Now there should be a separator. */
tvec_skipspc(tv); ch = getc(tv->fp);