summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CXX/class/class.mem/p2.cpp27
-rw-r--r--clang/test/CXX/expr/expr.prim/expr.prim.general/p3-0x.cpp10
-rw-r--r--clang/test/CXX/temp/temp.decls/temp.variadic/p5.cpp2
-rw-r--r--clang/test/SemaCXX/dependent-noexcept-unevaluated.cpp2
-rw-r--r--clang/test/SemaCXX/implicit-exception-spec.cpp10
5 files changed, 41 insertions, 10 deletions
diff --git a/clang/test/CXX/class/class.mem/p2.cpp b/clang/test/CXX/class/class.mem/p2.cpp
index 09040d859c8..0a823f4c1f0 100644
--- a/clang/test/CXX/class/class.mem/p2.cpp
+++ b/clang/test/CXX/class/class.mem/p2.cpp
@@ -29,3 +29,30 @@ namespace test2 {
A<int> x;
};
}
+
+namespace test3 {
+ struct A {
+ struct B {
+ void f() throw(A);
+ void g() throw(B);
+ };
+
+ void f() throw(A);
+ void g() throw(B);
+ };
+
+ template<typename T>
+ struct A2 {
+ struct B {
+ void f1() throw(A2);
+ void f2() throw(A2<T>);
+ void g() throw(B);
+ };
+
+ void f1() throw(A2);
+ void f2() throw(A2<T>);
+ void g() throw(B);
+ };
+
+ template struct A2<int>;
+}
diff --git a/clang/test/CXX/expr/expr.prim/expr.prim.general/p3-0x.cpp b/clang/test/CXX/expr/expr.prim/expr.prim.general/p3-0x.cpp
index f00e358f3a6..ad4f4064c25 100644
--- a/clang/test/CXX/expr/expr.prim/expr.prim.general/p3-0x.cpp
+++ b/clang/test/CXX/expr/expr.prim/expr.prim.general/p3-0x.cpp
@@ -88,3 +88,13 @@ namespace Static {
X2<int>().g(0);
}
}
+
+namespace PR12564 {
+ struct Base {
+ void bar(Base&) {}
+ };
+
+ struct Derived : Base {
+ void foo(Derived& d) noexcept(noexcept(d.bar(d))) {}
+ };
+}
diff --git a/clang/test/CXX/temp/temp.decls/temp.variadic/p5.cpp b/clang/test/CXX/temp/temp.decls/temp.variadic/p5.cpp
index 6955219e7ae..726e22227ed 100644
--- a/clang/test/CXX/temp/temp.decls/temp.variadic/p5.cpp
+++ b/clang/test/CXX/temp/temp.decls/temp.variadic/p5.cpp
@@ -164,7 +164,7 @@ template<typename T, typename... Types>
// FIXME: this should test that the diagnostic reads "type contains..."
struct alignas(Types) TestUnexpandedDecls : T{ // expected-error{{expression contains unexpanded parameter pack 'Types'}}
void member_function(Types); // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
- void member_function () throw(Types); // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
+ void member_function () throw(Types); // expected-error{{exception type contains unexpanded parameter pack 'Types'}}
operator Types() const; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
Types data_member; // expected-error{{data member type contains unexpanded parameter pack 'Types'}}
static Types static_data_member; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
diff --git a/clang/test/SemaCXX/dependent-noexcept-unevaluated.cpp b/clang/test/SemaCXX/dependent-noexcept-unevaluated.cpp
index 8066b859f18..fad8d0918d5 100644
--- a/clang/test/SemaCXX/dependent-noexcept-unevaluated.cpp
+++ b/clang/test/SemaCXX/dependent-noexcept-unevaluated.cpp
@@ -23,7 +23,7 @@ struct array
{
T data[N];
- void swap(array& a) noexcept(noexcept(swap(declval<T&>(), declval<T&>())));
+ void swap(array& a) noexcept(noexcept(::swap(declval<T&>(), declval<T&>())));
};
struct DefaultOnly
diff --git a/clang/test/SemaCXX/implicit-exception-spec.cpp b/clang/test/SemaCXX/implicit-exception-spec.cpp
index 786e8f4a148..143d9f7cc87 100644
--- a/clang/test/SemaCXX/implicit-exception-spec.cpp
+++ b/clang/test/SemaCXX/implicit-exception-spec.cpp
@@ -39,20 +39,14 @@ namespace InClassInitializers {
bool z = noexcept(Nested::Inner());
}
-// FIXME:
-// The same problem arises in delayed parsing of exception specifications,
-// which clang does not yet support.
namespace ExceptionSpecification {
- struct Nested { // expected-note {{not complete}}
+ struct Nested {
struct T {
- T() noexcept(!noexcept(Nested())); // expected-error {{incomplete type}}
+ T() noexcept(!noexcept(Nested())); // expected-error{{exception specification is not available until end of class definition}}
} t;
};
}
-// FIXME:
-// The same problem arises in delayed parsing of default arguments,
-// which clang does not yet support.
namespace DefaultArgument {
struct Default {
struct T {
OpenPOWER on IntegriCloud