diff options
| author | Alasdair Armstrong | 2019-02-18 17:47:37 +0000 |
|---|---|---|
| committer | Alasdair Armstrong | 2019-02-18 17:47:37 +0000 |
| commit | 9de3f45de277d8a8f264a425d9121fe91ad80345 (patch) | |
| tree | 9800a82d8b5284e6408b2a0180a8e6d2d37ece7b /src | |
| parent | 112f02934f30c631996ff837dd7687039d274e97 (diff) | |
Make sure we remove bitvector patterns within guards
Fixes #34
Diffstat (limited to 'src')
| -rw-r--r-- | src/rewrites.ml | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/rewrites.ml b/src/rewrites.ml index e40b7387..3c000f17 100644 --- a/src/rewrites.ml +++ b/src/rewrites.ml @@ -1549,10 +1549,11 @@ let rewrite_exp_remove_bitvector_pat rewriters (E_aux (exp,(l,annot)) as full_ex | None -> Pat_aux (Pat_exp (pat', body'), annot')) | Pat_aux (Pat_when (pat,guard,body),annot') -> let (pat',(guard',decls,_)) = remove_bitvector_pat pat in + let guard'' = rewrite_rec guard in let body' = decls (rewrite_rec body) in (match guard' with - | Some guard' -> Pat_aux (Pat_when (pat', bitwise_and_exp (decls guard) guard', body'), annot') - | None -> Pat_aux (Pat_when (pat', (decls guard), body'), annot')) in + | Some guard' -> Pat_aux (Pat_when (pat', bitwise_and_exp (decls guard'') guard', body'), annot') + | None -> Pat_aux (Pat_when (pat', (decls guard''), body'), annot')) in rewrap (E_case (e, List.map rewrite_pexp ps)) | E_let (LB_aux (LB_val (pat,v),annot'),body) -> let (pat,(_,decls,_)) = remove_bitvector_pat pat in |
