interface_writer.write_file (context, fast_vapi_filename);
return quit ();
}
-
- var resolver = new SymbolResolver ();
- resolver.resolve (context);
-
+
+ context.check ();
+
if (context.report.get_errors () > 0 || (fatal_warnings && context.report.get_warnings () > 0)) {
return quit ();
}
- var analyzer = new SemanticAnalyzer ();
- analyzer.analyze (context);
-
if (!ccode_only && !compile_only && library == null) {
// building program, require entry point
if (!has_c_files && context.entry_point == null) {
return quit ();
}
- var flow_analyzer = new FlowAnalyzer ();
- flow_analyzer.analyze (context);
-
- if (context.report.get_errors () > 0 || (fatal_warnings && context.report.get_warnings () > 0)) {
- return quit ();
- }
-
context.codegen.emit (context);
if (context.report.get_errors () > 0 || (fatal_warnings && context.report.get_warnings () > 0)) {
get { return _root; }
}
+ public SymbolResolver resolver { get; private set; }
+
+ public SemanticAnalyzer analyzer { get; private set; }
+
+ public FlowAnalyzer flow_analyzer { get; private set; }
+
/**
* The selected code generator.
*/
public CodeGenerator codegen { get; set; }
public CodeContext () {
+ resolver = new SymbolResolver ();
+ analyzer = new SemanticAnalyzer ();
+ flow_analyzer = new FlowAnalyzer ();
}
/**
}
}
+ /**
+ * Resolve and analyze.
+ */
+ public void check () {
+ resolver.resolve (this);
+
+ if (report.get_errors () > 0) {
+ return;
+ }
+
+ analyzer.analyze (this);
+
+ if (report.get_errors () > 0) {
+ return;
+ }
+
+ flow_analyzer.analyze (this);
+ }
+
public void add_define (string define) {
defines.add (define);
}
var gidlparser = new GIdlParser ();
gidlparser.parse (context);
- if (context.report.get_errors () > 0) {
- return quit ();
- }
-
- var resolver = new SymbolResolver ();
- resolver.resolve (context);
-
if (context.report.get_errors () > 0) {
return quit ();
}
- var analyzer = new SemanticAnalyzer ();
- analyzer.analyze (context);
+ context.check ();
if (context.report.get_errors () > 0) {
return quit ();