From 4bc3eb8d2c2997b27172fe99ad7ba9722ec1016e Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Fri, 8 Mar 2019 17:17:30 -0500 Subject: [PATCH] more gracefully unknown type handling in Struct conversion --- src/Convert/Struct.hs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Convert/Struct.hs b/src/Convert/Struct.hs index f760eb2..3a69ff2 100644 --- a/src/Convert/Struct.hs +++ b/src/Convert/Struct.hs @@ -128,12 +128,16 @@ convertAsgn structs types (lhs, expr) = Nothing -> (Implicit [], LHSIdent x) Just t -> (t, LHSIdent x) convertLHS (LHSBit l e) = - (tf $ tail rs, LHSBit l' e) + if null rs + then (Implicit [], LHSBit l' e) + else (tf $ tail rs, LHSBit l' e) where (t, l') = convertLHS l (tf, rs) = typeRanges t convertLHS (LHSRange l r ) = - (tf rs', LHSRange l' r) + if null rs + then (Implicit [], LHSRange l' r) + else (tf rs', LHSRange l' r) where (t, l') = convertLHS l (tf, rs) = typeRanges t @@ -150,6 +154,7 @@ convertAsgn structs types (lhs, expr) = hi' = BinOp Add base $ BinOp Sub hi lo lo' = base tr = (simplify hi', simplify lo') + Implicit _ -> (Implicit [], LHSDot l' x) _ -> error $ "convertLHS encountered dot for bad type: " ++ show (t, l, x) where (t, l') = convertLHS l