File tree Expand file tree Collapse file tree 1 file changed +7
-0
lines changed
Expand file tree Collapse file tree 1 file changed +7
-0
lines changed Original file line number Diff line number Diff line change 963963 [~@fields]
964964 (new ~rname ~@field-values))))
965965
966+ (defn- validate-fields
967+ [case name fields]
968+ (when-not (vector? fields)
969+ (throw (AssertionError. (core/str case " " name " , no fields vector given." )))))
970+
966971(defmacro deftype
967972 " (deftype name [fields*] options* specs*)
968973
10131018 Given (deftype TypeName ...), a factory function called ->TypeName
10141019 will be defined, taking positional parameters for the fields"
10151020 [t fields & impls]
1021+ (validate-fields " deftype" t fields)
10161022 (let [env &env
10171023 r (:name (cljs.analyzer/resolve-var (dissoc env :locals ) t))
10181024 [fpps pmasks] (prepare-protocol-masks env impls)
11721178 defined: ->TypeName, taking positional parameters for the fields,
11731179 and map->TypeName, taking a map of keywords to field values."
11741180 [rsym fields & impls]
1181+ (validate-fields " defrecord" rsym fields)
11751182 (let [rsym (vary-meta rsym assoc :internal-ctor true )
11761183 r (vary-meta
11771184 (:name (cljs.analyzer/resolve-var (dissoc &env :locals ) rsym))
You can’t perform that action at this time.
0 commit comments