Commit 2cd44b16 authored by Jürg Billeter's avatar Jürg Billeter

Add CodeContext.check method

parent e81776c0
......@@ -343,17 +343,13 @@ class Vala.Compiler {
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) {
......@@ -370,13 +366,6 @@ class Vala.Compiler {
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)) {
......
......@@ -200,12 +200,21 @@ public class Vala.CodeContext {
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 ();
}
/**
......@@ -444,6 +453,25 @@ public class Vala.CodeContext {
}
}
/**
* 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);
}
......
......@@ -150,19 +150,11 @@ class Vala.VAPIGen : Object {
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 ();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment