Skip to content

Commit c9b6310

Browse files
committed
fix #738: dotted simple symbol should remain unresolved
1 parent 8869252 commit c9b6310

2 files changed

Lines changed: 7 additions & 3 deletions

File tree

src/sci/impl/parser.cljc

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
[edamame.core :as edamame]
77
[sci.impl.interop :as interop]
88
[sci.impl.utils :as utils]
9-
[sci.impl.vars :as vars]))
9+
[sci.impl.vars :as vars]
10+
[clojure.string :as str]))
1011

1112
#?(:clj (set! *warn-on-reflection* true))
1213

@@ -74,7 +75,9 @@
7475
(symbol "clojure.core" sym-name-str))
7576
(interop/fully-qualify-class ctx sym)
7677
;; all unresolvable symbols all resolved in the current namespace
77-
(symbol current-ns-str sym-name-str))
78+
(if (str/includes? sym-name-str ".")
79+
sym ;; unresolved class
80+
(symbol current-ns-str sym-name-str)))
7881
(if (get-in env [:namespaces sym-ns])
7982
sym
8083
(if-let [ns (get aliases sym-ns)]

test/sci/core_test.cljc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -808,7 +808,8 @@
808808
(is (= 'foo/inc (eval* "(ns foo (:refer-clojure :exclude [inc])) `inc")))
809809
(is (= 'foo/inc (eval* "(ns foo) (defn inc []) `inc")))
810810
(is (true? (eval* "(require '[clojure.string :refer [join]]) (= 'clojure.string/join `join)")))
811-
(is (true? (eval* "(ns foo) (defn inc []) (ns bar (:require [foo :refer [inc]])) (= 'foo/inc `inc)"))))
811+
(is (true? (eval* "(ns foo) (defn inc []) (ns bar (:require [foo :refer [inc]])) (= 'foo/inc `inc)")))
812+
(is (= '[foo.bar user/foo] (eval* "(ns user) [`foo.bar `foo]"))))
812813

813814
(deftest defmacro-test
814815
(is (= [":hello:hello" ":hello:hello"]

0 commit comments

Comments
 (0)