Merge pull request #2197 from swig-fortran/rename-warn

Print rename warnings except anonymous template methods
This commit is contained in:
Olly Betts 2022-02-10 16:15:10 +13:00 committed by GitHub
commit 89a0a3c5f7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 54 additions and 21 deletions

View file

@ -1,10 +1,10 @@
%module xxx
%namewarn("314:'key1' is a keyword, renaming to '_key1'", rename="_%s") "key1";
%namewarn("314:'key2' is a keyword, renaming to '_key2'", rename="_%s") "key2";
%namewarn("314:'key3' is a keyword, renaming to '_key3'", rename="_%s") "key3";
%namewarn("314:'key4' is a keyword, renaming to '_key4'", rename="_%s") "key4";
%namewarn("314:'key5' is a keyword, renaming to '_key5'", rename="_%s") "key5";
%namewarn("314:'key1' is a keyword", rename="_%s") "key1";
%namewarn("314:'key2' is a keyword", rename="_%s") "key2";
%namewarn("314:'key3' is a keyword", rename="_%s") "key3";
%namewarn("314:'key4' is a keyword", rename="_%s") "key4";
%namewarn("314:'key5' is a keyword", rename="_%s") "key5";
// Non-templated
%ignore KlassA::key1;

View file

@ -7,4 +7,4 @@ cpp_namewarn.i:67: Warning 314: 'key3' is a keyword, renaming to '_key3'
cpp_namewarn.i:72: Warning 314: 'key1' is a keyword, renaming to '_key1'
cpp_namewarn.i:73: Warning 314: 'key2' is a keyword, renaming to '_key2'
cpp_namewarn.i:74: Warning 314: 'key3' is a keyword, renaming to '_key3'
cpp_namewarn.i:80: Warning 314: 'key5' is a keyword, renaming to '_key5'
cpp_namewarn.i:80: Warning 314: 'key5' is a keyword

View file

@ -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<typename T> struct Foo {
typedef T value_type;
};
%}
%template() Foo<int>;
// But they should still generate the correct typemaps etc
%inline %{
int double_an_int(Foo<int>::value_type v) {
return v * 2;
}
%}

View file

@ -0,0 +1,5 @@
from name_warnings import *
four = double_an_int(2)
assert four == 4