From 307c9814a056e4febfde4120e27623d21f19e032 Mon Sep 17 00:00:00 2001 From: Seth R Johnson Date: Fri, 23 Mar 2018 14:22:20 -0400 Subject: [PATCH] Prevent "__dummy_0__" template methods from matching name warnings --- Examples/test-suite/name_warnings.i | 17 +++++++++++++++++ .../test-suite/python/name_warnings_runme.py | 5 +++++ Source/CParse/parser.y | 1 + 3 files changed, 23 insertions(+) create mode 100644 Examples/test-suite/python/name_warnings_runme.py diff --git a/Examples/test-suite/name_warnings.i b/Examples/test-suite/name_warnings.i index 0b62ec5d7..12e46ac9d 100644 --- a/Examples/test-suite/name_warnings.i +++ b/Examples/test-suite/name_warnings.i @@ -69,3 +69,20 @@ namespace std #endif double bar(double native, bool boolean) { return 1.0; } } + +// Test that anonymous template instantiations are ignored from +// %rename/%namewarn +%namewarn(%warningmsg(SWIGWARN_LANG_IDENTIFIER, "incorrectly warning about non-wrapped instantiated template"), error=1) "__dummy_0__"; +%inline %{ +template struct Foo { + typedef T value_type; +}; +%} +%template() Foo; + +// But they should still generate the correct typemaps etc +%inline %{ +int double_an_int(Foo::value_type v) { + return v * 2; +} +%} diff --git a/Examples/test-suite/python/name_warnings_runme.py b/Examples/test-suite/python/name_warnings_runme.py new file mode 100644 index 000000000..3fac169ea --- /dev/null +++ b/Examples/test-suite/python/name_warnings_runme.py @@ -0,0 +1,5 @@ +from name_warnings import * + +four = double_an_int(2) +assert four == 4 + diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y index 87f2a7c44..ea1fbc3b5 100644 --- a/Source/CParse/parser.y +++ b/Source/CParse/parser.y @@ -2970,6 +2970,7 @@ template_directive: SWIGTEMPLATE LPAREN idstringopt RPAREN idcolonnt LESSTHAN va String *nname = NewStringf("__dummy_%d__", cnt++); Swig_cparse_template_expand(templnode,nname,temparms,tscope); Setattr(templnode,"sym:name",nname); + SetFlag(templnode,"hidden"); Delete(nname); Setattr(templnode,"feature:onlychildren", "typemap,typemapitem,typemapcopy,typedef,types,fragment,apply"); if ($3) {