X-Git-Url: http://nitlanguage.org diff --git a/src/nitg.nit b/src/nitg.nit index 24b7a3f..47f6373 100644 --- a/src/nitg.nit +++ b/src/nitg.nit @@ -18,7 +18,8 @@ module nitg import modelbuilder -import exprbuilder +import frontend +import transform import rapid_type_analysis import global_compiler import separate_erasure_compiler @@ -26,6 +27,14 @@ import separate_compiler # Create a tool context to handle options and paths var toolcontext = new ToolContext + +# Create a new option for --global +var opt_global = new OptionBool("Use global compilation", "--global") +toolcontext.option_context.add_option(opt_global) + +var opt_mixins = new OptionArray("Additionals module to min-in", "-m") +toolcontext.option_context.add_option(opt_mixins) + # We do not add other options, so process them now! toolcontext.process_options @@ -39,24 +48,35 @@ if arguments.is_empty then toolcontext.option_context.usage return end +if arguments.length > 1 then + print "Too much arguments: {arguments.join(" ")}" + toolcontext.option_context.usage + return +end var progname = arguments.first # Here we load an process all modules passed on the command line -var mmodules = modelbuilder.parse_and_build([progname]) +var mmodules = modelbuilder.parse([progname]) +mmodules.add_all modelbuilder.parse(opt_mixins.value) + if mmodules.is_empty then return -modelbuilder.full_propdef_semantic_analysis +modelbuilder.run_phases -if toolcontext.opt_only_metamodel.value then exit(0) +var mainmodule +if mmodules.length == 1 then + mainmodule = mmodules.first +else + mainmodule = new MModule(model, null, mmodules.first.name, mmodules.first.location) + mainmodule.set_imported_mmodules(mmodules) +end -# Here we launch the interpreter on the main module -assert mmodules.length == 1 -var mainmodule = mmodules.first -var analysis = modelbuilder.do_rapid_type_analysis(mainmodule) if toolcontext.opt_erasure.value then - modelbuilder.run_separate_erasure_compiler(mainmodule, analysis) -else if toolcontext.opt_separate.value then - modelbuilder.run_separate_compiler(mainmodule, analysis) -else + modelbuilder.run_separate_erasure_compiler(mainmodule, null) +else if opt_global.value then + var analysis = modelbuilder.do_rapid_type_analysis(mainmodule) modelbuilder.run_global_compiler(mainmodule, analysis) +else + var analysis = modelbuilder.do_rapid_type_analysis(mainmodule) + modelbuilder.run_separate_compiler(mainmodule, analysis) end