From ea81d55cdcf42e32f02b2dc8d8998cb1c70fe19b Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Sun, 31 May 2020 21:29:37 -0400 Subject: [PATCH] fix duplicate param type modules --- src/Convert/ParamType.hs | 9 +++++++-- test/basic/paramtype_recurse.v | 12 ------------ 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/Convert/ParamType.hs b/src/Convert/ParamType.hs index 35c6b8b..c832ea0 100644 --- a/src/Convert/ParamType.hs +++ b/src/Convert/ParamType.hs @@ -91,7 +91,7 @@ convert files = else if all isNothing maybeTypeMap then [] else - filter (not . flip elem existing) $ + filter (not . alreadyExists) $ (:) (removeDefaultTypeParams part) $ if isNothing typeMap then [] @@ -99,6 +99,11 @@ convert files = where maybeTypeMap = snd $ info Map.! name typeMap = defaultInstance maybeTypeMap + existingNames = map maybeModuleName existing + alreadyExists = (flip elem existingNames) . maybeModuleName + maybeModuleName :: Description -> Maybe Identifier + maybeModuleName (Part _ _ _ _ x _ _) = Just x + maybeModuleName _ = Nothing replaceDefault _ other = [other] removeDefaultTypeParams :: Description -> Description @@ -235,7 +240,7 @@ convertModuleItemM info (orig @ (Instance m bindings x r p)) = else if any (not . isSimpleType) resolvedTypes then do let defaults = Map.map Left resolvedTypes let bindingsDefaulted = Map.toList $ Map.union bindingsMap defaults - if isDefaultName m || bindingsDefaulted /= Map.toList bindingsMap + if isDefaultName m || bindingsDefaulted == Map.toList bindingsMap then return $ Instance m bindingsNamed x r p else return $ Instance (moduleDefaultName m) bindingsDefaulted x r p else do diff --git a/test/basic/paramtype_recurse.v b/test/basic/paramtype_recurse.v index ed7bbc3..ae6e348 100644 --- a/test/basic/paramtype_recurse.v +++ b/test/basic/paramtype_recurse.v @@ -1,15 +1,3 @@ -module foo_default #( - parameter size = 0 -); - initial $display("foo %d %d", 1, size); -endmodule - -module bar_default #( - parameter size = 0 -); - initial $display("bar %d %d", 1, size); -endmodule - module foo_byte #( parameter size = 0 );