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
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
# 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