diff options
-rw-r--r-- | stdlib/place.tl | 2 | ||||
-rw-r--r-- | tests/012/defset.tl | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/stdlib/place.tl b/stdlib/place.tl index a08e320a..1ff5a0c1 100644 --- a/stdlib/place.tl +++ b/stdlib/place.tl @@ -931,7 +931,7 @@ (lambda (getter setter place body) (let* ((args (cdr place)) (temps (mapcar (ret (gensym)) args))) - ^(let (,(zip temps args)) + ^(let ,(zip temps args) (macrolet ((,getter () ^(,',get-fun ,*',temps)) (,setter (val) ^(,',set-fun ,*',temps ,val))) diff --git a/tests/012/defset.tl b/tests/012/defset.tl index 110f3c64..917c0a9c 100644 --- a/tests/012/defset.tl +++ b/tests/012/defset.tl @@ -19,3 +19,15 @@ (expand '(inc (foo 1 2 :a 3 :b 4) 5)) ^(let ((,%new-val-sym% (+ (foo 1 2 :a 3 :b 4) 5))) (bar 1 2 3 4 () 4 ,%new-val-sym%))) + +(defvarl %data% (vec 0 0 0 0 0 0 0 0 0 1)) +(defun getd (a b c) [%data% (+ a b c)]) +(defun setd (a b c v) (set [%data% (+ a b c)] v)) +(define-accessor getd setd) + +(mtest + (getd 2 3 4) 1 + (set (getd 2 3 4) 2) 2 + [%data% 9] 2 + (inc (getd 2 3 4) 3) 5 + [%data% 9] 5) |