Give a proper error when a vector of an empty type is used.
authorMatthijs Kooijman <matthijs@stdin.nl>
Wed, 3 Mar 2010 10:08:22 +0000 (11:08 +0100)
committerMatthijs Kooijman <matthijs@stdin.nl>
Wed, 3 Mar 2010 10:08:22 +0000 (11:08 +0100)
cλash/CLasH/VHDL/Generate.hs

index 897c22a53623b4cd69749c87ad78574f468b12be..07b683f61bf959e113d6a492eb8d5e342bb2420a 100644 (file)
@@ -1104,7 +1104,10 @@ vectorFunId :: Type.Type -> String -> TypeSession AST.VHDLId
 vectorFunId el_ty fname = do
   let error_msg = "\nGenerate.vectorFunId: Can not construct vector function for element: " ++ pprString el_ty
   -- TODO: Handle the Nothing case?
-  Just elemTM <- vhdlTy error_msg el_ty
+  elemTM_maybe <- vhdlTy error_msg el_ty
+  let elemTM = Maybe.fromMaybe
+                 (error $ "\nGenerate.vectorFunId: Cannot generate vector function \"" ++ fname ++ "\" for the empty type \"" ++ (pprString el_ty) ++ "\"")
+                 elemTM_maybe
   -- TODO: This should not be duplicated from mk_vector_ty. Probably but it in
   -- the VHDLState or something.
   let vectorTM = mkVHDLExtId $ "vector_" ++ (AST.fromVHDLId elemTM)