diff options
author | Hans Wennborg <hans@hanshq.net> | 2016-10-20 20:54:32 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2016-10-20 20:54:32 +0000 |
commit | 2b81f42a76a58a23c358f6d72b65385c0073f94f (patch) | |
tree | 2b40c1656497455ef872d862e0044d3b4958107f /clang/test/CXX/expr/p13.cpp | |
parent | ae818501b7d891512de45c1f7362045c53440a46 (diff) | |
download | bcm5719-llvm-2b81f42a76a58a23c358f6d72b65385c0073f94f.tar.gz bcm5719-llvm-2b81f42a76a58a23c358f6d72b65385c0073f94f.zip |
Revert r284753 "[c++1z] Teach composite pointer type computation how to compute the composite"
It caused PR30749.
llvm-svn: 284778
Diffstat (limited to 'clang/test/CXX/expr/p13.cpp')
-rw-r--r-- | clang/test/CXX/expr/p13.cpp | 45 |
1 files changed, 0 insertions, 45 deletions
diff --git a/clang/test/CXX/expr/p13.cpp b/clang/test/CXX/expr/p13.cpp deleted file mode 100644 index b3489fa0874..00000000000 --- a/clang/test/CXX/expr/p13.cpp +++ /dev/null @@ -1,45 +0,0 @@ -// RUN: %clang_cc1 -std=c++1z -verify %s -fexceptions -fcxx-exceptions - -struct X {}; -struct Y : X {}; - -using A = void (*)() noexcept; -using B = void (*)(); -using C = void (X::*)() noexcept; -using D = void (X::*)(); -using E = void (Y::*)() noexcept; -using F = void (Y::*)(); - -void f(A a, B b, C c, D d, E e, F f, bool k) { - a = k ? a : b; // expected-error {{different exception specifications}} - b = k ? a : b; - - c = k ? c : d; // expected-error {{different exception specifications}} - d = k ? c : d; - - e = k ? c : f; // expected-error {{different exception specifications}} - e = k ? d : e; // expected-error {{different exception specifications}} - f = k ? c : f; - f = k ? d : e; -} - -namespace dynamic_exception_spec { - // Prior to P0012, we had: - // "[...] the target entity shall allow at least the exceptions allowed - // by the source value in the assignment or initialization" - // - // There's really only one way we can coherently apply this to conditional - // expressions: this must hold no matter which branch was taken. - using X = void (*)() throw(int); - using Y = void (*)() throw(float); - using Z = void (*)() throw(int, float); - void g(X x, Y y, Z z, bool k) { - x = k ? X() : Y(); // expected-error {{not superset}} - y = k ? X() : Y(); // expected-error {{not superset}} - z = k ? X() : Y(); - - x = k ? x : y; // expected-error {{not superset}} - y = k ? x : y; // expected-error {{not superset}} - z = k ? x : y; - } -} |