summaryrefslogtreecommitdiff
path: root/vapigen
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2008-11-02 12:39:52 +0000
committerJürg Billeter <juergbi@src.gnome.org>2008-11-02 12:39:52 +0000
commit30063af8b4eec4dfd402560a3ef360c4763e4d1f (patch)
tree6c189bfab11f321bd0edb2b773a9bf98d72b0a9b /vapigen
parentabd1d8992ec6d60daac5a83df4895c663b5764cd (diff)
downloadvala-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.vala3
-rw-r--r--vapigen/valavapigen.vala23
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));