summaryrefslogtreecommitdiff
path: root/vapigen
diff options
context:
space:
mode:
authorJared Moore <jaredm@svn.gnome.org>2008-07-17 02:38:06 +0000
committerJared William Moore <jaredm@src.gnome.org>2008-07-17 02:38:06 +0000
commitc13f6140d69eaac6dabc864fe6f55133796ff015 (patch)
tree3d92b48620990e93a287f6b310925c4631128f5c /vapigen
parentebb4529f104697c10a46f4bca4811b62461773e9 (diff)
downloadvala-c13f6140d69eaac6dabc864fe6f55133796ff015.tar.gz
Added 'type_name' metadata to function to override its return type.
2008-07-17 Jared Moore <jaredm@svn.gnome.org> * vapigen/valagidlparser.vala: Added 'type_name' metadata to function to override its return type. * vapi/packages/gtk+-2.0/gtk+-2.0.metadata Changed gtk_selection_data_get_text to return a string, fixes bug 540663. * vapi/gtk+-2.0.vapi: Regenerated. svn path=/trunk/; revision=1703
Diffstat (limited to 'vapigen')
-rw-r--r--vapigen/valagidlparser.vala10
1 files changed, 9 insertions, 1 deletions
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala
index 2b39443f2..85de85f96 100644
--- a/vapigen/valagidlparser.vala
+++ b/vapigen/valagidlparser.vala
@@ -1329,7 +1329,15 @@ public class Vala.GIdlParser : CodeVisitor {
m.no_array_length = true;
}
} else if (nv[0] == "type_name") {
- ((UnresolvedType) return_type).unresolved_symbol = new UnresolvedSymbol (null, eval (nv[1]));
+ var sym = new UnresolvedSymbol (null, eval (nv[1]));
+ if (return_type is UnresolvedType) {
+ ((UnresolvedType) return_type).unresolved_symbol = sym;
+ } else {
+ // Overwrite old return_type, so "type_name" must be before any
+ // other return type modifying metadata
+ m.return_type = return_type = new UnresolvedType.from_symbol (sym, return_type.source_reference);
+ }
+ }
} else if (nv[0] == "type_arguments") {
var type_args = eval (nv[1]).split (",");
foreach (string type_arg in type_args) {