1
0
mirror of https://github.com/janet-lang/janet synced 2024-11-28 11:09:54 +00:00

Improve import's handling of non constant args.

Be much more conservative about which arguments are cast to strings.
This commit is contained in:
Calvin Rose 2020-08-27 07:40:51 -05:00
parent 86e00e865e
commit 17d0b7a985
2 changed files with 6 additions and 1 deletions

View File

@ -2475,7 +2475,8 @@
to be called. Dynamic bindings will NOT be imported. Use :fresh to bypass the to be called. Dynamic bindings will NOT be imported. Use :fresh to bypass the
module cache." module cache."
[path & args] [path & args]
(def argm (map |(if (keyword? $) $ (string $)) args)) (def ps (partition 2 args))
(def argm (mapcat (fn [[k v]] [k (if (= k :as) (string v) v)]) ps))
(tuple import* (string path) ;argm)) (tuple import* (string path) ;argm))
(defmacro use (defmacro use

View File

@ -57,4 +57,8 @@
(assert (= nil (curenv 1000000)) "curenv 3") (assert (= nil (curenv 1000000)) "curenv 3")
(assert (= root-env (curenv 1)) "curenv 4") (assert (= root-env (curenv 1)) "curenv 4")
# Import macro test
(assert-no-error "import macro 1" (macex '(import a :as b :fresh maybe)))
(assert (deep= ~(,import* "a" :as "b" :fresh maybe) (macex '(import a :as b :fresh maybe))) "import macro 2")
(end-suite) (end-suite)