tools: handle end of file errors
[nit.git] / src / mmloader.nit
index c20657a..b25db16 100644 (file)
@@ -76,8 +76,15 @@ class Message
                        else
                                cend = location.column_end
                        end
-                       var lmid = string.substring(line_start + location.column_start - 1, cend - location.column_start + 1)
-                       var lend = string.substring(line_start + cend, line_end - line_start - cend + 1)
+                       var lmid
+                       var lend
+                       if line_start + cend <= string.length then
+                               lmid = string.substring(line_start + location.column_start - 1, cend - location.column_start + 1)
+                               lend = string.substring(line_start + cend, line_end - line_start - cend + 1)
+                       else
+                               lmid = ""
+                               lend = ""
+                       end
                        var indent = new Buffer
                        for j in [line_start..line_start+location.column_start-1[ do
                                if string[j] == '\t' then
@@ -252,7 +259,7 @@ class ToolContext
        private fun try_to_load(module_name: Symbol, dir: MMDirectory): nullable MMModule
        do
                # Look in the module directory
-               for m in dir.modules do
+               for m in dir.modules.values do
                        if m.name == module_name then return m
                end
 
@@ -422,18 +429,3 @@ class ModuleLoader
        # Process a parsed module
        protected fun process_metamodel(context: ToolContext, mod: MODULE) is abstract
 end
-
-redef class MMModule
-       # Recurcivelty process an import modules
-       fun import_supers_modules(names: Collection[Symbol])
-       do
-               var c = context
-               assert c isa ToolContext
-               var supers = new Array[MMModule]
-               for n in names do
-                       var m = c.get_module(n, self)
-                       supers.add(m)
-               end
-               c.add_module(self,supers)
-       end
-end