metamodel: move the extern name of a method in the metamodel
[nit.git] / src / syntax / syntax.nit
index d35ad6a..4ec5516 100644 (file)
@@ -21,6 +21,7 @@ package syntax
 import mmloader
 import mmbuilder
 import typing
+import icode_generation
 
 # Loader of nit source files
 class SrcModuleLoader
@@ -36,12 +37,11 @@ special ModuleLoader
                var node_tree = parser.parse
                if node_tree.n_base == null then
                        var err = node_tree.n_eof
-                       assert err isa PError
-                       context.error(err.location, "{err.locate}: {err.message}")
-                       context.check_errors
+                       assert err isa AError
+                       context.fatal_error(err.location, err.message)
                end
                var node_module = node_tree.n_base
-               assert node_module isa AModule
+               assert node_module != null
                var module_loc = new Location.with_file(filename)
                var module = new MMSrcModule(context, node_module, dir, name, module_loc)
                return module
@@ -73,6 +73,16 @@ redef class MMSrcModule
 
                do_typing(tc)
                tc.check_errors
+
+               generate_icode(tc)
+               tc.check_errors
+
+               if not tc.keep_ast then clear_ast
        end
 end
 
+redef class ToolContext
+       # Should the AST be preserved in source modules after syntax processing?
+       # Default is false.
+       readable writable var _keep_ast: Bool = false
+end