diff options
author | Jürg Billeter <j@bitron.ch> | 2008-11-02 12:39:52 +0000 |
---|---|---|
committer | Jürg Billeter <juergbi@src.gnome.org> | 2008-11-02 12:39:52 +0000 |
commit | 30063af8b4eec4dfd402560a3ef360c4763e4d1f (patch) | |
tree | 6c189bfab11f321bd0edb2b773a9bf98d72b0a9b /vapigen | |
parent | abd1d8992ec6d60daac5a83df4895c663b5764cd (diff) | |
download | vala-30063af8b4eec4dfd402560a3ef360c4763e4d1f.tar.gz |
Move attribute processing to semantic analyzer
2008-11-02 Jürg Billeter <j@bitron.ch>
* vala/Makefile.am:
* vala/valaattributeprocessor.vala:
* vala/valaclass.vala:
* vala/valaenum.vala:
* vala/valasemanticanalyzer.vala:
* vala/valastruct.vala:
* compiler/valacompiler.vala:
* vapigen/valagidlparser.vala:
* vapigen/valavapigen.vala:
Move attribute processing to semantic analyzer
svn path=/trunk/; revision=1950
Diffstat (limited to 'vapigen')
-rw-r--r-- | vapigen/valagidlparser.vala | 3 | ||||
-rw-r--r-- | vapigen/valavapigen.vala | 23 |
2 files changed, 17 insertions, 9 deletions
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index b48e5715d..cc5b7d6bf 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -198,6 +198,7 @@ public class Vala.GIdlParser : CodeVisitor { if (sym is Namespace) { ns = (Namespace) sym; if (ns.external_package) { + ns.attributes = null; ns.source_reference = current_source_reference; } } else { @@ -817,7 +818,7 @@ public class Vala.GIdlParser : CodeVisitor { } if (is_errordomain) { - var ed = new ErrorDomain (en.name); + var ed = new ErrorDomain (en.name, current_source_reference); ed.access = SymbolAccessibility.PUBLIC; ed.set_cprefix (common_prefix); diff --git a/vapigen/valavapigen.vala b/vapigen/valavapigen.vala index fce665507..46bf6fdbd 100644 --- a/vapigen/valavapigen.vala +++ b/vapigen/valavapigen.vala @@ -137,7 +137,7 @@ class Vala.VAPIGen : Object { foreach (string source in sources) { if (FileUtils.test (source, FileTest.EXISTS)) { - context.add_source_file (new SourceFile (context, source)); + context.add_source_file (new SourceFile (context, source, true)); } else { Report.error (null, "%s not found".printf (source)); } @@ -155,13 +155,6 @@ class Vala.VAPIGen : Object { return quit (); } - var attributeprocessor = new AttributeProcessor (); - attributeprocessor.process (context); - - if (Report.get_errors () > 0) { - return quit (); - } - var girparser = new GirParser (); if (metadata_filename != null) { girparser.parse_metadata (metadata_filename); @@ -185,8 +178,22 @@ class Vala.VAPIGen : Object { if (Report.get_errors () > 0) { return quit (); } + + var analyzer = new SemanticAnalyzer (); + analyzer.analyze (context); + + if (Report.get_errors () > 0) { + return quit (); + } if (library != null) { + // interface writer ignores external packages + foreach (SourceFile file in context.get_source_files ()) { + if (!file.filename.has_suffix (".vapi")) { + file.external_package = false; + } + } + var interface_writer = new InterfaceWriter (); interface_writer.write_file (context, "%s.vapi".printf (library)); |