@@ -37,8 +37,8 @@ callDecoder name tipe =
3737 (a (VarForeign mLamdera_Wire name (Forall Map. empty (TAlias mLamdera_Wire " Decoder" [(" a" , tipe)] (Filled (TType (Module. Canonical (Name " elm" " bytes" ) " Bytes.Decode" ) " Decoder" [tipe]))))))
3838
3939
40- decoderForType :: Map. Map Module. Raw I. Interface -> Module. Canonical -> Type -> Expr
41- decoderForType ifaces cname tipe =
40+ decoderForType :: DecodeMode -> Map. Map Module. Raw I. Interface -> Module. Canonical -> Type -> Expr
41+ decoderForType mode ifaces cname tipe =
4242 if containsUnsupportedTypes tipe then
4343 failDecode " contains unsupported types"
4444 else
@@ -89,8 +89,8 @@ decoderForType ifaces cname tipe =
8989 (Module. Canonical (Name " elm" " bytes" ) " Bytes.Decode" )
9090 " Decoder"
9191 [TTuple (TVar " a" ) (TVar " b" ) Nothing ]))))))))
92- [ decoderForType ifaces cname a_
93- , decoderForType ifaces cname b
92+ [ decoderForType mode ifaces cname a_
93+ , decoderForType mode ifaces cname b
9494 ]))
9595
9696 TTuple a_ b (Just c) ->
@@ -126,9 +126,9 @@ decoderForType ifaces cname tipe =
126126 (Filled
127127 (TType (Module. Canonical (Name " elm" " bytes" ) " Bytes.Decode" ) " Decoder"
128128 [TTuple (TVar " a" ) (TVar " b" ) (Just (TVar " c" ))])))))))))
129- [ decoderForType ifaces cname a_
130- , decoderForType ifaces cname b
131- , decoderForType ifaces cname c
129+ [ decoderForType mode ifaces cname a_
130+ , decoderForType mode ifaces cname b
131+ , decoderForType mode ifaces cname c
132132 ]))
133133
134134 TType (Module. Canonical (Name " elm" " core" ) " Maybe" ) " Maybe" [ptype] ->
@@ -148,7 +148,7 @@ decoderForType ifaces cname tipe =
148148 (Module. Canonical (Name " elm" " bytes" ) " Bytes.Decode" )
149149 " Decoder"
150150 [TType (Module. Canonical (Name " elm" " core" ) " Maybe" ) " Maybe" [TVar " a" ]])))))))
151- [ decoderForType ifaces cname ptype ]))
151+ [ decoderForType mode ifaces cname ptype ]))
152152
153153 TType (Module. Canonical (Name " elm" " core" ) " List" ) " List" [ptype] ->
154154 (a (Call
@@ -167,7 +167,7 @@ decoderForType ifaces cname tipe =
167167 (Module. Canonical (Name " elm" " bytes" ) " Bytes.Decode" )
168168 " Decoder"
169169 [TType (Module. Canonical (Name " elm" " core" ) " List" ) " List" [TVar " a" ]])))))))
170- [ decoderForType ifaces cname ptype ]))
170+ [ decoderForType mode ifaces cname ptype ]))
171171
172172 TType (Module. Canonical (Name " elm" " core" ) " Set" ) " Set" [ptype] ->
173173 (a (Call
@@ -186,7 +186,7 @@ decoderForType ifaces cname tipe =
186186 (Module. Canonical (Name " elm" " bytes" ) " Bytes.Decode" )
187187 " Decoder"
188188 [TType (Module. Canonical (Name " elm" " core" ) " Set" ) " Set" [TVar " comparable" ]])))))))
189- [ decoderForType ifaces cname ptype ]))
189+ [ decoderForType mode ifaces cname ptype ]))
190190
191191 TType (Module. Canonical (Name " lamdera" " containers" ) " SeqSet" ) " SeqSet" [ptype] ->
192192 (a (Call
@@ -205,7 +205,7 @@ decoderForType ifaces cname tipe =
205205 (Module. Canonical (Name " elm" " bytes" ) " Bytes.Decode" )
206206 " Decoder"
207207 [TType mLamdera_SeqSet " SeqSet" [TVar " k" ]])))))))
208- [ decoderForType ifaces cname ptype ]))
208+ [ decoderForType mode ifaces cname ptype ]))
209209
210210 TType (Module. Canonical (Name " elm" " core" ) " Array" ) " Array" [ptype] ->
211211 (a (Call
@@ -224,7 +224,7 @@ decoderForType ifaces cname tipe =
224224 (Module. Canonical (Name " elm" " bytes" ) " Bytes.Decode" )
225225 " Decoder"
226226 [TType (Module. Canonical (Name " elm" " core" ) " Array" ) " Array" [TVar " a" ]])))))))
227- [ decoderForType ifaces cname ptype ]))
227+ [ decoderForType mode ifaces cname ptype ]))
228228
229229 TType (Module. Canonical (Name " elm" " core" ) " Result" ) " Result" [err, a_] ->
230230 (a (Call
@@ -259,8 +259,8 @@ decoderForType ifaces cname tipe =
259259 " Result"
260260 [TVar " err" , TVar " val" ]
261261 ]))))))))
262- [ decoderForType ifaces cname err
263- , decoderForType ifaces cname a_
262+ [ decoderForType mode ifaces cname err
263+ , decoderForType mode ifaces cname a_
264264 ]))
265265
266266 TType (Module. Canonical (Name " elm" " core" ) " Dict" ) " Dict" [key, val] ->
@@ -298,8 +298,8 @@ decoderForType ifaces cname tipe =
298298 " Dict"
299299 [TVar " comparable" , TVar " value" ]
300300 ]))))))))
301- [ decoderForType ifaces cname key
302- , decoderForType ifaces cname val
301+ [ decoderForType mode ifaces cname key
302+ , decoderForType mode ifaces cname val
303303 ]))
304304
305305 TType (Module. Canonical (Name " lamdera" " containers" ) " SeqDict" ) " SeqDict" [key, val] ->
@@ -337,8 +337,8 @@ decoderForType ifaces cname tipe =
337337 " SeqDict"
338338 [TVar " k" , TVar " value" ]
339339 ]))))))))
340- [ decoderForType ifaces cname key
341- , decoderForType ifaces cname val
340+ [ decoderForType mode ifaces cname key
341+ , decoderForType mode ifaces cname val
342342 ]))
343343
344344 TType (Module. Canonical (Name " elm" " bytes" ) " Bytes" ) " Bytes" _ ->
@@ -355,7 +355,7 @@ decoderForType ifaces cname tipe =
355355
356356 TType moduleName typeName params ->
357357 let
358- generatedName = Data.Name. fromChars $ " w3_decode_ " ++ Data.Name. toChars typeName
358+ generatedName = Data.Name. fromChars $ decodePrefix mode ++ Data.Name. toChars typeName
359359
360360 decoder =
361361 if cname == moduleName
@@ -368,7 +368,7 @@ decoderForType ifaces cname tipe =
368368 else
369369 case params of
370370 [] -> decoder
371- _ -> call decoder $ fmap (decoderForType ifaces cname) params
371+ _ -> call decoder $ fmap (decoderForType mode ifaces cname) params
372372
373373 TRecord fieldMap maybeExtensible ->
374374 -- | TRecord (Map.Map Name FieldType) (Maybe Name)
@@ -379,11 +379,11 @@ decoderForType ifaces cname tipe =
379379 Nothing ->
380380 let fields = fieldMap & fieldsToList & List. sortOn (\ (name, field) -> name)
381381 in
382- decodeRecord ifaces cname fields
382+ decodeRecord mode ifaces cname fields
383383
384384 TAlias moduleName typeName tvars_ aType ->
385385 let
386- generatedName = Data.Name. fromChars $ " w3_decode_ " ++ Data.Name. toChars typeName
386+ generatedName = Data.Name. fromChars $ decodePrefix mode ++ Data.Name. toChars typeName
387387 innerType = case aType of { Holey t -> t; Filled t -> t }
388388
389389 decoder =
@@ -402,7 +402,7 @@ decoderForType ifaces cname tipe =
402402 TVar name ->
403403 lvar $ Data.Name. fromChars $ " w3_x_c_" ++ Data.Name. toChars name
404404 _ ->
405- decoderForType ifaces cname tvarType
405+ decoderForType mode ifaces cname tvarType
406406 ) tvars_
407407 in
408408 if isUnsupportedKernelType tipe
@@ -417,23 +417,23 @@ decoderForType ifaces cname tipe =
417417 case resolvedRecordFieldMapM fieldMap extensibleName tvars_ of
418418 Just resolved ->
419419 let extendedRecord = TRecord resolved Nothing & resolveTvar tvars_
420- in decoderForType ifaces cname extendedRecord
420+ in decoderForType mode ifaces cname extendedRecord
421421 Nothing -> normalDecoder
422422 _ ->
423423 -- Resolve extensible records through TAlias chains,
424424 -- e.g. Color = ColorValue { red, green, blue, alpha }
425425 case resolveTvar tvars_ tipe of
426426 TAlias _ _ _ (Filled (TRecord fieldMap Nothing )) ->
427427 let fields = fieldMap & fieldsToList & List. sortOn (\ (name, field) -> name)
428- in decodeRecord ifaces cname fields
428+ in decodeRecord mode ifaces cname fields
429429 _ -> normalDecoder
430430 Filled tipe ->
431431 case tipe of
432432 TRecord fieldMap extensibleName ->
433433 case resolvedRecordFieldMapM fieldMap extensibleName tvars_ of
434434 Just resolved ->
435435 let extendedRecord = TRecord resolved Nothing & resolveTvar tvars_
436- in decoderForType ifaces cname extendedRecord
436+ in decoderForType mode ifaces cname extendedRecord
437437 Nothing -> normalDecoder
438438 otherTypes -> normalDecoder
439439
@@ -444,8 +444,8 @@ decoderForType ifaces cname tipe =
444444 failDecode " lambda"
445445
446446
447- decodeRecord :: Map. Map Module. Raw I. Interface -> Module. Canonical -> [(Data.Name. Name , Type )] -> Expr
448- decodeRecord ifaces cname fields =
447+ decodeRecord :: DecodeMode -> Map. Map Module. Raw I. Interface -> Module. Canonical -> [(Data.Name. Name , Type )] -> Expr
448+ decodeRecord mode ifaces cname fields =
449449 let
450450 pvars :: [Pattern ]
451451 pvars =
@@ -463,7 +463,7 @@ decodeRecord ifaces cname fields =
463463 ++ fmap (\ (name, field) ->
464464 andMapDecode1 (
465465 -- debugDecoder (Utf8.fromChars $ "." <> Data.Name.toChars name) $
466- decoderForType ifaces cname field
466+ decoderForType mode ifaces cname field
467467 )
468468 ) fields
469469 & foldlPairs (|>)
0 commit comments