Enable inlining for define-inline
calls as arguments.
A seemingly-unintentional choice made the following not behave as expected: (define-inline (f x) (+ x 1)) (f (f 2)) because the `(f 2)` was not inlined. Reported by @mflatt and Liwei Chou.
This commit is contained in:
parent
627c45e8d4
commit
0e4f57f44c
|
@ -99,9 +99,9 @@
|
||||||
[(_ arg*:actual ...)
|
[(_ arg*:actual ...)
|
||||||
;; let*-bind the actuals, to ensure that they're evaluated
|
;; let*-bind the actuals, to ensure that they're evaluated
|
||||||
;; only once, and in order
|
;; only once, and in order
|
||||||
#`(syntax-parameterize
|
#`(let* ([arg*.tmp arg*.arg] ...)
|
||||||
|
(syntax-parameterize
|
||||||
([name (make-rename-transformer #'internal-name)])
|
([name (make-rename-transformer #'internal-name)])
|
||||||
(let* ([arg*.tmp arg*.arg] ...)
|
|
||||||
#,(let* ([arg-entries (attribute arg*.for-aux)]
|
#,(let* ([arg-entries (attribute arg*.for-aux)]
|
||||||
[keyword-entries (filter car arg-entries)]
|
[keyword-entries (filter car arg-entries)]
|
||||||
[positional-entries
|
[positional-entries
|
||||||
|
|
Loading…
Reference in New Issue
Block a user