// Test allowexcept feature

%module allowexcept

// First make sure %exception is not used by default for variable wrappers

%nodefaultctor;
%nodefaultdtor;
%exception {
   This will not compile
}

%inline %{
struct UVW {};
UVW uvw_global_variable;
struct Bar {
  UVW member_variable;
  static UVW static_member_variable;
};
UVW Bar::static_member_variable;
%}


// Now test the allowexcept feature by making the usual $action uncompilable and ensuring the %exception is picked up

struct XYZ {
};

%{
struct XYZ {
  void foo() {}
private:
  XYZ& operator=(const XYZ& other); // prevent assignment used in normally generated set method
  XYZ* operator&(); // prevent dereferencing used in normally generated get method
};
%}
#if defined(SWIGUTL)
%exception {
  /* 
   $action
  */
  SWIG_fail;
}
#else
%exception {
  /* 
   $action
  */
}
#endif
%allowexception;

%inline %{
XYZ global_variable;
struct Foo {
  XYZ member_variable;
  static XYZ static_member_variable;
};
XYZ Foo::static_member_variable;
%}

