diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | match.c | 2 | ||||
-rw-r--r-- | parser.y | 2 |
3 files changed, 11 insertions, 2 deletions
@@ -1,5 +1,14 @@ 2011-10-01 Kaz Kylheku <kaz@kylheku.com> + Regression bug fix: longest match variables broken by + 2011-09-28 commit which introduced the double var match. + + * match.c (match_line): Handle case where modifier is t. + + * parser.y (var_op): Produce modifir as (t) rather than t. + +2011-10-01 Kaz Kylheku <kaz@kylheku.com> + New directive: choose. * match.c (choose_s, longest_k, shortest_k): New variables. @@ -375,7 +375,7 @@ static val match_line(val bindings, val specline, val dataline, specline = cons(pat, rest(specline)); continue; } - } else if (modifier) { + } else if (modifier && modifier != t) { sem_error(spec_lineno, lit("invalid modifier ~s on variable ~s"), modifier, sym, nao); } else if (pat == nil) { /* no modifier, no elem -> to end of line */ @@ -473,7 +473,7 @@ var : IDENT { $$ = list(var_s, intern(string_own($1), nil), yybadtoken(yychar, lit("variable spec")); } ; -var_op : '*' { $$ = t; } +var_op : '*' { $$ = list(t, nao); } ; list : '(' exprs ')' { $$ = $2; } |