syntax: fix code using superstrings with nullables
[nit.git] / src / nitdoc.nit
index ba0e164..4582f8e 100644 (file)
@@ -187,6 +187,7 @@ special AbstractCompiler
                add("<a href=\"overview.html\"><b>Overview</b></a>&nbsp; <a href=\"index-1.html\"><b>Index</b></a>&nbsp; <a href=\"index.html\" target=\"_top\"><b>With Frames</b></a>\n")
                add("</td></tr></table>")
                add("Visibility: ")
+               var module = module
                if (not inside_mode and not intrude_mode) or module == null then
                        add("<b>Public</b>&nbsp; ")
                else
@@ -342,13 +343,17 @@ special MMEntity
        redef fun prototype_head(dctx) do return "module "
 
        var _known_owner_of_cache: Map[MMModule, MMModule] = new HashMap[MMModule, MMModule]
+
+       # Return the owner of `module` from the point of view of `self`
        fun known_owner_of(module: MMModule): MMModule
-       do 
+       do
                if _known_owner_of_cache.has_key(module) then return _known_owner_of_cache[module]
                var res = module
-               if mhe < module and visibility_for(module) != 0 then 
+               # is module is publicly imported by self?
+               if mhe < module and visibility_for(module) != 0 then
                        res = known_owner_of_intern(module, self, false)
                else
+                       # Return the canonnical owner of module from the point of view of self
                        res = module.owner(self)
                end
                _known_owner_of_cache[module] = res
@@ -368,6 +373,7 @@ special MMEntity
                return res
        end
 
+       # ???
        private fun known_owner_of_intern(module: MMModule, from: MMModule, as_owner: Bool): MMModule
        do
                if module == self then return self
@@ -377,7 +383,8 @@ special MMEntity
                        if not m.mhe <= module then continue
                        candidates.add(m.known_owner_of_intern(module, from, true))
                end
-               assert not candidates.is_empty
+               # FIXME: I do not know what this does
+               if candidates.is_empty then return module.owner(from)
                var max = candidates.first
                for m in candidates do
                        if max.mhe < m then max = m
@@ -403,7 +410,7 @@ special MMEntity
        do
                var m = module
                if not need_doc(dctx) then m = global.intro.module
-               var m = dctx.known_owner_of(m)
+               m = dctx.known_owner_of(m)
                if m == dctx.module then
                        return "<a href=\"#{html_anchor}\">{self}</a>"
                else
@@ -453,7 +460,7 @@ special MMEntity
        redef fun prototype_body(dctx)
        do
                var res = new Buffer
-               res.append(signature.to_html(dctx))
+               res.append(signature.to_html(dctx, true))
                var s = self
                if s isa MMMethod then
                        if s.is_abstract then
@@ -507,10 +514,10 @@ special MMEntity
        end
 end
 redef class MMMethod
-       redef fun kind do return if global.is_init then "init" else "meth"
+       redef fun kind do return if global.is_init then "init" else "fun"
 end
 redef class MMAttribute
-       redef fun kind do return "attr"
+       redef fun kind do return "var"
 end
 redef class MMTypeProperty
        redef fun kind do return "type"
@@ -548,7 +555,7 @@ redef class MMSrcModule
                dctx.add("<h1>Module {self}</h1>\n<dl>")
                var s = ""
                var d: nullable MMDirectory = directory
-               while d == null do
+               while d != null do
                        if d.owner != null and (d.owner != self or dctx.inside_mode or dctx.intrude_mode) then
                                s = "{d.owner.html_link(dctx)}::{s}"
                        end
@@ -697,7 +704,7 @@ special MMEntity
        do
                var m = module
                if not need_doc(dctx) then m = global.module
-               var m = dctx.known_owner_of(m)
+               m = dctx.known_owner_of(m)
                if m == dctx.module then
                        return "<a href=\"#{html_anchor}\">{self}</a>"
                else
@@ -904,7 +911,6 @@ special MMEntity
                        # skip pass 1 because constructors are not inherited
                        var cmap = new HashMap[MMLocalClass, Array[MMLocalProperty]]
                        var mmap = new HashMap[MMModule, Array[MMLocalProperty]]
-                       var props = new Array[MMLocalClass]
                        for c in che.greaters do
                                if c isa MMSrcLocalClass then
                                        var km = dctx.known_owner_of(c.module)
@@ -962,7 +968,6 @@ special MMEntity
                end
 
                var mmap = new HashMap[MMModule, Array[MMLocalProperty]]
-               var props = new Array[MMLocalClass]
                for c in crhe.order do
                        if module.mhe <= c.module or dctx.owned_modules.has(c.module) or not c isa MMSrcLocalClass then continue
                        var km = dctx.known_owner_of(c.module)
@@ -1104,7 +1109,7 @@ end
 
 redef class MMSignature
        # Htlm transcription of the signature (with nested links)
-       fun to_html(dctx: DocContext): String
+       fun to_html(dctx: DocContext, with_closure: Bool): String
        do
                var res = new Buffer
                if arity > 0 then
@@ -1120,6 +1125,16 @@ redef class MMSignature
                        res.append(": ")
                        res.append(return_type.html_link(dctx))
                end
+               if with_closure then
+                       for c in closures do
+                               res.append(" ")
+                               if c.is_optional then res.append("[")
+                               if c.is_break then res.append("break ")
+                               res.append("!{c.name}")
+                               res.append(c.signature.to_html(dctx, false))
+                               if c.is_optional then res.append("]")
+                       end
+               end
                return res.to_s
        end
 end