From e155cbfbd76ba0fe78754ff51d3826a681e5b8fb Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Sat, 28 Aug 2010 15:11:24 +0200 Subject: [PATCH] codegen: Run partial codegen on fast vapi files Run the C code generator for fast-vapi files in order to populate the header file. Add some early-exits to avoid doing unnecessary work (and to avoid crashes caused by assumptions that there will actually be code to output). --- codegen/valaccodebasemodule.vala | 14 +++++++++++++- codegen/valaccodemethodmodule.vala | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 231e1f575..a7d7307a5 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -420,7 +420,7 @@ public class Vala.CCodeBaseModule : CodeGenerator { /* we're only interested in non-pkg source files */ var source_files = context.get_source_files (); foreach (SourceFile file in source_files) { - if (file.file_type == SourceFileType.SOURCE) { + if (file.file_type != SourceFileType.PACKAGE) { file.accept (this); } } @@ -655,6 +655,14 @@ public class Vala.CCodeBaseModule : CodeGenerator { return; } + /* For fast-vapi, we only wanted the header declarations + * to be emitted, so bail out here without writing the + * C code output. + */ + if (source_file.file_type == SourceFileType.FAST) { + return; + } + if (requires_array_free) { append_vala_array_free (); } @@ -1446,6 +1454,10 @@ public class Vala.CCodeBaseModule : CodeGenerator { } } + if (acc.source_type == SourceFileType.FAST) { + return; + } + var this_type = get_data_type_for_symbol (t); var cselfparam = new CCodeFormalParameter ("self", this_type.get_cname ()); if (t is Struct) { diff --git a/codegen/valaccodemethodmodule.vala b/codegen/valaccodemethodmodule.vala index 4232ab437..8e4668773 100644 --- a/codegen/valaccodemethodmodule.vala +++ b/codegen/valaccodemethodmodule.vala @@ -1070,6 +1070,11 @@ public class Vala.CCodeMethodModule : CCodeStructModule { bool visible = !m.is_private_symbol (); visit_method (m); + + if (m.source_type == SourceFileType.FAST) { + return; + } + function = (CCodeFunction) m.ccodenode; DataType creturn_type; -- 2.47.2