diff --git a/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p4-cxx14.cpp b/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p4-cxx14.cpp --- a/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p4-cxx14.cpp +++ b/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p4-cxx14.cpp @@ -7,7 +7,7 @@ int &c = [] (int &r) -> decltype(auto) { return (r); } (a); int &d = [] (int &r) -> auto & { return r; } (a); int &e = [] (int &r) -> auto { return r; } (a); // expected-error {{cannot bind to a temporary}} -int &f = [] (int r) -> decltype(auto) { return r; } (a); // expected-error {{cannot bind to a temporary}} +int &f = [] (int r) -> decltype(auto) { return r; } (a); // expected-error {{non-const lvalue reference to type 'int' cannot bind to a temporary of type 'int'}} int &g = [] (int r) -> decltype(auto) { return (r); } (a); // expected-warning {{reference to stack}} // cxx2b-error@-1 {{non-const lvalue reference to type 'int' cannot bind to a temporary of type 'int'}} diff --git a/clang/test/CXX/over/over.match/over.match.funcs/over.match.class.deduct/p2.cpp b/clang/test/CXX/over/over.match/over.match.funcs/over.match.class.deduct/p2.cpp --- a/clang/test/CXX/over/over.match/over.match.funcs/over.match.class.deduct/p2.cpp +++ b/clang/test/CXX/over/over.match/over.match.funcs/over.match.class.deduct/p2.cpp @@ -36,7 +36,7 @@ namespace p0702r1 { template struct X { // expected-note {{candidate}} - X(std::initializer_list); // expected-note {{candidate}} + X(std::initializer_list); // expected-note {{candidate template ignored: could not match 'initializer_list' against 'p0702r1::Z'}} }; X xi = {0}; @@ -84,4 +84,4 @@ } -} \ No newline at end of file +} diff --git a/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp b/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp --- a/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp +++ b/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp @@ -336,9 +336,9 @@ void use(NA::A a, NB::B b, NC::C c, ND::D d, NE::E e, NF::F f) { for (auto x : a) {} for (auto x : b) {} - for (auto x : c) {} // expected-error {{no viable 'end' function}} - for (auto x : d) {} // expected-error {{no viable 'begin' function}} - for (auto x : e) {} // expected-error {{no viable 'begin' function}} - for (auto x : f) {} // expected-error {{no viable 'end' function}} + for (auto x : c) {} // expected-error {{invalid range expression of type 'p0962r1::NC::C'; no viable 'end' function available}} + for (auto x : d) {} // expected-error {{invalid range expression of type 'p0962r1::ND::D'; no viable 'begin' function available}} + for (auto x : e) {} // expected-error {{invalid range expression of type 'p0962r1::NE::E'; no viable 'begin' function available}} + for (auto x : f) {} // expected-error {{invalid range expression of type 'p0962r1::NF::F'; no viable 'end' function available}} } } diff --git a/clang/test/CXX/temp/temp.decls/temp.class.spec/p6.cpp b/clang/test/CXX/temp/temp.decls/temp.class.spec/p6.cpp --- a/clang/test/CXX/temp/temp.decls/temp.class.spec/p6.cpp +++ b/clang/test/CXX/temp/temp.decls/temp.class.spec/p6.cpp @@ -38,7 +38,7 @@ template struct Outer { template struct Inner; - template struct Inner {}; // expected-note{{previous}} + template struct Inner {}; // expected-note{{previous declaration of class template partial specialization 'Inner' is here}} template struct Inner {}; // expected-error{{cannot be redeclared}} }; diff --git a/clang/test/CXX/temp/temp.decls/temp.mem/p5.cpp b/clang/test/CXX/temp/temp.decls/temp.mem/p5.cpp --- a/clang/test/CXX/temp/temp.decls/temp.mem/p5.cpp +++ b/clang/test/CXX/temp/temp.decls/temp.mem/p5.cpp @@ -76,7 +76,7 @@ template X0::operator const char*() const; // expected-note{{'X0::operator const char *' requested here}} template X0::operator const int*(); // expected-note{{'X0::operator const int *' requested here}} -template X0::operator float*() const; // expected-error{{explicit instantiation of undefined function template}} +template X0::operator float*() const; // expected-error{{explicit instantiation of undefined function template 'operator type-parameter-0-0 *'}} void test_X0(X0 x0, const X0 &x0c) { x0.operator const int*(); // expected-note{{in instantiation of function template specialization}} diff --git a/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp b/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp --- a/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp +++ b/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp @@ -283,7 +283,9 @@ template void g(U &&...u, T &&...t) {} // expected-note {{candidate}} template - void h(tuple &&...) {} // expected-note 2{{candidate}} + void h(tuple &&...) {} + // expected-note@-1 {{candidate template ignored: could not match 'tuple' against 'int'}} + // expected-note@-2 {{candidate template ignored: substitution failure: deduced incomplete pack <(no value)> for template parameter 'U'}} template struct X { diff --git a/clang/test/SemaCXX/conversion-function.cpp b/clang/test/SemaCXX/conversion-function.cpp --- a/clang/test/SemaCXX/conversion-function.cpp +++ b/clang/test/SemaCXX/conversion-function.cpp @@ -189,7 +189,7 @@ template struct E2 { operator T - * // expected-error{{pointer to a reference}} + * // expected-error{{'operator type-parameter-0-0 *' declared as a pointer to a reference of type 'int &'}} () const; }; diff --git a/clang/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp b/clang/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp --- a/clang/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp +++ b/clang/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp @@ -104,7 +104,9 @@ namespace PR33082 { template void a() { - int arr[] = { [](auto ...K) { (void)I; } ... }; // expected-error {{no viable conversion}} expected-note {{candidate}} + int arr[] = { [](auto ...K) { (void)I; } ... }; + // expected-error@-1 {{no viable conversion}} + // expected-note-re@-2 {{candidate template ignored: could not match 'auto (*)(type-parameter-0-0...){{.*}}' against 'int'}} } template struct Pack {}; diff --git a/clang/test/SemaCXX/cxx1y-generic-lambdas.cpp b/clang/test/SemaCXX/cxx1y-generic-lambdas.cpp --- a/clang/test/SemaCXX/cxx1y-generic-lambdas.cpp +++ b/clang/test/SemaCXX/cxx1y-generic-lambdas.cpp @@ -215,8 +215,9 @@ auto L = [](auto a) -> int { return a; }; // expected-error {{cannot initialize}} int (*fp)(int) = L; int (&fp2)(int) = [](auto a) { return a; }; // expected-error{{non-const lvalue}} - int (&&fp3)(int) = [](auto a) { return a; }; // expected-error{{no viable conversion}}\ - //expected-note{{candidate}} + int (&&fp3)(int) = [](auto a) { return a; }; + // expected-error@-1 {{no viable conversion}} + // expected-note-re@-2 {{candidate template ignored: could not match 'auto (*)(type-parameter-0-0){{.*}}' against 'int (int)'}} using F = int(int); using G = int(void*); @@ -290,8 +291,9 @@ { auto L = [](auto a) ->decltype(a) { print("a = ", a, "\n"); - return [](auto b) ->decltype(a) { //expected-error{{no viable conversion}}\ - //expected-note{{candidate template ignored}} + return [](auto b) ->decltype(a) { + // expected-error@-1 {{no viable conversion}} + // expected-note-re@-2 {{candidate template ignored: could not match 'int (*)(type-parameter-0-0){{.*}}' against 'int'}} print("b = ", b, "\n"); return b; }; diff --git a/clang/test/SemaCXX/cxx1z-decomposition.cpp b/clang/test/SemaCXX/cxx1z-decomposition.cpp --- a/clang/test/SemaCXX/cxx1z-decomposition.cpp +++ b/clang/test/SemaCXX/cxx1z-decomposition.cpp @@ -70,7 +70,7 @@ void bitfield() { struct { int a : 3, : 4, b : 5; } a; auto &[x, y] = a; - auto &[p, q, r] = a; // expected-error {{decomposes into 2 elements, but 3 names were provided}} + auto &[p, q, r] = a; // expected-error-re {{type '(unnamed struct at {{.*}})' decomposes into 2 elements, but 3 names were provided}} } void for_range() { diff --git a/clang/test/SemaCXX/deduced-return-type-cxx14.cpp b/clang/test/SemaCXX/deduced-return-type-cxx14.cpp --- a/clang/test/SemaCXX/deduced-return-type-cxx14.cpp +++ b/clang/test/SemaCXX/deduced-return-type-cxx14.cpp @@ -146,7 +146,7 @@ auto fwd_decl(); // expected-note {{candidate template ignored: could not match 'auto ()' against 'int ()'}} int g = fwd_decl(); - auto (*p)() = f1; // expected-error {{incompatible initializer}} + auto (*p)() = f1; // expected-error {{variable 'p' with type 'auto (*)()' has incompatible initializer of type ''}} auto (*q)() = f1; // ok typedef decltype(f2(1.2)) dbl; // cxx14_20-note {{previous}} diff --git a/clang/test/SemaCXX/recovery-expr-type.cpp b/clang/test/SemaCXX/recovery-expr-type.cpp --- a/clang/test/SemaCXX/recovery-expr-type.cpp +++ b/clang/test/SemaCXX/recovery-expr-type.cpp @@ -133,7 +133,7 @@ template S(T t) -> S; void baz() { - bar(S(123)); // expected-error {{no matching conversion}} + bar(S(123)); // expected-error {{no matching conversion for functional-style cast from 'int' to 'test11::S<>'}} } } // namespace test11 diff --git a/clang/test/SemaCXX/redeclared-alias-template.cpp b/clang/test/SemaCXX/redeclared-alias-template.cpp --- a/clang/test/SemaCXX/redeclared-alias-template.cpp +++ b/clang/test/SemaCXX/redeclared-alias-template.cpp @@ -5,7 +5,7 @@ template using A = T1; // expected-error {{too many template parameters in template redeclaration}} template using B = T1; // expected-note {{previous}} -template using B = T1; // expected-error {{type alias template redefinition with different types}} +template using B = T1; // expected-error {{type alias template redefinition with different types ('T1' (aka 'type-parameter-0-1') vs 'T1' (aka 'type-parameter-0-0'))}} template struct S; diff --git a/clang/test/SemaTemplate/instantiate-var-template.cpp b/clang/test/SemaTemplate/instantiate-var-template.cpp --- a/clang/test/SemaTemplate/instantiate-var-template.cpp +++ b/clang/test/SemaTemplate/instantiate-var-template.cpp @@ -31,7 +31,7 @@ static_assert(b == 1, ""); // expected-note {{in instantiation of}} expected-error {{not an integral constant}} template void f() { - static_assert(a == 0, ""); // expected-error {{static_assert failed}} + static_assert(a == 0, ""); // expected-error {{static_assert failed due to requirement 'a == 0'}} } } diff --git a/clang/test/SemaTemplate/temp_arg_nontype.cpp b/clang/test/SemaTemplate/temp_arg_nontype.cpp --- a/clang/test/SemaTemplate/temp_arg_nontype.cpp +++ b/clang/test/SemaTemplate/temp_arg_nontype.cpp @@ -437,7 +437,7 @@ template class X> struct A { template N> struct B; // expected-note 2{{here}} - template struct B {}; // expected-error {{specializes a template parameter with dependent type 'Y'}} + template struct B {}; // expected-error {{non-type template argument specializes a template parameter with dependent type 'Y' (aka 'type-parameter-0-0 *')}} }; A::B ax; A::B ay; // expected-error {{undefined}} expected-note {{instantiation of}} diff --git a/clang/test/SemaTemplate/temp_arg_nontype_cxx1z.cpp b/clang/test/SemaTemplate/temp_arg_nontype_cxx1z.cpp --- a/clang/test/SemaTemplate/temp_arg_nontype_cxx1z.cpp +++ b/clang/test/SemaTemplate/temp_arg_nontype_cxx1z.cpp @@ -43,7 +43,7 @@ typedef A d; typedef A d; typedef A> d; - typedef A> e; // expected-error {{is not implicitly convertible}} + typedef A> e; // expected-error {{value of type '' is not implicitly convertible to 'void (*)()'}} typedef A x; // expected-error {{not allowed in a converted constant}} typedef A y;