@@ -259,6 +259,10 @@ bcc i (CONSTCASE r code def)
259259 where
260260 intConsts ((I _, _ ) : _) = True
261261 intConsts ((Ch _, _ ) : _) = True
262+ intConsts ((B8 _, _ ) : _) = True
263+ intConsts ((B16 _, _ ) : _) = True
264+ intConsts ((B32 _, _ ) : _) = True
265+ intConsts ((B64 _, _ ) : _) = True
262266 intConsts _ = False
263267
264268 bigintConsts ((BI _, _ ) : _) = True
@@ -279,7 +283,18 @@ bcc i (CONSTCASE r code def)
279283 iCase v (Ch b, bc) =
280284 indent i ++ "if (GETINT(" ++ v ++ ") == " ++ show (fromEnum b) ++ ") {\n"
281285 ++ concatMap (bcc (i+1)) bc ++ indent i ++ "} else\n"
282−
286+ iCase v (B8 w, bc) =
287+ indent i ++ "if (GETBITS8(" ++ v ++ ") == " ++ show (fromEnum w) ++ ") {\n"
288+ ++ concatMap (bcc (i+1)) bc ++ indent i ++ "} else\n"
289+ iCase v (B16 w, bc) =
290+ indent i ++ "if (GETBITS16(" ++ v ++ ") == " ++ show (fromEnum w) ++ ") {\n"
291+ ++ concatMap (bcc (i+1)) bc ++ indent i ++ "} else\n"
292+ iCase v (B32 w, bc) =
293+ indent i ++ "if (GETBITS32(" ++ v ++ ") == " ++ show (fromEnum w) ++ ") {\n"
294+ ++ concatMap (bcc (i+1)) bc ++ indent i ++ "} else\n"
295+ iCase v (B64 w, bc) =
296+ indent i ++ "if (GETBITS64(" ++ v ++ ") == " ++ show (fromEnum w) ++ ") {\n"
297+ ++ concatMap (bcc (i+1)) bc ++ indent i ++ "} else\n"
283298 showCase i (t, bc) = indent i ++ "case " ++ show t ++ ":\n"
284299 ++ concatMap (bcc (i+1)) bc ++
285300 indent (i + 1) ++ "break;\n"