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 963
963
[~@fields]
964
964
(new ~rname ~@field-values))))
965
965
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
+
966
971
(defmacro deftype
967
972
" (deftype name [fields*] options* specs*)
968
973
1013
1018
Given (deftype TypeName ...), a factory function called ->TypeName
1014
1019
will be defined, taking positional parameters for the fields"
1015
1020
[t fields & impls]
1021
+ (validate-fields " deftype" t fields)
1016
1022
(let [env &env
1017
1023
r (:name (cljs.analyzer/resolve-var (dissoc env :locals ) t))
1018
1024
[fpps pmasks] (prepare-protocol-masks env impls)
1172
1178
defined: ->TypeName, taking positional parameters for the fields,
1173
1179
and map->TypeName, taking a map of keywords to field values."
1174
1180
[rsym fields & impls]
1181
+ (validate-fields " defrecord" rsym fields)
1175
1182
(let [rsym (vary-meta rsym assoc :internal-ctor true )
1176
1183
r (vary-meta
1177
1184
(:name (cljs.analyzer/resolve-var (dissoc &env :locals ) rsym))
You can’t perform that action at this time.
0 commit comments