Enhance cpp11_strongly_typed_enumerations testcase and turn it on
This commit is contained in:
parent
77b338151e
commit
f72b9f99a4
2 changed files with 62 additions and 34 deletions
|
|
@ -525,6 +525,7 @@ CPP11_TEST_CASES = \
|
|||
cpp11_rvalue_reference3 \
|
||||
cpp11_sizeof_object \
|
||||
cpp11_static_assert \
|
||||
cpp11_strongly_typed_enumerations \
|
||||
cpp11_thread_local \
|
||||
cpp11_template_double_brackets \
|
||||
cpp11_template_explicit \
|
||||
|
|
@ -537,7 +538,6 @@ CPP11_TEST_CASES = \
|
|||
# Broken C++11 test cases.
|
||||
CPP11_TEST_BROKEN = \
|
||||
# cpp11_hash_tables \ # not fully implemented yet
|
||||
# cpp11_strongly_typed_enumerations \ # SWIG not quite getting this right yet in all langs
|
||||
# cpp11_variadic_templates \ # Broken for some languages (such as Java)
|
||||
# cpp11_reference_wrapper \ # No typemaps
|
||||
|
||||
|
|
|
|||
|
|
@ -2,10 +2,6 @@
|
|||
strongly typed enums. Enums with the same type are comparable. Enum classes
|
||||
require support for nested classes. */
|
||||
%module cpp11_strongly_typed_enumerations
|
||||
%warnfilter(302) Val1;
|
||||
%warnfilter(302) Val2;
|
||||
%warnfilter(302) Val3;
|
||||
%warnfilter(302) Val4;
|
||||
|
||||
/* Forward declarations (illegally accepted by SWIG - oh well!) */
|
||||
enum Enum1 : short;
|
||||
|
|
@ -17,14 +13,14 @@ enum : unsigned short;
|
|||
enum class Enum1 {
|
||||
Val1,
|
||||
Val2,
|
||||
Val3 = 100,
|
||||
Val4 /* = 101 */
|
||||
Val3 = 13,
|
||||
Val4
|
||||
};
|
||||
|
||||
enum class Enum2 : short {
|
||||
Val1,
|
||||
Val2,
|
||||
Val3 = 100,
|
||||
Val3 = 23,
|
||||
Val4
|
||||
};
|
||||
%}
|
||||
|
|
@ -39,24 +35,24 @@ enum class Enum5; // Legal in C++11, because enum class declarati
|
|||
enum class Enum6 : unsigned int; // Legal C++11.
|
||||
|
||||
enum Enum4 : unsigned int {
|
||||
Val1, Val2, Val3 = 100, Val4
|
||||
Val1, Val2, Val3 = 43, Val4
|
||||
};
|
||||
|
||||
enum class Enum5 {
|
||||
Val1, Val2, Val3 = 100, Val4
|
||||
Val1, Val2, Val3 = 53, Val4
|
||||
};
|
||||
|
||||
enum class Enum6 : unsigned int {
|
||||
Val1, Val2, Val3 = 300, Val4
|
||||
Val1, Val2, Val3 = 63, Val4
|
||||
};
|
||||
|
||||
typedef enum class Enum7 : unsigned int {
|
||||
Val1, Val2, Val3 = 300, Val4
|
||||
Val1, Val2, Val3 = 73, Val4
|
||||
} Enum7td;
|
||||
|
||||
// enum inherits from non-primitive type
|
||||
enum class Enum8 : size_t {
|
||||
Val1, Val2, Val3 = 300, Val4
|
||||
Val1, Val2, Val3 = 83, Val4
|
||||
};
|
||||
|
||||
template <typename T> struct TType {
|
||||
|
|
@ -64,7 +60,7 @@ template <typename T> struct TType {
|
|||
};
|
||||
|
||||
enum class Enum10 : TType<int>::type_name {
|
||||
Val1, Val2, Val3 = 300, Val4
|
||||
Val1, Val2, Val3 = 103, Val4
|
||||
};
|
||||
|
||||
// forward declaration, no definition of enum
|
||||
|
|
@ -78,34 +74,50 @@ class Class1
|
|||
public:
|
||||
enum class Enum12
|
||||
{
|
||||
Val1 = 300,
|
||||
Val2 = 400,
|
||||
Val1 = 1121,
|
||||
Val2 = 1122,
|
||||
Val3,
|
||||
Val4
|
||||
};
|
||||
|
||||
enum Enum13
|
||||
{
|
||||
Val1 = 300,
|
||||
Val2 = 400,
|
||||
Val1 = 1131,
|
||||
Val2 = 1132,
|
||||
Val3,
|
||||
Val4
|
||||
};
|
||||
|
||||
enum class Enum14
|
||||
{
|
||||
Val1 = 1141,
|
||||
Val2 = 1142,
|
||||
Val3,
|
||||
Val4
|
||||
};
|
||||
|
||||
struct Struct1
|
||||
{
|
||||
enum class Enum14
|
||||
enum class Enum12
|
||||
{
|
||||
Val1 = 300,
|
||||
Val2 = 400,
|
||||
Val1 = 3121,
|
||||
Val2 = 3122,
|
||||
Val3,
|
||||
Val4
|
||||
};
|
||||
|
||||
enum Enum15
|
||||
enum Enum13
|
||||
{
|
||||
Val1 = 300,
|
||||
Val2 = 400,
|
||||
Val1 = 3131,
|
||||
Val2 = 3132,
|
||||
Val3,
|
||||
Val4
|
||||
};
|
||||
|
||||
enum class Enum14
|
||||
{
|
||||
Val1 = 3141,
|
||||
Val2 = 3142,
|
||||
Val3,
|
||||
Val4
|
||||
};
|
||||
|
|
@ -117,34 +129,50 @@ class Class2
|
|||
public:
|
||||
enum class Enum12
|
||||
{
|
||||
Val1 = 300,
|
||||
Val2 = 400,
|
||||
Val1 = 2121,
|
||||
Val2 = 2122,
|
||||
Val3,
|
||||
Val4
|
||||
};
|
||||
|
||||
enum Enum13
|
||||
{
|
||||
Val1 = 300,
|
||||
Val2 = 400,
|
||||
Val1 = 2131,
|
||||
Val2 = 2132,
|
||||
Val3,
|
||||
Val4
|
||||
};
|
||||
|
||||
enum class Enum14
|
||||
{
|
||||
Val1 = 2141,
|
||||
Val2 = 2142,
|
||||
Val3,
|
||||
Val4
|
||||
};
|
||||
|
||||
struct Struct1
|
||||
{
|
||||
enum class Enum14
|
||||
enum class Enum12
|
||||
{
|
||||
Val1 = 300,
|
||||
Val2 = 400,
|
||||
Val1 = 4121,
|
||||
Val2 = 4122,
|
||||
Val3,
|
||||
Val4
|
||||
};
|
||||
|
||||
enum Enum15
|
||||
enum Enum13
|
||||
{
|
||||
Val1 = 300,
|
||||
Val2 = 400,
|
||||
Val1 = 4131,
|
||||
Val2 = 4132,
|
||||
Val3,
|
||||
Val4
|
||||
};
|
||||
|
||||
enum class Enum14
|
||||
{
|
||||
Val1 = 4141,
|
||||
Val2 = 4142,
|
||||
Val3,
|
||||
Val4
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue