[gobject-introspection] transformer: Warn on unnamed params in declarations
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gobject-introspection] transformer: Warn on unnamed params in declarations
- Date: Thu, 7 Feb 2013 09:29:56 +0000 (UTC)
commit 06f2eb7c305bb717edeec84ebf39b113bf3481a5
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Sun Feb 3 10:39:36 2013 -0500
transformer: Warn on unnamed params in declarations
These params are unannotatable and undocumentable. They really
should not be allowed.
https://bugzilla.gnome.org/show_bug.cgi?id=693098
giscanner/transformer.py | 14 +++++++++-----
tests/warn/unknown-parameter.h | 20 ++++++++++++++++++++
2 files changed, 29 insertions(+), 5 deletions(-)
---
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index ba7afb9..25857b7 100644
--- a/giscanner/transformer.py
+++ b/giscanner/transformer.py
@@ -410,7 +410,7 @@ raise ValueError."""
# Drop functions that start with _ very early on here
if symbol.ident.startswith('_'):
return None
- parameters = list(self._create_parameters(symbol.base_type))
+ parameters = list(self._create_parameters(symbol, symbol.base_type))
return_ = self._create_return(symbol.base_type.base_type)
try:
name = self._strip_symbol(symbol)
@@ -478,11 +478,11 @@ raise ValueError."""
return value
- def _create_parameters(self, base_type):
+ def _create_parameters(self, symbol, base_type):
# warn if we see annotations for unknown parameters
param_names = set(child.ident for child in base_type.child_list)
for child in base_type.child_list:
- yield self._create_parameter(child)
+ yield self._create_parameter(symbol, child)
def _synthesize_union_type(self, symbol, parent_symbol):
# Synthesize a named union so that it can be referenced.
@@ -695,11 +695,15 @@ raise ValueError."""
return container
return ast.Type(ctype=ctype, is_const=is_const, complete_ctype=complete_ctype)
- def _create_parameter(self, symbol):
+ def _create_parameter(self, parent_symbol, symbol):
if symbol.type == CSYMBOL_TYPE_ELLIPSIS:
ptype = ast.Varargs()
else:
ptype = self._create_type_from_base(symbol.base_type, is_parameter=True)
+
+ if symbol.ident is None and symbol.base_type and symbol.base_type.type != CTYPE_VOID:
+ message.warn_symbol(parent_symbol, "missing parameter name; undocumentable")
+
return ast.Parameter(symbol.ident, ptype)
def _create_return(self, source_type):
@@ -835,7 +839,7 @@ raise ValueError."""
return self._create_compound(ast.Union, symbol, anonymous)
def _create_callback(self, symbol, member=False):
- parameters = list(self._create_parameters(symbol.base_type.base_type))
+ parameters = list(self._create_parameters(symbol, symbol.base_type.base_type))
retval = self._create_return(symbol.base_type.base_type.base_type)
# Mark the 'user_data' arguments
diff --git a/tests/warn/unknown-parameter.h b/tests/warn/unknown-parameter.h
index 3d339b3..384704d 100644
--- a/tests/warn/unknown-parameter.h
+++ b/tests/warn/unknown-parameter.h
@@ -46,3 +46,23 @@ void test_param_missing(void);
void test_param_varargs(int i, ...);
// Should not warn
+
+/**
+ * test_undocumentable_param:
+ */
+void test_undocumentable_param(int);
+
+// EXPECT:53: Warning: Test: symbol='test_undocumentable_param': missing parameter name; undocumentable
+
+void test_undocumentable_param_2(int a, int);
+
+// EXPECT:57: Warning: Test: symbol='test_undocumentable_param_2': missing parameter name; undocumentable
+
+void test_undocumentable_param_3(int, int);
+
+// EXPECT:61: Warning: Test: symbol='test_undocumentable_param_3': missing parameter name; undocumentable
+// EXPECT:61: Warning: Test: symbol='test_undocumentable_param_3': missing parameter name; undocumentable
+
+void test_void(void);
+
+// Should not warn
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]