diff --git a/Examples/test-suite/errors/swig_typemap_warn.stderr b/Examples/test-suite/errors/swig_typemap_warn.stderr index dde790024..5116dbc91 100644 --- a/Examples/test-suite/errors/swig_typemap_warn.stderr +++ b/Examples/test-suite/errors/swig_typemap_warn.stderr @@ -3,7 +3,5 @@ swig_typemap_warn.i:7: Warning 1000: Test warning for 'in' typemap for int arg3 swig_typemap_warn.i:7: Warning 1001: Test warning for 'out' typemap for double mmm (result) - name: mmm symname: mmm &1_ltype: double * descriptor: SWIGTYPE_double swig_typemap_warn.i:7: Warning 1000: Test warning for 'in' typemap for int abc (arg1) - argnum: 1 &1_ltype: int * descriptor: SWIGTYPE_int swig_typemap_warn.i:7: Warning 1000: Test warning for 'in' typemap for int arg3 (arg3) - argnum: 3 &1_ltype: int * descriptor: SWIGTYPE_int -swig_typemap_warn.i:7: Warning 314: 'def' is a python keyword, renaming to '_def' swig_typemap_warn.i:7: Warning 1000: Test warning for 'in' typemap for int abc (arg1) - argnum: 1 &1_ltype: int * descriptor: SWIGTYPE_int swig_typemap_warn.i:7: Warning 1000: Test warning for 'in' typemap for int arg3 (arg3) - argnum: 3 &1_ltype: int * descriptor: SWIGTYPE_int -swig_typemap_warn.i:7: Warning 314: 'def' is a python keyword, renaming to '_def' diff --git a/Source/Swig/naming.c b/Source/Swig/naming.c index 2557892e4..180e54774 100644 --- a/Source/Swig/naming.c +++ b/Source/Swig/naming.c @@ -1508,9 +1508,15 @@ String *Swig_name_make(Node *n, String *prefix, const_String_or_char_ptr cname, if ((msg) && (Len(msg))) { if (!Getmeta(nname, "already_warned")) { if (n) { - SWIG_WARN_NODE_BEGIN(n); - Swig_warning(0, Getfile(n), Getline(n), "%s\n", msg); - SWIG_WARN_NODE_END(n); + /* Parameter renaming is not fully implemented. Mainly because there is no C/C++ syntax to + * for %rename to fully qualify a function's parameter name from outside the function. Hence it + * is not possible to implemented targetted warning suppression on one parameter in one function. */ + int suppress_parameter_rename_warning = Equal(nodeType(n), "parm"); + if (!suppress_parameter_rename_warning) { + SWIG_WARN_NODE_BEGIN(n); + Swig_warning(0, Getfile(n), Getline(n), "%s\n", msg); + SWIG_WARN_NODE_END(n); + } } else { Swig_warning(0, Getfile(name), Getline(name), "%s\n", msg); }