summaryrefslogtreecommitdiff
path: root/giscanner/ast.py
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2010-06-16 20:34:18 -0400
committerColin Walters <walters@verbum.org>2010-06-17 13:05:59 -0400
commit5a4fa2bf5648d60d9fc0feb69080c9153b2abe02 (patch)
tree0a1f1f2c42740f4a812bfd39e32afb9d6a733c74 /giscanner/ast.py
parent929892fa9447d2abace21d02c86bb888fc6fd3df (diff)
downloadgobject-introspection-5a4fa2bf5648d60d9fc0feb69080c9153b2abe02.tar.gz
Support introspectable=no attribute, add warnings framework
This work allows us to move closer to replacing gtk-doc, among other things. We add a generic attribute "introspectable", and inside the typelib compiler if we see "introspectable=no", we don't put it in the typelib. This replaces the hackish pre-filter for varargs with a much more generic mechanism. The varargs is now handled in the scanner, and we emit introspectable=no for them. Add generic metadata to Node with references to file/line/column, which currently comes from symbols. Add scanner options --warn-all and --warn-error. https://bugzilla.gnome.org/show_bug.cgi?id=621570
Diffstat (limited to 'giscanner/ast.py')
-rw-r--r--giscanner/ast.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/giscanner/ast.py b/giscanner/ast.py
index 0e9f112d..a70f2d8b 100644
--- a/giscanner/ast.py
+++ b/giscanner/ast.py
@@ -173,12 +173,14 @@ class Node(object):
def __init__(self, name=None):
self.name = name
- self.attributes = [] # (key, value)*
self.skip = False
+ self.introspectable = True
+ self.attributes = [] # (key, value)*
self.deprecated = None
self.deprecated_version = None
self.version = None
self.foreign = False
+ self.file_positions = set()
def __cmp__(self, other):
return cmp(self.name, other.name)
@@ -189,6 +191,16 @@ class Node(object):
def remove_matching_children(self, pred):
pass
+ def inherit_file_positions(self, node):
+ self.file_positions.update(node.file_positions)
+
+ def add_file_position(self, filename, line, column):
+ self.file_positions.add((filename, line, column))
+
+ def add_symbol_reference(self, symbol):
+ if symbol.source_filename:
+ self.add_file_position(symbol.source_filename, symbol.line, -1)
+
class Namespace(Node):
def __init__(self, name, version):