[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#60225] [PATCH v2 2/2] tests: records: Add a failing test for match-
From: |
Attila Lendvai |
Subject: |
[bug#60225] [PATCH v2 2/2] tests: records: Add a failing test for match-record. |
Date: |
Wed, 21 Dec 2022 23:14:57 -0300 |
* tests/records.scm ("match-record, syntactic interference"): New failing test.
---
i'm not sure what's going on here, but it looks like a bug to me.
i've experienced this in real code, and the error message was
not very helpful.
tests/records.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/tests/records.scm b/tests/records.scm
index b1203dfeb7..8a48e2fd07 100644
--- a/tests/records.scm
+++ b/tests/records.scm
@@ -561,4 +561,27 @@ (define-record-type* <foo> foo make-foo
(make-fresh-user-module)))
(lambda (key . args) key)))
+(test-expect-fail 1)
+(test-equal "match-record, syntactic interference"
+ '(1 2)
+ (begin
+ (define* (make-form #:optional (bindings '()))
+ `(begin
+ (use-modules (guix records))
+
+ (let ((first 42)) ; here it does not interfere
+ (define-record-type* <foo> foo make-foo
+ foo?
+ (first foo-first (default 1))
+ (second foo-second))
+
+ (let (,@bindings) ; but here it does interfere
+ (match-record (foo (second 2)) <foo>
+ (first second)
+ (list first second))))))
+ ;; This works fine.
+ (eval (make-form) (make-fresh-user-module))
+ ;; But this fails, although I think it shouldn't.
+ (eval (make-form '((second 43))) (make-fresh-user-module))))
+
(test-end)
--
2.35.1