blob: 1c8bcb9dd7a4bc7eec95c0caec21b036cdc88fc2 [file] [log] [blame]
%module template_using_directive_typedef
%inline %{
namespace space {
template<typename T> class Vector {};
class VectorClass {};
}
struct Obj {};
%}
%template(Vector_Obj) space::Vector<Obj>;
%inline %{
namespace tns {
using space::Vector; // template using directives were not being added into the typedef table
using space::VectorClass;
typedef Vector<Obj> NSVec;
}
%}
%inline %{
namespace tns {
struct Holder {
// using Vec = Vector<Obj>;
typedef Vector<Obj> Vec;
typedef VectorClass VecClass;
Vec items;
void holder_use1(space::Vector<Obj>, tns::NSVec, tns::Vector<Obj>) {}
void holder_use2(space::Vector<Obj>, NSVec, Vector<Obj>) {}
void holder_use3(tns::Holder::Vec, Holder::Vec, Vec) {}
};
void tns_holder_use(tns::Holder::Vec, Holder::Vec) {}
void tns_use(space::Vector<Obj>, NSVec, tns::NSVec) {}
}
void global_holder_use(tns::Holder::Vec) {}
void global_use(space::Vector<Obj>, tns::NSVec, tns::Vector<Obj>) {}
namespace ns1 {
void ns1_holder_use(tns::Holder::Vec) {}
}
namespace ns2 {
using namespace tns;
void ns2_holder_use(tns::Holder::Vec, Holder::Vec, NSVec, Vector<Obj>) {}
}
%}