From e23dab6c302d45ec7b10f99d79dcc4d5cf43b6a4 Mon Sep 17 00:00:00 2001 From: Florian Deljarry Date: Wed, 4 Dec 2019 17:20:53 -0500 Subject: [PATCH 1/1] Model: Add get_direct_supermtype Add method to return the direct parents mtype of the mclassdef. Signed-off-by: Florian Deljarry --- src/model/model.nit | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/model/model.nit b/src/model/model.nit index 3331d6d..e22ae84 100644 --- a/src/model/model.nit +++ b/src/model/model.nit @@ -784,6 +784,38 @@ class MClassDef # All property introductions and redefinitions (not inheritance) in `self` by its associated property. var mpropdefs_by_property = new HashMap[MProperty, MPropDef] + # Return the direct parent mtype of `self` + # Exemple + # ~~~nitish + # module 1 + # + # class A + # class B + # super A + # + # module 2 + # + # redef class A + # class C + # super B + # + # mclassdef_C.get_direct_supermtype == [B] + # ~~~~ + fun get_direct_supermtype: Collection[MClassType] + do + # Get the potentiel direct parents + var parents = in_hierarchy.direct_greaters + # Stock the potentiel direct parents + var res = supertypes + for parent in parents do + # remove all super parents of the potentiel direct parents + res.remove_all(parent.supertypes) + # if the length of the potentiel direct parent equal 1 break + if res.length == 1 then break + end + return res + end + redef fun mdoc_or_fallback do return mdoc or else mclass.mdoc_or_fallback end -- 1.7.9.5