redef class ToolContext
# --mixin
- var opt_mixins = new OptionArray("Additionals module to min-in", "-m", "--mixin")
+ var opt_mixins = new OptionArray("Additional module to mix-in", "-m", "--mixin")
# --define
var opt_defines = new OptionArray("Define a specific property", "-D", "--define")
var location = mainmodule.location
var model = mainmodule.model
+ # Create a fictive module if needed
if mainmodule == mmodules.first then
mainmodule = new MModule(model, null, mainmodule.name + "-d", location)
mainmodule.set_imported_mmodules(mmodules)
mainmodule.is_fictive = true
+ mainmodule.first_real_mmodule = mmodules.first
end
- var recv = mainmodule.object_type
+ var recv = mainmodule.sys_type
+ assert recv != null
var mclassdef = new MClassDef(mainmodule, recv, location)
mclassdef.add_in_hierarchy
if spl.length > 1 then val = spl[1]
var prop = mainmodule.try_get_primitive_method(name, recv.mclass)
if prop == null then
- error(null, "Error: --define: no top-level function `{name}`")
+ error(null, "Error: --define: no top-level function `{name}`.")
continue
end
var ret = prop.intro.msignature.return_mtype
var v
if ret == null then
- error(null, "Error: --define: Method `{prop}` is not a function")
+ error(null, "Error: --define: method `{prop}` is not a function.")
continue
else if ret.to_s == "Bool" then
if val == null or val == "true" then
else if val == "false" then
v = false
else
- error(null, "Error: --define: Method `{prop}` need a Bool.")
+ error(null, "Error: --define: method `{prop}` needs a Bool.")
continue
end
else if ret.to_s == "Int" then
if val != null and val.is_numeric then
v = val.to_i
else
- error(null, "Error: --define: Method `{prop}` need a Int.")
+ error(null, "Error: --define: method `{prop}` needs a Int.")
continue
end
else if ret.to_s == "String" then
if val != null then
v = val
else
- error(null, "Error: --define: Method `{prop}` need a String.")
+ error(null, "Error: --define: method `{prop}` needs a String.")
continue
end
else
- error(null, "Error: --define: Method `{prop}` return an unmanaged type {ret}.")
+ error(null, "Error: --define: method `{prop}` returns an unsupported type `{ret}`.")
continue
end
var pd = new MMethodDef(mclassdef, prop, location)