Skip to content

Avoid putting procedures in Scheme forms when reading #{ #}

For reasons explained in parser-ly-from-scheme.scm, the implementation of # and $ inside #{ #} finds them while reading the #{ #}, and wraps them in (lambda () ...). Later, evaluating those forms calls the resulting thunk. Up to now, this was done by putting the thunk into a one-element list, which is Scheme code for calling it. This worked because Guile 1, and Guile 2's evaluator, accept procedures in macro output and eval input. This is no longer supported by Guile 2's compiler, however, which we want to use for better error locations, so as a preparation for that, this replaces this use with something else: the result of parse_embedded_scheme is now either a form, or a procedure, and splicing multiple values is no longer recognized in parse_embedded_scheme, but before, when precompiling the thunk.


Preparatory work for !1510 (merged).

Merge request reports