summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2011-06-01 18:29:35 -0400
committerColin Walters <walters@verbum.org>2011-06-02 16:55:31 -0400
commitae4fb7928cc2e311c0f2e91a7c7ac673184a2eb2 (patch)
tree74aad3b72722356388dddbbe6ec9342508d93c55
parente70cdbce955475915ea441bdbd45d02d825786f6 (diff)
downloadgobject-introspection-ae4fb7928cc2e311c0f2e91a7c7ac673184a2eb2.tar.gz
scanner: Parse GNUC expression statements
This is needed so we don't fail to parse gatomic.h from GLib. https://bugzilla.gnome.org/show_bug.cgi?id=651548
-rw-r--r--giscanner/scannerparser.y4
-rw-r--r--tests/scanner/regress.h4
2 files changed, 8 insertions, 0 deletions
diff --git a/giscanner/scannerparser.y b/giscanner/scannerparser.y
index 6400f728..8b9ce444 100644
--- a/giscanner/scannerparser.y
+++ b/giscanner/scannerparser.y
@@ -259,6 +259,10 @@ primary_expression
{
$$ = $2;
}
+ | EXTENSION '(' '{' block_item_list '}' ')'
+ {
+ $$ = gi_source_symbol_new (CSYMBOL_TYPE_INVALID, lineno);
+ }
;
/* concatenate adjacent string literal tokens */
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h
index f463a03e..9f326405 100644
--- a/tests/scanner/regress.h
+++ b/tests/scanner/regress.h
@@ -694,4 +694,8 @@ void regress_test_struct_fixed_array_frob (RegressTestStructFixedArray *str);
#define REGRESS_UTF8_CONSTANT "const \xe2\x99\xa5 utf8"
+#ifdef __GNUC__
+#define REGRESS_TEST_GNUC_EXTENSION_STMT(foo) (G_GNUC_EXTENSION ({ int x[10]; x[5] = 42; x[5]; }))
+#endif
+
#endif /* __GITESTTYPES_H__ */