diff options
-rw-r--r-- | Examples/test-suite/cpp11_default_delete.i | 9 | ||||
-rw-r--r-- | Examples/test-suite/cpp11_noexcept.i | 5 | ||||
-rw-r--r-- | Source/CParse/parser.y | 7 |
3 files changed, 19 insertions, 2 deletions
diff --git a/Examples/test-suite/cpp11_default_delete.i b/Examples/test-suite/cpp11_default_delete.i index 49a677060..79c02cddc 100644 --- a/Examples/test-suite/cpp11_default_delete.i +++ b/Examples/test-suite/cpp11_default_delete.i @@ -69,4 +69,13 @@ struct moveonly { moveonly& operator=(moveonly&&) = default; ~moveonly() = default; }; + +struct ConstructorThrow { + ConstructorThrow() throw() = default; + ConstructorThrow(const ConstructorThrow&) throw() = delete; + ConstructorThrow(ConstructorThrow&&) throw() = delete; + ConstructorThrow& operator=(const ConstructorThrow&) throw() = delete; + ~ConstructorThrow() throw() = default; +}; + %} diff --git a/Examples/test-suite/cpp11_noexcept.i b/Examples/test-suite/cpp11_noexcept.i index 27476fa70..6fed5b8df 100644 --- a/Examples/test-suite/cpp11_noexcept.i +++ b/Examples/test-suite/cpp11_noexcept.i @@ -37,8 +37,9 @@ struct NoExceptAbstract { }; struct NoExceptDefaultDelete { -// NoExceptDefaultDelete() noexcept = default; -// NoExceptDefaultDelete(const NoExceptDefaultDelete&) noexcept = delete; + template<typename T> NoExceptDefaultDelete(T) noexcept = delete; + NoExceptDefaultDelete() noexcept = default; + NoExceptDefaultDelete(const NoExceptDefaultDelete&) noexcept = delete; NoExceptDefaultDelete(NoExceptDefaultDelete&&) = delete; NoExceptDefaultDelete& operator=(const NoExceptDefaultDelete&) = delete; ~NoExceptDefaultDelete() noexcept = default; diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y index bb1b5c1cc..caac88e4d 100644 --- a/Source/CParse/parser.y +++ b/Source/CParse/parser.y @@ -6780,6 +6780,13 @@ ctor_end : cpp_const ctor_initializer SEMI { $$.throwf = 0; $$.nexcept = 0; } + | exception_specification EQUAL default_delete SEMI { + $$.have_parms = 0; + $$.defarg = $3.val; + $$.throws = $1.throws; + $$.throwf = $1.throwf; + $$.nexcept = $1.nexcept; + } ; ctor_initializer : COLON mem_initializer_list |