[vala] girparser: Only reparent static methods within the same GIR
- From: Luca Bruno <lucabru src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] girparser: Only reparent static methods within the same GIR
- Date: Thu, 5 Jan 2012 18:31:27 +0000 (UTC)
commit 7aecb7c4e70addfe26c02980962e31d446befb36
Author: Luca Bruno <lucabru src gnome org>
Date: Thu Jan 5 19:27:04 2012 +0100
girparser: Only reparent static methods within the same GIR
vala/valagirparser.vala | 10 ++++++++--
vapi/gdk-3.0.vapi | 4 ++++
2 files changed, 12 insertions(+), 2 deletions(-)
---
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index eecb9d4..c6ced4b 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -3214,6 +3214,12 @@ public class Vala.GirParser : CodeVisitor {
}
}
+ bool same_gir (Symbol gir_component, Symbol sym) {
+ var gir_name = gir_component.source_reference.file.gir_namespace;
+ var gir_version = gir_component.source_reference.file.gir_version;
+ return "%s-%s".printf (gir_name, gir_version) in sym.source_reference.file.filename;
+ }
+
void process_namespace_method (Node ns, Node node) {
/* transform static methods into instance methods if possible.
In most of cases this is a .gir fault we are going to fix */
@@ -3230,7 +3236,7 @@ public class Vala.GirParser : CodeVisitor {
// check if it's a missed instance method (often happens for structs)
var sym = ((UnresolvedType) first_param.variable_type).unresolved_symbol;
var parent = resolve_node (ns, sym);
- if (parent != null && parent.parent == ns && is_container (parent.symbol) && cname.has_prefix (parent.get_lower_case_cprefix ())) {
+ if (parent != null && same_gir (method, parent.symbol) && parent.parent == ns && is_container (parent.symbol) && cname.has_prefix (parent.get_lower_case_cprefix ())) {
// instance method
var new_name = method.name.substring (parent.get_lower_case_cprefix().length - ns_cprefix.length);
if (parent.lookup (new_name) == null) {
@@ -3249,7 +3255,7 @@ public class Vala.GirParser : CodeVisitor {
Node parent = ns;
find_parent (cname, ns, ref parent, ref match);
var new_name = method.name.substring (parent.get_lower_case_cprefix().length - ns_cprefix.length);
- if (parent.lookup (new_name) == null) {
+ if (same_gir (method, parent.symbol) && parent.lookup (new_name) == null) {
ns.remove_member (node);
node.name = new_name;
method.name = new_name;
diff --git a/vapi/gdk-3.0.vapi b/vapi/gdk-3.0.vapi
index ed14c82..baffe13 100644
--- a/vapi/gdk-3.0.vapi
+++ b/vapi/gdk-3.0.vapi
@@ -5864,6 +5864,10 @@ namespace Gdk {
[CCode (cheader_filename = "gdk/gdk.h")]
public static void parse_args ([CCode (array_length_cname = "argc", array_length_pos = 0.5)] ref unowned string[] argv);
[CCode (cheader_filename = "gdk/gdk.h")]
+ public static Gdk.Pixbuf pixbuf_get_from_surface (Cairo.Surface surface, int src_x, int src_y, int width, int height);
+ [CCode (cheader_filename = "gdk/gdk.h")]
+ public static Gdk.Pixbuf pixbuf_get_from_window (Gdk.Window window, int src_x, int src_y, int width, int height);
+ [CCode (cheader_filename = "gdk/gdk.h")]
[Deprecated (since = "3.0")]
public static Gdk.GrabStatus pointer_grab (Gdk.Window window, bool owner_events, Gdk.EventMask event_mask, Gdk.Window? confine_to, Gdk.Cursor? cursor, uint32 time_);
[CCode (cheader_filename = "gdk/gdk.h")]
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]