more gracefully unknown type handling in Struct conversion

This commit is contained in:
Zachary Snow 2019-03-08 17:17:30 -05:00
parent bddb8ceaff
commit 4bc3eb8d2c
1 changed files with 7 additions and 2 deletions

View File

@ -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