Commit231b2e42Recorded9 Jul 2026Repositorysigil-nrepl

Cover dynamic import GET_CELL regression

Changed
 test/fixtures/lib/sigil/nrepl/getcell-fixture.sgl | 27 +++++++++++++++++++++++++++
 test/test-server.sgl                              | 23 +++++++++++++++++++++++
 2 files changed, 50 insertions(+)
Diff
test/fixtures/lib/sigil/nrepl/getcell-fixture.sgladded
@@ -0,0 +1,27 @@
+1
(define-library (sigil nrepl getcell-fixture)
+2
(export nrepl-getcell-match nrepl-getcell-add-base)
+3
+4
(begin
+5
(define *nrepl-getcell-base* 42)
+6
+7
(define (make-nrepl-getcell-adder n)
+8
(lambda (x) (+ x n)))
+9
+10
(define nrepl-getcell-add-base
+11
(make-nrepl-getcell-adder *nrepl-getcell-base*))
+12
+13
(define-syntax nrepl-getcell-match
+14
(syntax-rules (_)
+15
((nrepl-getcell-match value (_ fallback))
+16
fallback)
+17
((nrepl-getcell-match value ((a b c) body) (_ fallback))
+18
(let ((tmp value))
+19
(if (and (pair? tmp)
+20
(pair? (cdr tmp))
+21
(pair? (cddr tmp))
+22
(null? (cdddr tmp)))
+23
(let ((a (car tmp))
+24
(b (cadr tmp))
+25
(c (caddr tmp)))
+26
body)
+27
fallback)))))))
test/test-server.sglmodified
@@ -8,6 +8,8 @@
8
(sigil string)
9
(sigil nrepl))
10
+11
(add-library-path! "test/fixtures/lib")
+12
13
(define *test-port* 57889)
14
15
(define (encode-test-message sexp)
@@ -251,6 +253,27 @@
253
'(request :id "second-call" :op eval :code "(nrepl-test-caller)"))))
254
(assert-eq (response-ref second ':status #f) 'ok)
255
(assert-equal (response-ref second ':value #f) "2"))
+256
(socket-close sock)))))
+257
+258
(test "dynamic import exposes macro and upvalue-exported closure"
+259
(with-server
+260
(lambda (server)
+261
(let ((sock (tcp-connect "127.0.0.1" *test-port*)))
+262
(pump server 5)
+263
(let ((import-resp (request-response server sock
+264
'(request :id "fixture-import" :op eval
+265
:code "(import (sigil nrepl getcell-fixture))"))))
+266
(assert-eq (response-ref import-resp ':status #f) 'ok))
+267
(let ((macro-resp (request-response server sock
+268
'(request :id "fixture-macro" :op eval
+269
:code "(nrepl-getcell-match '(1 2 3) ((a b c) (+ a b c)) (_ 0))"))))
+270
(assert-eq (response-ref macro-resp ':status #f) 'ok)
+271
(assert-equal (response-ref macro-resp ':value #f) "6"))
+272
(let ((closure-resp (request-response server sock
+273
'(request :id "fixture-closure" :op eval
+274
:code "(nrepl-getcell-add-base 5)"))))
+275
(assert-eq (response-ref closure-resp ':status #f) 'ok)
+276
(assert-equal (response-ref closure-resp ':value #f) "47"))
277
(socket-close sock))))))
278
279
(run-tests)