File tree Expand file tree Collapse file tree 3 files changed +26
-4
lines changed Expand file tree Collapse file tree 3 files changed +26
-4
lines changed Original file line number Diff line number Diff line change 11371137 (when (symbol? x) x))
11381138
11391139(defmethod parse 'def
1140- [op env form name _]
1140+ [op env form _ _]
11411141 (let [pfn (fn
11421142 ([_ sym] {:sym sym})
11431143 ([_ sym init] {:sym sym :init init})
11501150 dynamic (-> sym meta :dynamic )
11511151 ns-name (-> env :ns :name )
11521152 locals (:locals env)
1153- clash-ns (symbol (str ns-name " ." sym))]
1153+ clash-ns (symbol (str ns-name " ." sym))
1154+ sym-ns (namespace sym)
1155+ sym (cond
1156+ (and sym-ns (not #?(:clj (= (symbol sym-ns) ns-name)
1157+ :cljs (symbol-identical? (symbol sym-ns) ns-name))))
1158+ (throw (error env (str " Can't def ns-qualified name in namespace " sym-ns)))
1159+
1160+ (some? sym-ns)
1161+ (symbol (name sym))
1162+
1163+ :else sym)]
11541164 (when (get-in @env/*compiler* [::namespaces clash-ns])
11551165 (warning :ns-var-clash env
11561166 {:ns (symbol (str ns-name " ." sym))
11571167 :var (symbol (str ns-name) (str sym))}))
1158- (when (namespace sym)
1159- (throw (error env " Can't def ns-qualified name" )))
11601168 (when (:const (resolve-var (dissoc env :locals ) sym))
11611169 (throw (error env " Can't redefine a constant" )))
11621170 (when-let [doc (:doc args)]
Original file line number Diff line number Diff line change 32353235 (let [m (zipmap (range i) (range i))]
32363236 (is (= () (last (take (inc i) (iterate rest m))))))))
32373237
3238+ (def cljs.core-test /foo-1274 42 )
3239+
3240+ (deftest test-cljs-1274
3241+ (is (= foo-1274 42 ))
3242+ (is (= cljs.core-test/foo-1274 42 )))
3243+
32383244(comment
32393245 ; ; ObjMap
32403246 ; ; (let [ks (map (partial str "foo") (range 500))
Original file line number Diff line number Diff line change 441441 (a/analyze test-env
442442 '(ns foo.core
443443 (:require [clojure.set :rename {intersection foo}]))))))))
444+
445+
446+ (deftest test-cljs-1274
447+ (let [test-env (assoc-in (a/empty-env ) [:ns :name ] 'cljs.user)]
448+ (binding [a/*cljs-ns* a/*cljs-ns*]
449+ (is (thrown-with-msg? Exception #"Can't def ns-qualified name in namespace foo.core"
450+ (a/analyze test-env '(def foo.core/foo 43 ))))
451+ (is (a/analyze test-env '(def cljs.user/foo 43 ))))))
You can’t perform that action at this time.
0 commit comments