diff options
author | Philip Withnall <philip.withnall@collabora.co.uk> | 2015-01-27 12:40:29 +0000 |
---|---|---|
committer | Philip Withnall <philip.withnall@collabora.co.uk> | 2015-01-27 12:41:29 +0000 |
commit | 5ada22dc9b8009285ffcce8a77e4d30da5397153 (patch) | |
tree | 4e0d7916e4f7b8e2e2414cd670bc853f1c215eb9 /clang-plugin | |
parent | 18a0019e43607ec26e048080efcb0c75b86a78da (diff) |
gir-attributes: Consider instance parameters in argument counts
This fixes emitting the ‘unexpected mismatch in number of arguments’
warning message for all GObject methods.
Diffstat (limited to 'clang-plugin')
-rw-r--r-- | clang-plugin/gir-attributes.cpp | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/clang-plugin/gir-attributes.cpp b/clang-plugin/gir-attributes.cpp index 2e47cf8..3878a98 100644 --- a/clang-plugin/gir-attributes.cpp +++ b/clang-plugin/gir-attributes.cpp @@ -207,10 +207,15 @@ GirAttributesConsumer::_handle_function_decl (FunctionDecl& func) unsigned int err_params = (g_function_info_get_flags (callable_info) & GI_FUNCTION_THROWS) ? 1 : 0; + unsigned int obj_params = + (g_base_info_get_container (info) != NULL && + g_function_info_get_flags (callable_info) & + GI_FUNCTION_IS_METHOD) ? 1 : 0; /* Sanity check. */ - if (k + err_params != func.getNumParams ()) { - WARN ("Number of GIR callable parameters (" << k << ") " + if (obj_params + k + err_params != func.getNumParams ()) { + WARN ("Number of GIR callable parameters (" << + obj_params + k + err_params << ") " "differs from number of C formal parameters (" << func.getNumParams () << "). Ignoring function " << func_name << "()."); @@ -267,12 +272,13 @@ GirAttributesConsumer::_handle_function_decl (FunctionDecl& func) g_type_info_get_array_fixed_size (&type_info)); if (_arg_is_nonnull (arg, type_info)) { - DEBUG ("Got nonnull arg " << j << " from GIR."); - non_null_args.push_back (j); + DEBUG ("Got nonnull arg " << obj_params + j << + " from GIR."); + non_null_args.push_back (obj_params + j); } if (_type_should_be_const (transfer, type_tag)) { - ParmVarDecl *parm = func.getParamDecl (j); + ParmVarDecl *parm = func.getParamDecl (obj_params + j); QualType t = parm->getType (); if (!t.isConstant (parm->getASTContext ())) @@ -449,10 +455,15 @@ GirAttributesChecker::_handle_function_decl (FunctionDecl& func) unsigned int err_params = (g_function_info_get_flags (callable_info) & GI_FUNCTION_THROWS) ? 1 : 0; + unsigned int obj_params = + (g_base_info_get_container (info) != NULL && + g_function_info_get_flags (callable_info) & + GI_FUNCTION_IS_METHOD) ? 1 : 0; /* Sanity check. */ - if (k + err_params != func.getNumParams ()) { - WARN ("Number of GIR callable parameters (" << k << ") " + if (obj_params + k + err_params != func.getNumParams ()) { + WARN ("Number of GIR callable parameters (" << + obj_params + k + err_params << ") " "differs from number of C formal parameters (" << func.getNumParams () << "). Ignoring function " << func_name << "()."); |