neo_doxygen: Read the `prot` attribute of the `innerclass` elements.
authorJean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Mon, 1 Dec 2014 19:30:30 +0000 (14:30 -0500)
committerJean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Tue, 2 Dec 2014 15:37:05 +0000 (10:37 -0500)
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>

contrib/neo_doxygen/src/doxml/compounddef.nit
contrib/neo_doxygen/src/model/graph.nit
contrib/neo_doxygen/src/model/module_compound.nit
contrib/neo_doxygen/src/tests/neo_doxygen_file_compound.nit

index 64a301d..5f00313 100644 (file)
@@ -94,16 +94,17 @@ class CompoundDefListener
        redef fun entity: Entity do return compound
 
        redef fun start_dox_element(local_name: String, atts: Attributes) do
-               if ["compoundname", "innerclass", "innernamespace"].has(local_name) then
+               if "compoundname" == local_name then
                        text.listen_until(dox_uri, local_name)
-                       if ["innerclass", "innernamespace"].has(local_name) then
-                               refid = get_required(atts, "refid")
-                       end
-               else if "basecompoundref" == local_name then
-                       refid = get_optional(atts, "refid", "")
+               else if ["innerclass", "innernamespace", "basecompoundref"].has(local_name) then
                        prot = get_optional(atts, "prot", "")
-                       virt = get_optional(atts, "virt", "")
                        text.listen_until(dox_uri, local_name)
+                       if "basecompoundref" == local_name then
+                               refid = get_optional(atts, "refid", "")
+                               virt = get_optional(atts, "virt", "")
+                       else
+                               refid = get_required(atts, "refid")
+                       end
                else if "memberdef" == local_name then
                        read_member(atts)
                else if local_name == "sectiondef" then
@@ -122,7 +123,7 @@ class CompoundDefListener
                if local_name == "compoundname" then
                        compound.full_name = text.to_s
                else if local_name == "innerclass" then
-                       compound.declare_class(refid, text.to_s)
+                       compound.declare_class(refid, text.to_s, prot)
                else if local_name == "innernamespace" then
                        compound.declare_namespace(refid, text.to_s)
                else if "memberdef" == local_name then
index aad1644..0d8f511 100644 (file)
@@ -273,9 +273,10 @@ abstract class Compound
        #
        # * `id`: `model_id` of the inner class.
        # * `full_name`: qualified name of the inner class. Ignored in practice.
+       # * `prot`: visibility (proctection).
        #
        # TODO: Handle cases where only the `full_name` is available.
-       fun declare_class(id: String, full_name: String) do end
+       fun declare_class(id: String, full_name: String, prot: String) do end
 
        # Declare a base compound (usually, a base class).
        #
@@ -319,7 +320,7 @@ class Namespace
                inner_namespaces.add new NamespaceRef(id, full_name)
        end
 
-       redef fun declare_class(id: String, full_name: String) do
+       redef fun declare_class(id: String, full_name: String, prot: String) do
                graph.class_to_ns[id] = self
        end
 
index 069b50b..404bcac 100644 (file)
@@ -80,7 +80,7 @@ class FileCompound
                inner_namespaces.add m
        end
 
-       redef fun declare_class(id: String, full_name: String) do
+       redef fun declare_class(id, full_name, prot) do
                assert not id.is_empty else
                        sys.stderr.write "Inner class declarations without ID are not yet supported.\n"
                end
index 9a5c59c..c985035 100644 (file)
@@ -28,8 +28,8 @@ var buffer = new RopeBuffer
 
 file.full_name = "Bar.java"
 file.model_id = "_Bar_8java"
-file.declare_class("classa_b_bar", "a::b::Bar")
-file.declare_class("classbaz", "Baz")
+file.declare_class("classa_b_bar", "a::b::Bar", "package")
+file.declare_class("classbaz", "Baz", "")
 file.declare_namespace("", "a::b")
 file.put_in_graph
 
@@ -52,7 +52,7 @@ a_ns.declare_namespace("", "a::b")
 a_ns.put_in_graph
 
 b_ns.full_name = "a::b"
-b_ns.declare_class("classa_b_bar", "")
+b_ns.declare_class("classa_b_bar", "", "")
 b_ns.put_in_graph
 
 c_ns.model_id = "namespacec"