summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorC. Scott Ananian <cscott@litl.com>2009-04-27 10:48:12 -0400
committerJohan Bilien <jobi@litl.com>2009-05-12 16:00:32 +0100
commit2fe114c880585f475c757277c4b7f0e78a5eb27e (patch)
tree08ce524601483421ff6665393c9eafbe54bab5cc
parent95a407d7bf263600e1f7b9708159dd17cc9226fe (diff)
downloadgobject-introspection-2fe114c880585f475c757277c4b7f0e78a5eb27e.tar.gz
Allow the use of the "Rename To" annotation for literal method renaming.
As originally implemented, this annotation was only used for method overloading (argument signature polymorphism). Allow it to be used to clean up historically poorly-named methods as well.
-rw-r--r--giscanner/annotationparser.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/giscanner/annotationparser.py b/giscanner/annotationparser.py
index 30b0eed0..5458ee17 100644
--- a/giscanner/annotationparser.py
+++ b/giscanner/annotationparser.py
@@ -692,8 +692,21 @@ class AnnotationApplier(object):
return True
self._namespace.remove_matching(shadowed_filter)
- assert len(shadowed) == 1
- node.name = shadowed[0].name
+ if len(shadowed) == 1:
+ # method override; use the same (stripped) name as the overloaded
+ # method referenced.
+ # Note that 'g_timeout_add_full' may specify a new_name of
+ # 'g_timeout_add' but the *real* name desired is the stripped name
+ # of 'g_timeout_add' which is 'timeout_add' (for example).
+ node.name = shadowed[0].name
+ elif len(shadowed) == 0:
+ # literal rename, to force a particular prefix strip or whatever
+ # Example: the "nm-utils" package uses a "NM" prefix in most places
+ # but some functions have an "nm_utils_" prefix; the 'Rename To:'
+ # annotation in this case is used to strip the 'utils_' part off.
+ node.name = new_name
+ else:
+ assert False # more than two shadowed methods? Shouldn't happen.
def _guess_direction(self, node):
if node.direction: