File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1818 [com.google.javascript.rhino
1919 Node Token JSTypeExpression]))
2020
21+ (def ^:dynamic *ignore-var* false )
2122(def ^:dynamic *source-file* nil )
2223
2324; ; ------------------------------------------------------------------------------
7879 lhs (cond-> (first (parse-extern-node (.getFirstChild node)))
7980 ty (annotate ty))]
8081 (if (> (.getChildCount node) 1 )
81- (let [externs (parse-extern-node (.getChildAtIndex node 1 ))]
82+ (let [externs
83+ (binding [*ignore-var* true ]
84+ (parse-extern-node (.getChildAtIndex node 1 )))]
8285 (conj (map (fn [ext] (concat lhs ext)) externs)
8386 lhs))
8487 [lhs]))))
9295 [lhs])))
9396
9497(defmethod parse-extern-node Token /GETPROP [node]
95- (let [props (map symbol (string/split (.getQualifiedName node) #"\. " ))]
96- [(if-let [ty (get-type node)]
97- (annotate props ty)
98- props)]))
98+ (when-not *ignore-var*
99+ (let [props (map symbol (string/split (.getQualifiedName node) #"\. " ))]
100+ [(if-let [ty (get-type node)]
101+ (annotate props ty)
102+ props)])))
99103
100104(defmethod parse-extern-node Token /OBJECTLIT [node]
101105 (when (> (.getChildCount node) 0 )
Original file line number Diff line number Diff line change 11(ns cljs.externs-parsing-test
2- (:require [cljs.externs :as externs]
2+ (:require [cljs.closure :as closure]
3+ [cljs.externs :as externs]
4+ [clojure.java.io :as io]
35 [clojure.test :as test :refer [deftest is]]))
6+
7+ (deftest cljs-3121
8+ (let [externs (externs/parse-externs
9+ (closure/js-source-file " goog/string/string.js"
10+ (io/input-stream (io/resource " goog/string/string.js" ))))]
11+ (is (every?
12+ (fn [xs]
13+ (= (count (distinct xs))
14+ (count xs)))
15+ externs))))
You can’t perform that action at this time.
0 commit comments