From fa31291af1f89bfd4f11e7df8b08425377765c48 Mon Sep 17 00:00:00 2001 From: Gabriel Kerneis Date: Wed, 8 Jan 2014 17:32:29 +0100 Subject: More tests for various vector patterns bugs --- src/test/vectors.sail | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/test/vectors.sail b/src/test/vectors.sail index 54defa08..f51b5d93 100644 --- a/src/test/vectors.sail +++ b/src/test/vectors.sail @@ -1,10 +1,41 @@ let (bit[32]) v = 0b101 register (bit[32]) i +register nat match_success + +function unit decode ([bitzero, bitzero, bitone, bitzero]) = match_success := 1 +and decode x = match_success := x + function unit main _ = { i := [bitzero, bitzero, bitone, bitzero]; - i := 0b101 ; + + (* literal match *) + switch v { + case 0b101 -> match_success := 1 + case _ -> match_success := v + }; + + switch i { + case [bitzero, bitzero, bitone, bitzero] -> match_success := 1 + case _ -> match_success := i + }; + + (* XXX function clause match fail *) + (* parameter is wrapped in a 1-tuple upon call, but probably not + unwrapped for the pattern-matching *) + decode(i); + + (* concatenation *) + switch i { + (* XXX match fails *) + case ([bitzero] : [bitzero, bitone] : [bitzero]) -> match_success := 1 + (* but this works *) + case ([bitzero] : [bitzero] : [bitone] : [bitzero]) -> match_success := 2 + case _ -> match_success := i + }; + + (* XXX slice access not implemented *) i[0] := bitzero; (* XXX Vector access of non-vector *) v[0]; -- cgit v1.2.3