[plt-scheme] Using the struct type identifier as a macro [PATCH]
On Mon, 17 Nov 2008, Sam TH wrote:
> Can you run the test suite for `match' like this:
>
> % cd collects/tests/match
> % mzscheme plt-match-tests.ss
yes, that passes too:
321 success(es) 0 failure(s) 0 error(s) 321 test(s) run
>
> as well as add some tests for your new feature? Probably it would be
> easiest to add them to collects/tests/match/examples.ss .
Well, there are really just a couple of tests that make sense:
correct expansion and the arity syntax error.
For the former one, will something like this do?
(define-struct test1 (x y))
(define-struct (test2 test1) (z))
(match (test1 1 2) ((test1 x y) (list x y)))
=> (1 2)
(match (test2 1 2 3) ((test1 x y) (list x y)))
=> (1 2)
(match (test2 1 2 3) ((test2 x y z) (list x y z)))
=> (1 2 3)
(match (test1 1 2) ((test2 x y z) #t) (else #f))
=> #f
Now, the syntax error is harder to autotest. Is there any facility for
catching syntax errors?
Something like this:
(match 'foo ((test1 x) #t))
stdin::268: match: wrong number for fields for structure test1: expected 2
but got 1 at: (x) in: (test1 x)
I can also add a couple of tests in the tests/mzscheme/struct.ss suite.
-- vyzo