From 806aa12402ff94889b3f7101986c86873684762c Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Wed, 22 Aug 2012 17:57:33 +0200 Subject: [PATCH] Enhance convert-constants list generation While looking at the hypervisor types in Constants.hs, I saw that the 'hyperTypes' list is using strings instead of names. This is due to the fact that we require the entire elements in the list to be identified (homogeneous lists), but the string "xen-pvm" is declared by both 'defaultEnabledHypervisor' and 'htXenPvm'. We can improve convert-constants by adding a list of names that we know (statically) don't declare, but instead reuse values. Unless we have an ADT parser, this is the best we can do, I think. Signed-off-by: Iustin Pop <iustin@google.com> Reviewed-by: Agata Murawska <agatamurawska@google.com> --- autotools/convert-constants | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/autotools/convert-constants b/autotools/convert-constants index d3d8a5fbb..043d32ce8 100755 --- a/autotools/convert-constants +++ b/autotools/convert-constants @@ -39,6 +39,12 @@ PRIVATE_RE = re.compile("^__.+__$") #: The type of regex objects RE_TYPE = type(CONSTANT_RE) +#: Keys which do not declare a value (manually maintained). By adding +# values here, we can make more lists use the actual names; otherwise +# we'll have (e.g.) both DEFAULT_ENABLED_HYPERVISOR and HT_XEN_PVM +# declare the same value, and thus the list of valid hypervisors will +# have strings instead of easily looked-up names. +IGNORED_DECL_NAMES = ["DEFAULT_ENABLED_HYPERVISOR"] def NameRules(name): """Converts the upper-cased Python name to Haskell camelCase. @@ -97,7 +103,8 @@ def IdentifyOrigin(all_items, value): @param value: the value for which we try to find an origin """ - found = [name for (name, v) in all_items.items() if v is value] + found = [name for (name, v) in all_items.items() + if v is value and name not in IGNORED_DECL_NAMES] if len(found) == 1: return found[0] else: -- GitLab