uml: remove useless repeated type in redef
[nit.git] / src / uml / uml_class.nit
index 7581f2a..92317a4 100644 (file)
 module uml_class
 
 import uml_base
+import model::model_collect
 
 redef class UMLModel
        # Generates a UML class diagram from a `Model`
-       fun generate_class_uml: Streamable do
+       fun generate_class_uml: Writable do
                var tpl = new Template
                tpl.add "digraph G \{\n"
                tpl.add """     fontname = "Bitstream Vera Sans"
@@ -43,7 +44,7 @@ end
 redef class Model
 
        # Generates a UML Class diagram from the entities of a `Model`
-       fun tpl_class(ctx: ToolContext, main: MModule): Streamable do
+       fun tpl_class(ctx: ToolContext, main: MModule): Writable do
                var t = new Template
                for i in mclasses do
                        if not ctx.private_gen and i.visibility != public_visibility then continue
@@ -56,13 +57,13 @@ redef class Model
 end
 
 redef class MEntity
-       # Generates a dot-compatible `Streamable` UML Class diagram from `self`
-       fun tpl_class(ctx: ToolContext, main: MModule): Streamable is abstract
+       # Generates a dot-compatible `Writable` UML Class diagram from `self`
+       fun tpl_class(ctx: ToolContext, main: MModule): Writable is abstract
 end
 
 redef class MClass
 
-       redef fun tpl_class(ctx, main): Streamable do
+       redef fun tpl_class(ctx, main) do
                var t = new Template
                t.add "{name} [\n label = \"\{"
                if kind == abstract_kind then
@@ -74,20 +75,19 @@ redef class MClass
                end
                if arity > 0 then
                        t.add "["
-                       var formal = intro.parameter_names
-                       t.add formal.first
-                       for i in [1 .. formal.length[ do
+                       t.add mparameters.first.name
+                       for i in [1 .. mparameters.length[ do
                                t.add ", "
-                               t.add formal[i]
+                               t.add mparameters[i].name
                        end
                        t.add "]"
                end
                t.add "|"
                var props: Collection[MProperty]
                if ctx.private_gen then
-                       props = intro_mproperties(none_visibility)
+                       props = collect_intro_mproperties(none_visibility)
                else
-                       props = intro_mproperties(public_visibility)
+                       props = collect_intro_mproperties(public_visibility)
                end
                for i in props do
                        if i isa MAttribute then
@@ -96,8 +96,13 @@ redef class MClass
                        end
                end
                t.add "|"
-               for i in intro_methods do
-                       if not ctx.private_gen and i.visibility != public_visibility then continue
+               var meths
+               if ctx.private_gen then
+                       meths = collect_intro_mmethods(none_visibility)
+               else
+                       meths = collect_intro_mmethods(public_visibility)
+               end
+               for i in meths do
                        t.add i.tpl_class(ctx, main)
                        t.add "\\l"
                end
@@ -175,7 +180,7 @@ redef class MVisibility
        #
        #    assert public_visibility.tpl_class == "+"
        #    assert private_visibility.tpl_class == "-"
-       fun tpl_class: Streamable do
+       fun tpl_class: Writable do
                if self == private_visibility then
                        return "-"
                else if self == protected_visibility then
@@ -211,8 +216,7 @@ end
 
 redef class MParameterType
        redef fun tpl_class(c, m) do
-               var n = mclass.intro.parameter_names
-               return n[rank]
+               return name
        end
 end