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-16 21:58:18 -0400
commit074192b89c6afcdd7f062f03989972e44334b8bf (patch)
treeb3334fc386176b9d3adb1579319e6661604a3710 /giscanner/ast.py
parent59b084e18e8826613de47fa69b791c72574a3900 (diff)
downloadgobject-introspection-074192b89c6afcdd7f062f03989972e44334b8bf.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 --Wall and --Werror.
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):