summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2010-09-03 18:07:16 -0400
committerColin Walters <walters@verbum.org>2010-09-03 18:07:16 -0400
commitc1f4f42be118243549b00ba216314389a2072325 (patch)
tree275183190d033886ed290e8b3dbb2c495eede30a
parent4a006e6b7b61636e097ffdcfbe5cd6b40129842d (diff)
downloadgobject-introspection-c1f4f42be118243549b00ba216314389a2072325.tar.gz
scanner: Fix rename-to handling
We were writing the attributes backwards. Also actually use the attribute in the typelib generation.
-rw-r--r--girepository/girparser.c5
-rw-r--r--giscanner/maintransformer.py4
-rw-r--r--tests/scanner/Annotation-1.0-expected.gir4
3 files changed, 9 insertions, 4 deletions
diff --git a/girepository/girparser.c b/girepository/girparser.c
index bdb87811..0c022f92 100644
--- a/girepository/girparser.c
+++ b/girepository/girparser.c
@@ -774,6 +774,7 @@ start_function (GMarkupParseContext *context,
GError **error)
{
const gchar *name;
+ const gchar *shadows;
const gchar *symbol;
const gchar *deprecated;
const gchar *throws;
@@ -817,6 +818,7 @@ start_function (GMarkupParseContext *context,
ctx->in_embedded_type = in_embedded_type;
name = find_attribute ("name", attribute_names, attribute_values);
+ shadows = find_attribute ("name", attribute_names, attribute_values);
symbol = find_attribute ("c:identifier", attribute_names, attribute_values);
deprecated = find_attribute ("deprecated", attribute_names, attribute_values);
throws = find_attribute ("throws", attribute_names, attribute_values);
@@ -832,6 +834,9 @@ start_function (GMarkupParseContext *context,
return FALSE;
}
+ if (shadows)
+ name = shadows;
+
function = (GIrNodeFunction *) g_ir_node_new (G_IR_NODE_FUNCTION,
ctx->current_module);
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py
index 2e1a1269..3cb090b2 100644
--- a/giscanner/maintransformer.py
+++ b/giscanner/maintransformer.py
@@ -142,8 +142,8 @@ class MainTransformer(object):
target.shadows,
rename_to))
else:
- target.shadows = node.symbol
- node.shadowed_by = target.symbol
+ target.shadowed_by = node.symbol
+ node.shadows = target.symbol
def _apply_annotations_function(self, node, chain):
block = self._blocks.get(node.symbol)
diff --git a/tests/scanner/Annotation-1.0-expected.gir b/tests/scanner/Annotation-1.0-expected.gir
index 086f0639..3dcd0cb1 100644
--- a/tests/scanner/Annotation-1.0-expected.gir
+++ b/tests/scanner/Annotation-1.0-expected.gir
@@ -456,7 +456,7 @@ type.</doc>
</method>
<method name="watch"
c:identifier="annotation_object_watch"
- shadows="annotation_object_watch_full"
+ shadowed-by="annotation_object_watch_full"
introspectable="0">
<doc xml:whitespace="preserve">This is here just for the sake of being overriden by its
annotation_object_watch_full().</doc>
@@ -476,7 +476,7 @@ annotation_object_watch_full().</doc>
</method>
<method name="watch_full"
c:identifier="annotation_object_watch_full"
- shadowed-by="annotation_object_watch">
+ shadows="annotation_object_watch">
<doc xml:whitespace="preserve">Test overriding via the "Rename To" annotation.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>