Skip to content

Commit b01dfdf

Browse files
committed
Exclude elm/* and lamdera/* packages from custom encoder error
Only show the custom encoder/decoder error for user packages, not core elm/* or lamdera/* packages like Bytes which have special handling.
1 parent 9dedc48 commit b01dfdf

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

extra/Lamdera/Wire3/Encoder.hs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,9 +233,13 @@ encoderForType depth ifaces cname tipe =
233233
let
234234
typeNameStr = Data.Name.toChars typeName
235235
customEncoderName = Data.Name.fromChars $ "encode" ++ typeNameStr
236+
237+
-- Only show error for user packages, not elm/* core packages
238+
isUserPackage = case moduleName of
239+
Module.Canonical (Name author _) _ -> author /= "elm" && author /= "lamdera"
236240
in
237-
case foreignTypeSig moduleName customEncoderName ifaces of
238-
Just _ ->
241+
case (foreignTypeSig moduleName customEncoderName ifaces, isUserPackage) of
242+
(Just _, True) ->
239243
error $ unlines
240244
[ ""
241245
, "-- WIRE3 ENCODER NOT SUPPORTED -----------------------------------------"
@@ -256,7 +260,7 @@ encoderForType depth ifaces cname tipe =
256260
, "3. Add compiler support (contact Lamdera team)"
257261
, ""
258262
]
259-
Nothing -> (a (VarTopLevel moduleName generatedName))
263+
_ -> (a (VarTopLevel moduleName generatedName))
260264
else (a (VarForeign moduleName generatedName (getForeignSig tipe moduleName generatedName ifaces)))
261265

262266
in

extra/Lamdera/Wire3/Helpers.hs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,13 @@ getForeignSig tipe moduleName generatedName ifaces =
7070
genNameStr = Data.Name.toChars generatedName
7171
typeNameStr = drop 10 genNameStr -- Remove "w3_encode_" prefix (10 chars)
7272
customEncoderName = Data.Name.fromChars $ "encode" ++ typeNameStr
73+
74+
-- Only show error for user packages, not elm/* core packages
75+
isUserPackage = case moduleName of
76+
Module.Canonical (Name author _) _ -> author /= "elm" && author /= "lamdera"
7377
in
74-
case foreignTypeSig moduleName customEncoderName ifaces of
75-
Just _ ->
78+
case (foreignTypeSig moduleName customEncoderName ifaces, isUserPackage) of
79+
(Just _, True) ->
7680
error $ unlines
7781
[ ""
7882
, "-- WIRE3 ENCODER NOT SUPPORTED -----------------------------------------"
@@ -93,7 +97,7 @@ getForeignSig tipe moduleName generatedName ifaces =
9397
, "3. Add compiler support (contact Lamdera team)"
9498
, ""
9599
]
96-
Nothing ->
100+
_ ->
97101
(Forall
98102
(Map.fromList [("a", ())])
99103
(TLambda (TVar "a") tLamdera_Wire_Encoder))
@@ -104,9 +108,13 @@ getForeignSig tipe moduleName generatedName ifaces =
104108
genNameStr = Data.Name.toChars generatedName
105109
typeNameStr = drop 10 genNameStr -- Remove "w3_decode_" prefix (10 chars)
106110
customDecoderName = Data.Name.fromChars $ "decode" ++ typeNameStr
111+
112+
-- Only show error for user packages, not elm/* core packages
113+
isUserPackage = case moduleName of
114+
Module.Canonical (Name author _) _ -> author /= "elm" && author /= "lamdera"
107115
in
108-
case foreignTypeSig moduleName customDecoderName ifaces of
109-
Just _ ->
116+
case (foreignTypeSig moduleName customDecoderName ifaces, isUserPackage) of
117+
(Just _, True) ->
110118
error $ unlines
111119
[ ""
112120
, "-- WIRE3 DECODER NOT SUPPORTED -----------------------------------------"
@@ -127,7 +135,7 @@ getForeignSig tipe moduleName generatedName ifaces =
127135
, "3. Add compiler support (contact Lamdera team)"
128136
, ""
129137
]
130-
Nothing ->
138+
_ ->
131139
(Forall
132140
(Map.fromList [("a", ())])
133141
(TAlias

0 commit comments

Comments
 (0)