Fix %naturalvar and templated methods using enums
%naturalvar was not being picked up - use the symbol table instead for looking up the feature. use_naturalvar_mode() has been moved to Language class (not strictly necessary though)
This commit is contained in:
parent
c4d40c7b64
commit
e186d2176a
5 changed files with 68 additions and 9 deletions
|
|
@ -274,6 +274,7 @@ CPP_TEST_CASES += \
|
|||
nspace \
|
||||
nspace_extend \
|
||||
naturalvar \
|
||||
naturalvar_more \
|
||||
nested_class \
|
||||
nested_comment \
|
||||
nested_workaround \
|
||||
|
|
|
|||
46
Examples/test-suite/naturalvar_more.i
Normal file
46
Examples/test-suite/naturalvar_more.i
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
%module naturalvar_more
|
||||
|
||||
// The instantiation of a template using an enum in the template parameter was not picking up %naturalvar.
|
||||
|
||||
// These typemaps will be used if %naturalvar is not working
|
||||
%typemap(out) T<Space::E> *te, T<Space::E> *const_te "_should_not_use_this_out_typemap_"
|
||||
%typemap(varout) T<Space::E> *te, T<Space::E> *const_te "_should_not_use_this_varout_typemap_"
|
||||
%typemap(out) Hidden *hidden "_should_not_use_this_out_typemap_"
|
||||
%typemap(varout) Hidden *hidden "_should_not_use_this_varout_typemap_"
|
||||
|
||||
%naturalvar T<Space::E>;
|
||||
%naturalvar Hidden;
|
||||
|
||||
%inline %{
|
||||
template <typename X> struct T {};
|
||||
struct K {};
|
||||
struct Hidden;
|
||||
%}
|
||||
%{
|
||||
struct Hidden {};
|
||||
%}
|
||||
|
||||
%inline %{
|
||||
namespace Space {
|
||||
enum E { E1, E2, E3 };
|
||||
}
|
||||
%}
|
||||
|
||||
%template(TE) T<Space::E>;
|
||||
|
||||
%include <std_string.i>
|
||||
%include <std_vector.i>
|
||||
%template(VectorString) std::vector<std::string>;
|
||||
|
||||
%inline {
|
||||
using namespace Space;
|
||||
struct S {
|
||||
T<E> te;
|
||||
const T<E> const_te;
|
||||
const std::vector<std::string>::value_type const_string_member; // check this resolves to std::string which has a naturalvar
|
||||
std::vector<std::string>::value_type string_member; // check this resolves to std::string which has a naturalvar
|
||||
Hidden hidden;
|
||||
S() : const_te(), const_string_member("initial string value") {}
|
||||
};
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue