From 6f58cba6d2aff040c6f56f7d98ed8934297b1c83 Mon Sep 17 00:00:00 2001 From: Alexandre Terrasa Date: Tue, 20 Nov 2012 19:27:28 -0500 Subject: [PATCH 1/1] nitg-sep: coloring handles empty modules Signed-off-by: Alexandre Terrasa --- src/coloring.nit | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/coloring.nit b/src/coloring.nit index 962c773..cbf1739 100644 --- a/src/coloring.nit +++ b/src/coloring.nit @@ -307,9 +307,11 @@ class ClassColoring redef fun super_elements(element) do if not self.super_elements_cache.has_key(element) then var supers = new HashSet[T] - for sup in self.mmodule.flatten_mclass_hierarchy[element].greaters do - if element == sup then continue - supers.add(sup) + if self.mmodule.flatten_mclass_hierarchy.has(element) then + for sup in self.mmodule.flatten_mclass_hierarchy[element].greaters do + if element == sup then continue + supers.add(sup) + end end self.super_elements_cache[element] = supers end @@ -319,9 +321,11 @@ class ClassColoring private fun parent_elements(element: T): Set[T] do if not self.parent_elements_cache.has_key(element) then var parents = new HashSet[T] - for parent in self.mmodule.flatten_mclass_hierarchy[element].direct_greaters do - if element == parent then continue - parents.add(parent) + if self.mmodule.flatten_mclass_hierarchy.has(element) then + for parent in self.mmodule.flatten_mclass_hierarchy[element].direct_greaters do + if element == parent then continue + parents.add(parent) + end end self.parent_elements_cache[element] = parents end @@ -332,8 +336,10 @@ class ClassColoring redef fun sub_elements(element) do if not self.sub_elements_cache.has_key(element) then var subs = new HashSet[T] - for sub in self.mmodule.flatten_mclass_hierarchy[element].smallers do - subs.add(sub) + if self.mmodule.flatten_mclass_hierarchy.has(element) then + for sub in self.mmodule.flatten_mclass_hierarchy[element].smallers do + subs.add(sub) + end end self.sub_elements_cache[element] = subs end @@ -342,6 +348,7 @@ class ClassColoring # Return all direct super elements of an element redef fun is_element_mi(element) do + if not self.mmodule.flatten_mclass_hierarchy.has(element) then return false return self.mmodule.flatten_mclass_hierarchy[element].direct_greaters.length > 1 end end -- 1.7.9.5