File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree 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