test: Add nyacc cpp match tests; two fail.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sat, 1 Apr 2017 13:06:07 +0000 (15:06 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sat, 1 Apr 2017 13:06:07 +0000 (15:06 +0200)
* tests/match.test ("match nyacc 0", "match nyacc 1"): New tests.
 ("match nyacc simple", "match nyacc tkl0"): New tests; FAIL with Mes.
 (report): Set failure expectation to 2 for Mes.
* HACKING: Add to bugs.

HACKING
tests/match.test

diff --git a/HACKING b/HACKING
index 6cd6b1cb7b0356cb41cbb2f08f5ad745dde82dc0..8b7e0f29a6c0cc136698ff15c2fc6f370773d900 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -73,6 +73,7 @@ syntax-case]] with R7RS ellipsis, [[http://www.nongnu.org/nyacc/][Nyacc]] and [[
 time to start doing something useful.
 
 * Bugs
 time to start doing something useful.
 
 * Bugs
+** test/match.test ("nyacc-simple"): hygiene problem in match
 ** The Scheme reader is very slow.
 ** Fluids are a hack for Nyacc.
 ** Prototype mes.c depends on a C compiler.
 ** The Scheme reader is very slow.
 ** Fluids are a hack for Nyacc.
 ** Prototype mes.c depends on a C compiler.
index 8250ed032310c022675485dc991154069e5e2e2d..d1b7c8728bd7f5fced9a5c529d45c7d836c9ed4c 100755 (executable)
@@ -88,5 +88,30 @@ exit $?
      (_ "no match: (1 2)"))
    '(1 2)))
 
      (_ "no match: (1 2)"))
    '(1 2)))
 
-(result 'report)
+(pass-if-equal "match nyacc 0"
+               '(rest)
+               (match '(first rest)
+                 ((first . rest)
+                  rest)))
 
 
+(pass-if-equal "match nyacc 1"
+               '(#\. rest)
+               (match '(first #\. rest)
+                 (('first . rest)
+                  rest)))
+
+(let ((tkl0-simple '((ident . type) rest)))
+  (pass-if-equal "match nyacc simple"
+                 (cons (cdar tkl0-simple) (cdr tkl0-simple))
+                 (match tkl0-simple
+                   ((('ident . val) . rest)
+                    (cons val rest)))))
+
+(let ((tkl0 '((ident . "type") #\. #\] (arg . "0") #\[ (ident . "g_cells"))))
+  (pass-if-equal "match nyacc tkl0"
+                 (cdr tkl0)
+                 (match tkl0
+                   ((('ident . val) . rest)
+                    rest))))
+
+(result 'report (if mes? 2 0))