diff options
author | Mura Li <mural@ctli.io> | 2021-07-05 13:39:04 +0000 |
---|---|---|
committer | Mura Li <mural@ctli.io> | 2021-07-05 13:39:04 +0000 |
commit | f5175435a735fa8cdcd28995d5f3e32faf792945 (patch) | |
tree | 08828eaf708a3450fde0775b43144d5999667576 /mi | |
parent | e3682d0bb7437dc3cbb6a6fcf8d82806d98c73da (diff) | |
download | mc-f5175435a735fa8cdcd28995d5f3e32faf792945.tar.gz |
mi/match: fix dtree construction order of or-pattern
When we have a match statement such as
match x
| `std.Some _ || _:
;;
the order of the patterns `std.seom _ and _ matters.
before the fix, we would get false positive of "pattern
matched by earlier case".
Signed-off-by: Mura Li <mural@ctli.io>
Diffstat (limited to 'mi')
-rw-r--r-- | mi/match.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -464,8 +464,8 @@ addrec(Frontier *fs, Node *pat, Node *val, Path *path) next->hasorpat = 1; fs->next = next; fs->hasorpat = 1; - addrec(fs, pat->expr.args[1], val, path); - addrec(next, pat->expr.args[0], val, path); + addrec(fs, pat->expr.args[0], val, path); + addrec(next, pat->expr.args[1], val, path); break; case Ogap: lappend(&fs->slot, &fs->nslot, mkslot(path, pat, val)); |