diff --git a/examples/tests.modal b/examples/tests.modal index 7351dbe..9f6bd51 100644 --- a/examples/tests.modal +++ b/examples/tests.modal @@ -88,12 +88,15 @@ reverse (modal) = ladom (reverse 1) test ?(?-) (Incomplete definitions) +<> <> +<> () () <> (incomplete-basic) <> (incomplete-reg ?x) <> (waste-rule) * (incomplete-basic) = () (incomplete 1) test (incomplete-reg abcdef) = () (incomplete 2) test +(?(?x) incomplete-lambda) = () (incomplete 3) test ?(?-) (Inline rules) diff --git a/src/modal.c b/src/modal.c index 221ade7..837f271 100644 --- a/src/modal.c +++ b/src/modal.c @@ -228,11 +228,14 @@ rewrite(void) Rule *r = NULL; /* phase: define */ if(c == '<' && s[1] == '>') { - r = rules_++; + r = rules_; s = compile_rule(r, rules_ - rules - 1, s + 2); - if(!quiet && r->a) - printf("<> "), echo_rule(r, r->a), echo_rule(r, r->b), putc('\n', stdout); - while(*s == ' ') s++; + if(*r->a) { + if(!quiet && r->a) + printf("<> "), echo_rule(r, r->a), echo_rule(r, r->b), putc('\n', stdout); + while(*s == ' ') s++; + rules_++; + } return write_tail(s); } /* phase: undefine */