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)