update NOTICE and LICENSE
[nit.git] / src / abstracttool.nit
index e6a5dbf..bed57f4 100644 (file)
@@ -21,10 +21,10 @@ package abstracttool
 
 import mmloader
 import syntax
-import nit_version
+private import nit_version
 
 class AbstractCompiler
-special ToolContext
+       super ToolContext
 
        init(tool_name: String)
        do
@@ -60,6 +60,7 @@ special ToolContext
 
                var rest = option_context.rest
                var to_do = new Array[MMModule]
+               info("Syntax analysis",1)
                for i in [0..rest.length[ do
                        var mod = get_module_from_filename(rest[i])
                        to_do.add(mod)
@@ -78,27 +79,26 @@ special ToolContext
        fun dump_context_info
        do
                for mod in module_hierarchy do
-                       mod.dump_module_info
+                       mod.dump_module_info(log_directory)
                end     
                var tab = new Array[MMModule]
                tab.add_all(module_hierarchy)
                var name = module_hierarchy.select_smallests(tab).join("-")
 
-               var f = new OFStream.open("{name}.full_class_hierarchy.new.dot")
+               var f = new OFStream.open("{log_directory}/{name}.full_class_hierarchy.new.dot")
                        f.write(class_hierarchy.to_dot)
                f.close
 
-               f = new OFStream.open("{name}.module_hierarchy.new.dot")
+               f = new OFStream.open("{log_directory}/{name}.module_hierarchy.new.dot")
                        f.write(module_hierarchy.to_dot)
                f.close
        end
 end
 
 redef class MMModule
-       fun dump_module_info
+       fun dump_module_info(directory: String)
        do
-               var p = filename.file_path
-               var fname = "{p}/{name}"
+               var fname = "{directory}/{name}"
                var f = new OFStream.open("{fname}.class_hierarchy.new.dot")
                f.write(class_specialization_hierarchy.to_dot)
                f.close
@@ -116,9 +116,15 @@ redef class MMLocalClass
        fun dump_properties(file: OStream)
        do
                file.write("class {self}\n")
-               for p in global_properties do
-                       var lp = self[p]
-                       file.write("\t{lp}{lp.signature_for(get_type)}\n")
+               if global.visibility_level == 3 and not self == global.intro then
+                       file.write("\tclass not visible in this module\n")
+               else if mmmodule.visibility_for(global.mmmodule) == 0 then
+                       file.write("\tclass is defined later in the hierarchy\n")
+               else
+                       for p in global_properties do
+                               var lp = self[p]
+                               file.write("\t{lp}{lp.signature_for(get_type)}\n")
+                       end
                end
                file.write("end # {self}\n")
        end