1
0
mirror of https://github.com/janet-lang/janet synced 2025-09-06 04:48:03 +00:00

Fix order in which *macro-lints* is set during expansion

Previously, `*macro-lints*` was set after the `macroexpand1` fiber was
resumed, rather than just before.  And, `*macro-lints*` was never
cleared.  This behavior was typically fine since the main users of
`compile` pass the same lint array repeatedly, and the first macro
expansion (somewhere in boot.janet) never produces a lint.  But, when
compiling with a fresh lint array, if the first macro invocation
produced a lint, the lint was always lost.
This commit is contained in:
Christopher Chambers
2023-06-09 12:32:14 -04:00
parent 0bd6e85c61
commit 52d3470cbe
2 changed files with 12 additions and 4 deletions

View File

@@ -877,5 +877,11 @@
(assert (= (thunk) 1) "delay 3")
(assert (= counter 1) "delay 4")
(end-suite)
# maclintf
(def env (table/clone (curenv)))
((compile '(defmacro foo [] (maclintf :strict "oops")) env :anonymous))
(def lints @[])
(compile (tuple/setmap '(foo) 1 2) env :anonymous lints)
(assert (deep= lints @[[:strict 1 2 "oops"]]) "maclintf 1")
(end-suite)