[vala] GIR parser: Skip checks not relevant for bindings
- From: JÃrg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [vala] GIR parser: Skip checks not relevant for bindings
- Date: Wed, 29 Jul 2009 15:45:35 +0000 (UTC)
commit edd36760152af3bebf1152f47254d3c6dff0ba9a
Author: Jürg Billeter <j bitron ch>
Date: Wed Jul 29 17:44:00 2009 +0200
GIR parser: Skip checks not relevant for bindings
vala/valamethod.vala | 2 +-
vala/valasignal.vala | 1 +
vapigen/valagirparser.vala | 6 ++++++
3 files changed, 8 insertions(+), 1 deletions(-)
---
diff --git a/vala/valamethod.vala b/vala/valamethod.vala
index 7fad756..d1f5172 100644
--- a/vala/valamethod.vala
+++ b/vala/valamethod.vala
@@ -690,7 +690,7 @@ public class Vala.Method : Member {
if (is_abstract && body != null) {
Report.error (source_reference, "Abstract methods cannot have bodies");
- } else if ((is_abstract || is_virtual) && external && !external_package) {
+ } else if ((is_abstract || is_virtual) && external && !external_package && !parent_symbol.external) {
Report.error (source_reference, "Extern methods cannot be abstract or virtual");
} else if (external && body != null) {
Report.error (source_reference, "Extern methods cannot have bodies");
diff --git a/vala/valasignal.vala b/vala/valasignal.vala
index 3a69f59..79ede73 100644
--- a/vala/valasignal.vala
+++ b/vala/valasignal.vala
@@ -248,6 +248,7 @@ public class Vala.Signal : Member, Lockable {
if (is_virtual) {
default_handler = new Method (name, return_type, source_reference);
default_handler.access = access;
+ default_handler.external = external;
default_handler.is_virtual = true;
default_handler.vfunc_name = name;
default_handler.signal_reference = this;
diff --git a/vapigen/valagirparser.vala b/vapigen/valagirparser.vala
index 1e48120..ea4388f 100644
--- a/vapigen/valagirparser.vala
+++ b/vapigen/valagirparser.vala
@@ -264,6 +264,7 @@ public class Vala.GirParser : CodeVisitor {
var st = new Struct (reader.get_attribute ("name"), get_current_src ());
st.access = SymbolAccessibility.PUBLIC;
st.base_type = parse_type_from_name (reader.get_attribute ("target"));
+ st.external = true;
next ();
end_element ("alias");
return st;
@@ -496,6 +497,7 @@ public class Vala.GirParser : CodeVisitor {
Struct parse_record () {
start_element ("record");
var st = new Struct (reader.get_attribute ("name"), get_current_src ());
+ st.external = true;
string glib_is_gtype_struct_for = reader.get_attribute ("glib:is-gtype-struct-for");
@@ -558,6 +560,7 @@ public class Vala.GirParser : CodeVisitor {
start_element ("class");
var cl = new Class (reader.get_attribute ("name"), get_current_src ());
cl.access = SymbolAccessibility.PUBLIC;
+ cl.external = true;
string cname = reader.get_attribute ("c:type");
if (cname != null) {
@@ -980,6 +983,7 @@ public class Vala.GirParser : CodeVisitor {
}
var sig = new Signal (name, return_type);
sig.access = SymbolAccessibility.PUBLIC;
+ sig.external = true;
if (current_token == MarkupTokenType.START_ELEMENT && reader.name == "parameters") {
start_element ("parameters");
next ();
@@ -996,6 +1000,7 @@ public class Vala.GirParser : CodeVisitor {
start_element ("glib:boxed");
var st = new Struct (reader.get_attribute ("glib:name"));
st.access = SymbolAccessibility.PUBLIC;
+ st.external = true;
string cname = reader.get_attribute ("c:type");
if (cname != null) {
@@ -1026,6 +1031,7 @@ public class Vala.GirParser : CodeVisitor {
start_element ("union");
var st = new Struct (reader.get_attribute ("name"));
st.access = SymbolAccessibility.PUBLIC;
+ st.external = true;
next ();
while (current_token == MarkupTokenType.START_ELEMENT) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]