Commit 83f2dbde by Zachary Snow

clean up interface check decl type

parent 11a5d047
...@@ -71,25 +71,23 @@ convertDescription parts (Part attrs extern Module lifetime name ports items) = ...@@ -71,25 +71,23 @@ convertDescription parts (Part attrs extern Module lifetime name ports items) =
traverseDeclM :: Decl -> Scoper [ModportDecl] Decl traverseDeclM :: Decl -> Scoper [ModportDecl] Decl
traverseDeclM decl = do traverseDeclM decl = do
case decl of case decl of
Variable _ t x _ _ -> checkDeclType t x $ insertElem x DeclVal Variable _ t x _ _ -> checkDeclType t x >> insertElem x DeclVal
Net _ _ _ t x _ _ -> checkDeclType t x $ insertElem x DeclVal Net _ _ _ t x _ _ -> checkDeclType t x >> insertElem x DeclVal
Param _ t x _ -> checkDeclType t x $ insertElem x DeclVal Param _ t x _ -> checkDeclType t x >> insertElem x DeclVal
ParamType _ x _ -> insertElem x DeclVal ParamType _ x _ -> insertElem x DeclVal
CommentDecl{} -> return () CommentDecl{} -> return ()
return decl return decl
-- check for module or interface names used as type names -- check for module or interface names used as type names
checkDeclType :: Type -> Identifier -> Scoper a b -> Scoper a b checkDeclType :: Type -> Identifier -> Scoper a ()
checkDeclType (Alias typeName _) declName continue checkDeclType (Alias typeName _) declName
| isNothing (readMaybe declName :: Maybe Int) = do | isNothing (readMaybe declName :: Maybe Int)
maybeType <- lookupElemM typeName , Just part <- Map.lookup typeName parts = do
case (maybePart, maybeType) of maybeType <- lookupElemM typeName
(Just part, Nothing{}) -> scopedErrorM $ "declaration " ++ when (isNothing maybeType) $ scopedErrorM $
declName ++ " uses " ++ show (pKind part) ++ " name " ++ "declaration " ++ declName ++ " uses " ++ show (pKind part)
typeName ++ " where a type name is expected" ++ " name " ++ typeName ++ " where a type name is expected"
_ -> continue checkDeclType _ _ = return ()
where maybePart = Map.lookup typeName parts
checkDeclType _ _ other = other
lookupIntfElem :: Scopes [ModportDecl] -> Expr -> LookupResult [ModportDecl] lookupIntfElem :: Scopes [ModportDecl] -> Expr -> LookupResult [ModportDecl]
lookupIntfElem modports expr = lookupIntfElem modports expr =
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment