[clang] 21b2f30 - [clang][NFC] Improve formatting in C++ DR tests
Vlad Serebrennikov via cfe-commits
cfe-commits at lists.llvm.org
Sat Jan 13 15:27:59 PST 2024
Author: Vlad Serebrennikov
Date: 2024-01-14T02:27:52+03:00
New Revision: 21b2f305c90c99066ce251e7c63b411bf1a9e765
URL: https://github.com/llvm/llvm-project/commit/21b2f305c90c99066ce251e7c63b411bf1a9e765
DIFF: https://github.com/llvm/llvm-project/commit/21b2f305c90c99066ce251e7c63b411bf1a9e765.diff
LOG: [clang][NFC] Improve formatting in C++ DR tests
Refactoring started in https://github.com/llvm/llvm-project/pull/73879 has unfortunately missed to add indentation to `expected-note` directives. This patch is a follow-up to that refactoring.
Added:
Modified:
clang/test/CXX/drs/dr0xx.cpp
clang/test/CXX/drs/dr1xx.cpp
clang/test/CXX/drs/dr26xx.cpp
clang/test/CXX/drs/dr2xx.cpp
clang/test/CXX/drs/dr3xx.cpp
clang/test/CXX/drs/dr4xx.cpp
clang/test/CXX/drs/dr6xx.cpp
Removed:
################################################################################
diff --git a/clang/test/CXX/drs/dr0xx.cpp b/clang/test/CXX/drs/dr0xx.cpp
index e5f675fb448986..5959f0a0c8dd65 100644
--- a/clang/test/CXX/drs/dr0xx.cpp
+++ b/clang/test/CXX/drs/dr0xx.cpp
@@ -30,7 +30,7 @@ namespace dr1 { // dr1: no
namespace X {
void z(int = 1);
// expected-error at -1 {{redefinition of default argument}}
- // expected-note@#dr1-z {{previous definition is here}}
+ // expected-note@#dr1-z {{previous definition is here}}
}
void i(int = 1);
@@ -56,7 +56,7 @@ namespace dr3 { // dr3: yes
template void f(int);
template<> struct A<int> {};
// expected-error at -1 {{explicit specialization of 'dr3::A<int>' after instantiation}}
- // expected-note@#dr3-f-T {{implicit instantiation first required here}}
+ // expected-note@#dr3-f-T {{implicit instantiation first required here}}
}
namespace dr4 { // dr4: 2.8
@@ -66,7 +66,7 @@ namespace dr4 { // dr4: 2.8
void dr4_g(int) {} // #dr4-g-int
void dr4_g(float) {}
// expected-error at -1 {{conflicting types for 'dr4_g'}}
- // expected-note@#dr4-g-int {{previous definition is here}}
+ // expected-note@#dr4-g-int {{previous definition is here}}
}
}
@@ -99,7 +99,7 @@ namespace dr7 { // dr7: 3.4
class X { ~X(); }; // #dr7-X
class Y : X { ~Y() {} };
// expected-error at -1 {{base class 'X' has private destructor}}
- // expected-note@#dr7-X {{implicitly declared private here}}
+ // expected-note@#dr7-X {{implicitly declared private here}}
namespace PR16370 { // This regressed the first time DR7 was fixed.
struct S1 { virtual ~S1(); };
@@ -137,8 +137,8 @@ namespace dr9 { // dr9: 2.8
} n;
int R1() { return n.m; }
// expected-error at -1 {{'m' is a protected member of 'dr9::B'}}
- // expected-note@#dr9-N {{constrained by protected inheritance here}}
- // expected-note@#dr9-m {{member is declared here}}
+ // expected-note@#dr9-N {{constrained by protected inheritance here}}
+ // expected-note@#dr9-m {{member is declared here}}
int R2() { return n.m; }
}
@@ -211,15 +211,15 @@ namespace dr14 { // dr14: 3.4
T t; // ok, same type both times
U u;
// expected-error at -1 {{reference to 'U' is ambiguous}}
- // expected-note@#dr14-X-U {{candidate found by name lookup is 'dr14::X::U'}}
- // expected-note@#dr14-Y-U {{candidate found by name lookup is 'dr14::Y::U'}}
+ // expected-note@#dr14-X-U {{candidate found by name lookup is 'dr14::X::U'}}
+ // expected-note@#dr14-Y-U {{candidate found by name lookup is 'dr14::Y::U'}}
}
namespace dr15 { // dr15: yes
template<typename T> void f(int); // #dr15-f-decl-first
template<typename T> void f(int = 0);
// expected-error at -1 {{default arguments cannot be added to a function template that has already been declared}}
- // expected-note@#dr15-f-decl-first {{previous template declaration is here}}
+ // expected-note@#dr15-f-decl-first {{previous template declaration is here}}
}
namespace dr16 { // dr16: 2.8
@@ -232,8 +232,8 @@ namespace dr16 { // dr16: 2.8
void g() {
f();
// expected-error at -1 {{'f' is a private member of 'dr16::A'}}
- // expected-note@#dr16-B {{constrained by implicitly private inheritance here}}
- // expected-note@#dr16-A-f-decl {{member is declared here}}
+ // expected-note@#dr16-B {{constrained by implicitly private inheritance here}}
+ // expected-note@#dr16-A-f-decl {{member is declared here}}
A::f(); // #dr16-A-f-call
// expected-error@#dr16-A-f-call {{'A' is a private member of 'dr16::A'}}
// expected-note@#dr16-B {{constrained by implicitly private inheritance here}}
@@ -269,8 +269,8 @@ namespace dr19 { // dr19: 3.1
struct D : B {
int get1() { return c.n; }
// expected-error at -1 {{'n' is a protected member of 'dr19::A'}}
- // expected-note@#dr19-B {{constrained by protected inheritance here}}
- // expected-note@#dr19-n {{member is declared here}}
+ // expected-note@#dr19-B {{constrained by protected inheritance here}}
+ // expected-note@#dr19-n {{member is declared here}}
int get2() { return ((A&)c).n; } // ok, A is an accessible base of B from here
};
}
@@ -285,7 +285,7 @@ namespace dr20 { // dr20: 2.8
X &f();
X x = f();
// expected-error at -1 {{calling a private constructor of class 'dr20::X'}}
- // expected-note@#dr20-X-ctor {{declared private here}}
+ // expected-note@#dr20-X-ctor {{declared private here}}
}
namespace dr21 { // dr21: 3.4
@@ -310,8 +310,8 @@ namespace dr23 { // dr23: yes
template<typename T> void f(T, int); // #dr23-f-T-int
void g() { f(0, 0); }
// expected-error at -1 {{call to 'f' is ambiguous}}
- // expected-note@#dr23-f-T-T {{candidate function [with T = int]}}
- // expected-note@#dr23-f-T-int {{candidate function [with T = int]}}
+ // expected-note@#dr23-f-T-T {{candidate function [with T = int]}}
+ // expected-note@#dr23-f-T-int {{candidate function [with T = int]}}
}
// dr24: na
@@ -320,25 +320,25 @@ namespace dr25 { // dr25: yes
struct A {
void f() throw(int);
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
};
void (A::*f)() throw (int);
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
void (A::*g)() throw () = f;
// cxx98-14-error at -1 {{target exception specification is not superset of source}}
// since-cxx17-error at -2 {{
diff erent exception specifications}}
void (A::*g2)() throw () = 0;
void (A::*h)() throw (int, char) = f;
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
void (A::*i)() throw () = &A::f;
// cxx98-14-error at -1 {{target exception specification is not superset of source}}
// since-cxx17-error at -2 {{
diff erent exception specifications}}
void (A::*i2)() throw () = 0;
void (A::*j)() throw (int, char) = &A::f;
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
void x() {
g2 = f;
// cxx98-14-error at -1 {{target exception specification is not superset of source}}
@@ -367,7 +367,7 @@ namespace dr26 { // dr26: yes
static C &f();
C(const C &, C = f());
// expected-error at -1 {{recursive evaluation of default argument}}
- // expected-note at -2 {{default argument used here}}
+ // expected-note at -2 {{default argument used here}}
};
}
@@ -384,29 +384,29 @@ namespace dr29 { // dr29: 3.4
extern "C++" void g0_cxx() { void dr29_f0(); }
extern "C" void g0_c() { void dr29_f0(); }
// expected-error at -1 {{declaration of 'dr29_f0' has a
diff erent language linkage}}
- // expected-note@#dr29-f0 {{previous declaration is here}}
+ // expected-note@#dr29-f0 {{previous declaration is here}}
extern "C" void dr29_f1(); // #dr29-f1
void g1() { void dr29_f1(); }
extern "C" void g1_c() { void dr29_f1(); }
extern "C++" void g1_cxx() { void dr29_f1(); }
// expected-error at -1 {{declaration of 'dr29_f1' has a
diff erent language linkage}}
- // expected-note@#dr29-f1 {{previous declaration is here}}
+ // expected-note@#dr29-f1 {{previous declaration is here}}
void g2() { void dr29_f2(); } // #dr29-f2
extern "C" void dr29_f2();
// expected-error at -1 {{declaration of 'dr29_f2' has a
diff erent language linkage}}
- // expected-note@#dr29-f2 {{previous declaration is here}}
+ // expected-note@#dr29-f2 {{previous declaration is here}}
extern "C" void g3() { void dr29_f3(); } // #dr29-f3
extern "C++" void dr29_f3();
// expected-error at -1 {{declaration of 'dr29_f3' has a
diff erent language linkage}}
- // expected-note@#dr29-f3 {{previous declaration is here}}
+ // expected-note@#dr29-f3 {{previous declaration is here}}
extern "C++" void g4() { void dr29_f4(); } // #dr29-f4
extern "C" void dr29_f4();
// expected-error at -1 {{declaration of 'dr29_f4' has a
diff erent language linkage}}
- // expected-note@#dr29-f4 {{previous declaration is here}}
+ // expected-note@#dr29-f4 {{previous declaration is here}}
extern "C" void g5();
extern "C++" void dr29_f5();
@@ -425,7 +425,7 @@ namespace dr29 { // dr29: 3.4
extern "C" void g7() {
void dr29_f7();
// expected-error at -1 {{declaration of 'dr29_f7' has a
diff erent language linkage}}
- // expected-note@#dr29-f7 {{previous declaration is here}}
+ // expected-note@#dr29-f7 {{previous declaration is here}}
}
extern "C++" void g8();
@@ -433,7 +433,7 @@ namespace dr29 { // dr29: 3.4
extern "C++" void g8() {
void dr29_f8();
// expected-error at -1 {{declaration of 'dr29_f8' has a
diff erent language linkage}}
- // expected-note@#dr29-f8 {{previous declaration is here}}
+ // expected-note@#dr29-f8 {{previous declaration is here}}
}
}
@@ -459,7 +459,7 @@ namespace dr31 { // dr31: 2.8
// and even though we allocated the X using ::operator delete).
X *p = new X;
// expected-error at -1 {{'operator delete' is a private member of 'dr31::X'}}
- // expected-note@#dr31-delete {{declared private here}}
+ // expected-note@#dr31-delete {{declared private here}}
}
// dr32: na
@@ -471,8 +471,8 @@ namespace dr33 { // dr33: 9
template<typename Z> Z g(Y::T);
void h() { f(&g); }
// expected-error at -1 {{call to 'f' is ambiguous}}
- // expected-note@#dr33-f-S {{candidate function}}
- // expected-note@#dr33-f-T {{candidate function}}
+ // expected-note@#dr33-f-S {{candidate function}}
+ // expected-note@#dr33-f-T {{candidate function}}
template<typename T> void t(X::S);
template<typename T, typename U = void> void u(X::S);
@@ -543,22 +543,22 @@ namespace example2 {
using B::i; // #dr36-ex2-B-i-first
using B::i;
// expected-error at -1 {{redeclaration of using declaration}}
- // expected-note@#dr36-ex2-B-i-first {{previous using declaration}}
+ // expected-note@#dr36-ex2-B-i-first {{previous using declaration}}
using C::i; // #dr36-ex2-C-i-first
using C::i;
// expected-error at -1 {{redeclaration of using declaration}}
- // expected-note@#dr36-ex2-C-i-first {{previous using declaration}}
+ // expected-note@#dr36-ex2-C-i-first {{previous using declaration}}
using B::j; // #dr36-ex2-B-j-first
using B::j;
// expected-error at -1 {{redeclaration of using declaration}}
- // expected-note@#dr36-ex2-B-j-first {{previous using declaration}}
+ // expected-note@#dr36-ex2-B-j-first {{previous using declaration}}
using C::j; // #dr36-ex2-C-j-first
using C::j;
// expected-error at -1 {{redeclaration of using declaration}}
- // expected-note@#dr36-ex2-C-j-first {{previous using declaration}}
+ // expected-note@#dr36-ex2-C-j-first {{previous using declaration}}
};
}
@@ -581,22 +581,22 @@ namespace example3 {
using B<T>::i; // #dr36-ex3-B-i-first
using B<T>::i;
// expected-error at -1 {{redeclaration of using declaration}}
- // expected-note@#dr36-ex3-B-i-first {{previous using declaration}}
+ // expected-note@#dr36-ex3-B-i-first {{previous using declaration}}
using C<T>::i; // #dr36-ex3-C-i-first
using C<T>::i;
// expected-error at -1 {{redeclaration of using declaration}}
- // expected-note@#dr36-ex3-C-i-first {{previous using declaration}}
+ // expected-note@#dr36-ex3-C-i-first {{previous using declaration}}
using B<T>::j; // #dr36-ex3-B-j-first
using B<T>::j;
// expected-error at -1 {{redeclaration of using declaration}}
- // expected-note@#dr36-ex3-B-j-first {{previous using declaration}}
+ // expected-note@#dr36-ex3-B-j-first {{previous using declaration}}
using C<T>::j; // #dr36-ex3-C-j-first
using C<T>::j;
// expected-error at -1 {{redeclaration of using declaration}}
- // expected-note@#dr36-ex3-C-j-first {{previous using declaration}}
+ // expected-note@#dr36-ex3-C-j-first {{previous using declaration}}
};
}
namespace example4 {
@@ -610,7 +610,7 @@ namespace example4 {
using E<T>::k; // #dr36-E-k-first
using E<T>::k;
// expected-error at -1 {{redeclaration of using declaration}}
- // expected-note@#dr36-E-k-first {{previous using declaration}}
+ // expected-note@#dr36-E-k-first {{previous using declaration}}
};
}
}
@@ -656,14 +656,14 @@ namespace dr39 { // dr39: no
struct dr39::example2::C -> B -> A}} */
int &x = c.x(0);
// expected-error at -1 {{member 'x' found in multiple base classes of
diff erent types}}
- // expected-note@#dr39-A-x-decl {{member found by ambiguous name lookup}}
- // expected-note@#dr39-using-A-x {{member found by ambiguous name lookup}}
+ // expected-note@#dr39-A-x-decl {{member found by ambiguous name lookup}}
+ // expected-note@#dr39-using-A-x {{member found by ambiguous name lookup}}
// FIXME: This is valid, because we find the same static data member either way.
int &y = c.y(0);
// expected-error at -1 {{member 'y' found in multiple base classes of
diff erent types}}
- // expected-note@#dr39-A-y-decl {{member found by ambiguous name lookup}}
- // expected-note@#dr39-using-A-y {{member found by ambiguous name lookup}}
+ // expected-note@#dr39-A-y-decl {{member found by ambiguous name lookup}}
+ // expected-note@#dr39-using-A-y {{member found by ambiguous name lookup}}
int &z = c.z(0);
}
@@ -684,7 +684,7 @@ namespace dr39 { // dr39: no
{{non-static member 'n' found in multiple base-class subobjects of type 'A':
struct dr39::example4::D -> B -> A
struct dr39::example4::D -> C -> A}} */
- // expected-note@#dr39-ex4-A-n {{member found by ambiguous name lookup}}
+ // expected-note@#dr39-ex4-A-n {{member found by ambiguous name lookup}}
}
namespace PR5916 {
@@ -698,7 +698,7 @@ namespace dr39 { // dr39: no
{{non-static member 'n' found in multiple base-class subobjects of type 'A':
struct dr39::PR5916::D -> B -> A
struct dr39::PR5916::D -> C -> A}} */
- // expected-note@#dr39-A-n {{member found by ambiguous name lookup}}
+ // expected-note@#dr39-A-n {{member found by ambiguous name lookup}}
// expected-error@#dr39-sizeof {{unknown type name}}
#if __cplusplus >= 201103L
@@ -707,7 +707,7 @@ namespace dr39 { // dr39: no
{{non-static member 'n' found in multiple base-class subobjects of type 'A':
struct dr39::PR5916::D -> B -> A
struct dr39::PR5916::D -> C -> A}} */
- // expected-note@#dr39-A-n {{member found by ambiguous name lookup}}
+ // expected-note@#dr39-A-n {{member found by ambiguous name lookup}}
#endif
}
}
@@ -750,8 +750,8 @@ namespace dr47 { // dr47: sup 329
template<typename T> struct A {
friend void f() { T t; } // #dr47-f
// expected-error at -1 {{redefinition of 'f'}}
- // expected-note@#dr47-b {{in instantiation of template class 'dr47::A<float>' requested here}}
- // expected-note@#dr47-f {{previous definition is here}}
+ // expected-note@#dr47-b {{in instantiation of template class 'dr47::A<float>' requested here}}
+ // expected-note@#dr47-f {{previous definition is here}}
};
A<int> a;
A<float> b; // #dr47-b
@@ -811,7 +811,7 @@ namespace dr50 { // dr50: yes
X *t = reinterpret_cast<X*>(p);
X *u = dynamic_cast<X*>(p);
// expected-error at -1 {{'dr50::X' is an incomplete type}}
- // expected-note@#dr50-X {{forward declaration of 'dr50::X'}}
+ // expected-note@#dr50-X {{forward declaration of 'dr50::X'}}
}
namespace dr51 { // dr51: 2.8
@@ -848,22 +848,22 @@ namespace dr54 { // dr54: 2.8
A &sab = static_cast<A&>(b);
// expected-error at -1 {{cannot cast 'struct B' to its private base class 'A'}}
- // expected-note@#dr54-B {{declared private here}}
+ // expected-note@#dr54-B {{declared private here}}
A *spab = static_cast<A*>(&b);
// expected-error at -1 {{cannot cast 'struct B' to its private base class 'A'}}
- // expected-note@#dr54-B {{declared private here}}
+ // expected-note@#dr54-B {{declared private here}}
int A::*smab = static_cast<int A::*>(&B::b);
// expected-error at -1 {{cannot cast 'dr54::B' to its private base class 'dr54::A'}}
- // expected-note@#dr54-B {{declared private here}}
+ // expected-note@#dr54-B {{declared private here}}
B &sba = static_cast<B&>(a);
// expected-error at -1 {{cannot cast private base class 'dr54::A' to 'dr54::B'}}
- // expected-note@#dr54-B {{declared private here}}
+ // expected-note@#dr54-B {{declared private here}}
B *spba = static_cast<B*>(&a);
// expected-error at -1 {{cannot cast private base class 'dr54::A' to 'dr54::B'}}
- // expected-note@#dr54-B {{declared private here}}
+ // expected-note@#dr54-B {{declared private here}}
int B::*smba = static_cast<int B::*>(&A::a);
// expected-error at -1 {{cannot cast private base class 'dr54::A' to 'dr54::B'}}
- // expected-note@#dr54-B {{declared private here}}
+ // expected-note@#dr54-B {{declared private here}}
V &svb = static_cast<V&>(b);
V *spvb = static_cast<V*>(&b);
@@ -905,14 +905,14 @@ namespace dr56 { // dr56: yes
typedef int T; // #dr56-typedef-int-T-first
typedef int T;
// expected-error at -1 {{redefinition of 'T'}}
- // expected-note@#dr56-typedef-int-T-first {{previous definition is here}}
+ // expected-note@#dr56-typedef-int-T-first {{previous definition is here}}
};
struct B {
struct X;
typedef X X; // #dr56-typedef-X-X-first
typedef X X;
// expected-error at -1 {{redefinition of 'X'}}
- // expected-note@#dr56-typedef-X-X-first {{previous definition is here}}
+ // expected-note@#dr56-typedef-X-X-first {{previous definition is here}}
};
}
@@ -939,42 +939,42 @@ namespace dr59 { // dr59: yes
A a3 = convert_to<const A>();
A a4 = convert_to<const volatile A>();
// cxx98-14-error at -1 {{no viable constructor copying variable of type 'const volatile dr59::A'}}
- // cxx98-14-note@#dr59-A {{candidate constructor (the implicit copy constructor) not viable: 1st argument ('const volatile dr59::A') would lose volatile qualifier}}
- // cxx11-14-note@#dr59-A {{candidate constructor (the implicit move constructor) not viable: 1st argument ('const volatile dr59::A') would lose const and volatile qualifiers}}
- // cxx98-14-note@#dr59-A {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
+ // cxx98-14-note@#dr59-A {{candidate constructor (the implicit copy constructor) not viable: 1st argument ('const volatile dr59::A') would lose volatile qualifier}}
+ // cxx11-14-note@#dr59-A {{candidate constructor (the implicit move constructor) not viable: 1st argument ('const volatile dr59::A') would lose const and volatile qualifiers}}
+ // cxx98-14-note@#dr59-A {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
A a5 = convert_to<const volatile A&>();
// expected-error at -1 {{no viable constructor copying variable of type 'const volatile dr59::A'}}
- // expected-note@#dr59-A {{candidate constructor (the implicit copy constructor) not viable: 1st argument ('const volatile dr59::A') would lose volatile qualifier}}
- // since-cxx11-note@#dr59-A {{candidate constructor (the implicit move constructor) not viable: 1st argument ('const volatile dr59::A') would lose const and volatile qualifiers}}
- // expected-note@#dr59-A {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
+ // expected-note@#dr59-A {{candidate constructor (the implicit copy constructor) not viable: 1st argument ('const volatile dr59::A') would lose volatile qualifier}}
+ // since-cxx11-note@#dr59-A {{candidate constructor (the implicit move constructor) not viable: 1st argument ('const volatile dr59::A') would lose const and volatile qualifiers}}
+ // expected-note@#dr59-A {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
B b1 = convert_to<B>();
B b2 = convert_to<B&>();
B b3 = convert_to<const B>();
B b4 = convert_to<const volatile B>();
// cxx98-14-error at -1 {{no viable constructor copying variable of type 'const volatile dr59::B'}}
- // cxx98-14-note@#dr59-B {{candidate constructor (the implicit copy constructor) not viable: 1st argument ('const volatile dr59::B') would lose volatile qualifier}}
- // cxx11-14-note@#dr59-B {{candidate constructor (the implicit move constructor) not viable: 1st argument ('const volatile dr59::B') would lose const and volatile qualifiers}}
- // cxx98-14-note@#dr59-B {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
+ // cxx98-14-note@#dr59-B {{candidate constructor (the implicit copy constructor) not viable: 1st argument ('const volatile dr59::B') would lose volatile qualifier}}
+ // cxx11-14-note@#dr59-B {{candidate constructor (the implicit move constructor) not viable: 1st argument ('const volatile dr59::B') would lose const and volatile qualifiers}}
+ // cxx98-14-note@#dr59-B {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
B b5 = convert_to<const volatile B&>();
// expected-error at -1 {{no viable constructor copying variable of type 'const volatile dr59::B'}}
- // expected-note@#dr59-B {{candidate constructor (the implicit copy constructor) not viable: 1st argument ('const volatile dr59::B') would lose volatile qualifier}}
- // since-cxx11-note@#dr59-B {{candidate constructor (the implicit move constructor) not viable: 1st argument ('const volatile dr59::B') would lose const and volatile qualifiers}}
- // expected-note@#dr59-B {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
+ // expected-note@#dr59-B {{candidate constructor (the implicit copy constructor) not viable: 1st argument ('const volatile dr59::B') would lose volatile qualifier}}
+ // since-cxx11-note@#dr59-B {{candidate constructor (the implicit move constructor) not viable: 1st argument ('const volatile dr59::B') would lose const and volatile qualifiers}}
+ // expected-note@#dr59-B {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
A c1 = convert_to<B>();
A c2 = convert_to<B&>();
A c3 = convert_to<const B>();
A c4 = convert_to<const volatile B>();
// expected-error at -1 {{no viable constructor copying variable of type 'const volatile dr59::B'}}
- // expected-note@#dr59-A {{candidate constructor (the implicit copy constructor) not viable: no known conversion from 'const volatile dr59::B' to 'const A &' for 1st argument}}
- // since-cxx11-note@#dr59-A {{candidate constructor (the implicit move constructor) not viable: no known conversion from 'const volatile dr59::B' to 'A &&' for 1st argument}}
- // expected-note@#dr59-A {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
+ // expected-note@#dr59-A {{candidate constructor (the implicit copy constructor) not viable: no known conversion from 'const volatile dr59::B' to 'const A &' for 1st argument}}
+ // since-cxx11-note@#dr59-A {{candidate constructor (the implicit move constructor) not viable: no known conversion from 'const volatile dr59::B' to 'A &&' for 1st argument}}
+ // expected-note@#dr59-A {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
A c5 = convert_to<const volatile B&>();
// expected-error at -1 {{no viable constructor copying variable of type 'const volatile dr59::B'}}
- // expected-note@#dr59-A {{candidate constructor (the implicit copy constructor) not viable: no known conversion from 'const volatile dr59::B' to 'const A &' for 1st argument}}
- // since-cxx11-note@#dr59-A {{candidate constructor (the implicit move constructor) not viable: no known conversion from 'const volatile dr59::B' to 'A &&' for 1st argument}}
- // expected-note@#dr59-A {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
+ // expected-note@#dr59-A {{candidate constructor (the implicit copy constructor) not viable: no known conversion from 'const volatile dr59::B' to 'const A &' for 1st argument}}
+ // since-cxx11-note@#dr59-A {{candidate constructor (the implicit move constructor) not viable: no known conversion from 'const volatile dr59::B' to 'A &&' for 1st argument}}
+ // expected-note@#dr59-A {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
int n1 = convert_to<int>();
int n2 = convert_to<int&>();
@@ -1028,19 +1028,19 @@ namespace dr62 { // dr62: 2.9
X<NoNameForLinkagePtr> x2;
// cxx98-error at -1 {{template argument uses unnamed type}}
- // cxx98-note@#dr62-unnamed {{unnamed type used in template argument was declared here}}
+ // cxx98-note@#dr62-unnamed {{unnamed type used in template argument was declared here}}
X<const NoNameForLinkagePtr> x3;
// cxx98-error at -1 {{template argument uses unnamed type}}
- // cxx98-note@#dr62-unnamed {{unnamed type used in template argument was declared here}}
+ // cxx98-note@#dr62-unnamed {{unnamed type used in template argument was declared here}}
NoNameForLinkagePtr p1 = get<NoNameForLinkagePtr>();
// cxx98-error at -1 {{template argument uses unnamed type}}
- // cxx98-note@#dr62-unnamed {{unnamed type used in template argument was declared here}}
+ // cxx98-note@#dr62-unnamed {{unnamed type used in template argument was declared here}}
NoNameForLinkagePtr p2 = get<const NoNameForLinkagePtr>();
// cxx98-error at -1 {{template argument uses unnamed type}}
- // cxx98-note@#dr62-unnamed {{unnamed type used in template argument was declared here}}
+ // cxx98-note@#dr62-unnamed {{unnamed type used in template argument was declared here}}
int n1 = take(noNameForLinkagePtr);
// cxx98-error at -1 {{template argument uses unnamed type}}
- // cxx98-note@#dr62-unnamed {{unnamed type used in template argument was declared here}}
+ // cxx98-note@#dr62-unnamed {{unnamed type used in template argument was declared here}}
X<Danger> x4;
@@ -1089,11 +1089,11 @@ namespace dr66 { // dr66: no
// FIXME: The first two calls here should be accepted.
int a = f();
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr66-f-first {{candidate function not viable: requires single argument 'n', but no arguments were provided}}
+ // expected-note@#dr66-f-first {{candidate function not viable: requires single argument 'n', but no arguments were provided}}
int b = f(1);
int c = f(1, 2);
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr66-f-first {{candidate function not viable: requires single argument 'n', but 2 arguments were provided}}
+ // expected-note@#dr66-f-first {{candidate function not viable: requires single argument 'n', but 2 arguments were provided}}
}
// dr67: na
@@ -1127,7 +1127,7 @@ namespace dr69 { // dr69: 9
template<void(*)()> struct Q {};
Q<&f<int> > q;
// cxx98-error at -1 {{non-type template argument referring to function 'f<int>' with internal linkage is a C++11 extension}}
- // cxx98-note@#dr69-f {{non-type template argument refers to function here}}
+ // cxx98-note@#dr69-f {{non-type template argument refers to function here}}
}
namespace dr70 { // dr70: yes
@@ -1145,7 +1145,7 @@ namespace dr73 { // dr73: sup 1652
int a, b;
static_assert(&a + 1 != &b, "");
// expected-error at -1 {{static assertion expression is not an integral constant expression}}
- // expected-note at -2 {{comparison against pointer '&a + 1' that points past the end of a complete object has unspecified value}}
+ // expected-note at -2 {{comparison against pointer '&a + 1' that points past the end of a complete object has unspecified value}}
}
#endif
@@ -1228,8 +1228,8 @@ namespace dr84 { // dr84: yes
// here. In C++17, we initialize the B object directly using 'A::operator B()'.
B b = a;
// cxx98-14-error at -1 {{no viable constructor copying variable of type 'B'}}
- // cxx98-14-note@#dr84-copy-ctor {{candidate constructor not viable: expects an lvalue for 1st argument}}
- // cxx98-14-note@#dr84-ctor-from-C {{candidate constructor not viable: no known conversion from 'B' to 'C' for 1st argument}}
+ // cxx98-14-note@#dr84-copy-ctor {{candidate constructor not viable: expects an lvalue for 1st argument}}
+ // cxx98-14-note@#dr84-ctor-from-C {{candidate constructor not viable: no known conversion from 'B' to 'C' for 1st argument}}
}
namespace dr85 { // dr85: 3.4
@@ -1238,26 +1238,26 @@ namespace dr85 { // dr85: 3.4
struct B {}; // #dr85-B-def
struct B;
// expected-error at -1 {{class member cannot be redeclared}}
- // expected-note@#dr85-B-def {{previous declaration is here}}
+ // expected-note@#dr85-B-def {{previous declaration is here}}
union U;
union U {}; // #dr85-U-def
union U;
// expected-error at -1 {{class member cannot be redeclared}}
- // expected-note@#dr85-U-def {{previous declaration is here}}
+ // expected-note@#dr85-U-def {{previous declaration is here}}
#if __cplusplus >= 201103L
enum E1 : int;
enum E1 : int { e1 }; // #dr85-E1-def
enum E1 : int;
// expected-error at -1 {{class member cannot be redeclared}}
- // expected-note@#dr85-E1-def {{previous declaration is here}}
+ // expected-note@#dr85-E1-def {{previous declaration is here}}
enum class E2;
enum class E2 { e2 }; // #dr85-E2-def
enum class E2;
// expected-error at -1 {{class member cannot be redeclared}}
- // expected-note@#dr85-E2-def {{previous declaration is here}}
+ // expected-note@#dr85-E2-def {{previous declaration is here}}
#endif
};
@@ -1266,7 +1266,7 @@ namespace dr85 { // dr85: 3.4
struct B {}; // #dr85-C-B-def
struct B;
// expected-error at -1 {{class member cannot be redeclared}}
- // expected-note@#dr85-C-B-def {{previous declaration is here}}
+ // expected-note@#dr85-C-B-def {{previous declaration is here}}
};
}
@@ -1288,7 +1288,7 @@ namespace dr88 { // dr88: 2.8
};
template<> const int S<int>::a = 4;
// expected-error at -1 {{static data member 'a' already has an initializer}}
- // expected-note@#dr88-a {{previous initialization is here}}
+ // expected-note@#dr88-a {{previous initialization is here}}
template<> const int S<int>::b = 4;
}
@@ -1336,7 +1336,7 @@ namespace dr91 { // dr91: yes
namespace dr92 { // dr92: 4 c++17
void f() throw(int, float);
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
void (*p)() throw(int) = &f; // #dr92-p
// since-cxx17-error@#dr92-p {{ISO C++17 does not allow dynamic exception specifications}}
// since-cxx17-note@#dr92-p {{use 'noexcept(false)' instead}}
@@ -1344,7 +1344,7 @@ namespace dr92 { // dr92: 4 c++17
// since-cxx17-warning@#dr92-p {{target exception specification is not superset of source}}
void (*q)() throw(int);
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
void (**pp)() throw() = &q;
// cxx98-14-error at -1 {{exception specifications are not allowed beyond a single level of indirection}}
// since-cxx17-error at -2 {{cannot initialize a variable of type 'void (**)() throw()' with an rvalue of type 'void (**)() throw(int)'}}
@@ -1372,7 +1372,7 @@ namespace dr92 { // dr92: 4 c++17
template<void() throw(int)> struct Y {};
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
Y<&h> yp; // ok
}
@@ -1397,7 +1397,7 @@ namespace dr95 { // dr95: 3.3
A *q = N::p; // ok, same type
struct B { void f() { N::C::f(); } };
// expected-error at -1 {{'f' is a private member of 'dr95::N::C'}}
- // expected-note@#dr95-C-f {{implicitly declared private here}}
+ // expected-note@#dr95-C-f {{implicitly declared private here}}
}
namespace dr96 { // dr96: no
@@ -1433,24 +1433,24 @@ namespace dr98 { // dr98: yes
try { // #dr98-try
case 0:
// expected-error at -1 {{cannot jump from switch statement to this case label}}
- // expected-note@#dr98-try {{jump bypasses initialization of try block}}
+ // expected-note@#dr98-try {{jump bypasses initialization of try block}}
x:
throw n;
} catch (...) { // #dr98-catch
case 1:
// expected-error at -1 {{cannot jump from switch statement to this case label}}
- // expected-note@#dr98-catch {{jump bypasses initialization of catch block}}
+ // expected-note@#dr98-catch {{jump bypasses initialization of catch block}}
y:
throw n;
}
case 2:
goto x;
// expected-error at -1 {{cannot jump from this goto statement to its label}}
- // expected-note@#dr98-try {{jump bypasses initialization of try block}}
+ // expected-note@#dr98-try {{jump bypasses initialization of try block}}
case 3:
goto y;
// expected-error at -1 {{cannot jump from this goto statement to its label}}
- // expected-note@#dr98-catch {{jump bypasses initialization of catch block}}
+ // expected-note@#dr98-catch {{jump bypasses initialization of catch block}}
}
}
}
diff --git a/clang/test/CXX/drs/dr1xx.cpp b/clang/test/CXX/drs/dr1xx.cpp
index 064b69411f0b5f..1930de2f070a7a 100644
--- a/clang/test/CXX/drs/dr1xx.cpp
+++ b/clang/test/CXX/drs/dr1xx.cpp
@@ -45,8 +45,8 @@ namespace dr102 { // dr102: yes
namespace A {
template<typename T> T f(T a, T b) { return a + b; }
// expected-error at -1 {{call to function 'operator+' that is neither visible in the template definition nor found by argument-dependent lookup}}
- // expected-note@#dr102-instantiation {{in instantiation of function template specialization 'dr102::A::f<dr102::B::S>' requested here}}
- // expected-note@#dr102-operator-plus {{'operator+' should be declared prior to the call site or in namespace 'dr102::B'}}
+ // expected-note@#dr102-instantiation {{in instantiation of function template specialization 'dr102::A::f<dr102::B::S>' requested here}}
+ // expected-note@#dr102-operator-plus {{'operator+' should be declared prior to the call site or in namespace 'dr102::B'}}
}
namespace B {
struct S {};
@@ -114,8 +114,8 @@ namespace dr111 { // dr111: dup 535
const B b1;
B b2(b1);
// expected-error at -1 {{no matching constructor for initialization of 'B'}}
- // expected-note@#dr111-B {{candidate constructor (the implicit copy constructor) not viable: 1st argument ('const B') would lose const qualifier}}
- // expected-note@#dr111-B {{candidate constructor not viable: requires 0 arguments, but 1 was provided}}
+ // expected-note@#dr111-B {{candidate constructor (the implicit copy constructor) not viable: 1st argument ('const B') would lose const qualifier}}
+ // expected-note@#dr111-B {{candidate constructor not viable: requires 0 arguments, but 1 was provided}}
}
namespace dr112 { // dr112: yes
@@ -130,11 +130,11 @@ namespace dr112 { // dr112: yes
// FIXME: Test this somehow in C++11 and on.
X<a1> x1;
// cxx98-error at -1 {{non-type template argument referring to object 'a1' with internal linkage is a C++11 extension}}
- // cxx98-note@#dr112-a1 {{non-type template argument refers to object here}}
+ // cxx98-note@#dr112-a1 {{non-type template argument refers to object here}}
X<a2> x2;
X<a3> x3;
// cxx98-error at -1 {{non-type template argument referring to object 'a3' with internal linkage is a C++11 extension}}
- // cxx98-note@#dr112-a3 {{non-type template argument refers to object here}}
+ // cxx98-note@#dr112-a3 {{non-type template argument refers to object here}}
X<a4> x4;
}
@@ -158,7 +158,7 @@ namespace dr114 { // dr114: yes
void g() { f(0); }
} b;
// expected-error at -1 {{variable type 'struct B' is an abstract class}}
- // expected-note@#dr114-A-f {{unimplemented pure virtual method 'f' in 'B'}}
+ // expected-note@#dr114-A-f {{unimplemented pure virtual method 'f' in 'B'}}
}
namespace dr115 { // dr115: 3.0
@@ -168,31 +168,31 @@ namespace dr115 { // dr115: 3.0
int k1 = f(&f);
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr115-f {{candidate template ignored: couldn't infer template argument 'T'}}
+ // expected-note@#dr115-f {{candidate template ignored: couldn't infer template argument 'T'}}
int k2 = f(&f<int>);
int k3 = f(&g<int>);
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr115-f {{candidate template ignored: couldn't infer template argument 'T'}}
+ // expected-note@#dr115-f {{candidate template ignored: couldn't infer template argument 'T'}}
void h() {
(void)&f;
// expected-error at -1 {{address of overloaded function 'f' cannot be cast to type 'void'}}
- // expected-note@#dr115-f {{candidate function template}}
+ // expected-note@#dr115-f {{candidate function template}}
(void)&f<int>;
(void)&g<int>;
// expected-error at -1 {{address of overloaded function 'g' cannot be cast to type 'void'}}
- // expected-note@#dr115-g-int {{candidate function template}}
- // expected-note@#dr115-g {{candidate function template}}
+ // expected-note@#dr115-g-int {{candidate function template}}
+ // expected-note@#dr115-g {{candidate function template}}
&f;
// expected-error at -1 {{reference to overloaded function could not be resolved; did you mean to call it?}}
- // expected-note@#dr115-f {{possible target for call}}
+ // expected-note@#dr115-f {{possible target for call}}
&f<int>;
// expected-warning at -1 {{expression result unused}}
&g<int>;
// expected-error at -1 {{reference to overloaded function could not be resolved; did you mean to call it?}}
- // expected-note@#dr115-g-int {{possible target for call}}
- // expected-note@#dr115-g {{possible target for call}}
+ // expected-note@#dr115-g-int {{possible target for call}}
+ // expected-note@#dr115-g {{possible target for call}}
}
struct S {
@@ -254,16 +254,16 @@ namespace dr115 { // dr115: 3.0
template<typename T=int> void with_default(); // #dr115-with-default
int k10 = f(&with_default);
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr115-f {{candidate template ignored: couldn't infer template argument 'T'}}
+ // expected-note@#dr115-f {{candidate template ignored: couldn't infer template argument 'T'}}
int k11 = f(&with_default<>);
void k() {
(void)&with_default;
// expected-error at -1 {{address of overloaded function 'with_default' cannot be cast to type 'void'}}
- // expected-note@#dr115-with-default {{candidate function template}}
+ // expected-note@#dr115-with-default {{candidate function template}}
(void)&with_default<>;
&with_default;
// expected-error at -1 {{reference to overloaded function could not be resolved; did you mean to call it?}}
- // expected-note@#dr115-with-default {{possible target for call}}
+ // expected-note@#dr115-with-default {{possible target for call}}
&with_default<>;
// expected-warning at -1 {{expression result unused}}
}
@@ -275,11 +275,11 @@ namespace dr116 { // dr116: yes
template<int N> void f(A<N>) {} // #dr116-f-N
template<int M> void f(A<M>) {}
// expected-error at -1 {{redefinition of 'f'}}
- // expected-note@#dr116-f-N {{previous definition is here}}
+ // expected-note@#dr116-f-N {{previous definition is here}}
template<typename T> void f(A<sizeof(T)>) {} // #dr116-f-T
template<typename U> void f(A<sizeof(U)>) {}
// expected-error at -1 {{redefinition of 'f'}}
- // expected-note@#dr116-f-T {{previous definition is here}}
+ // expected-note@#dr116-f-T {{previous definition is here}}
}
// dr117: na
@@ -383,27 +383,27 @@ namespace dr126 { // dr126: partial
virtual void dp() throw(D*);
virtual void ep() throw(E*);
// cxx98-14-error at -1 {{exception specification of overriding function is more lax than base version}}
- // cxx98-14-note@#dr126-ep {{overridden virtual function is here}}
+ // cxx98-14-note@#dr126-ep {{overridden virtual function is here}}
virtual void fp() throw(F*);
// cxx98-14-error at -1 {{exception specification of overriding function is more lax than base version}}
- // cxx98-14-note@#dr126-fp {{overridden virtual function is here}}
+ // cxx98-14-note@#dr126-fp {{overridden virtual function is here}}
virtual void gp() throw(G*);
virtual void hp() throw(H*);
// cxx98-14-error at -1 {{exception specification of overriding function is more lax than base version}}
- // cxx98-14-note@#dr126-hp {{overridden virtual function is here}}
+ // cxx98-14-note@#dr126-hp {{overridden virtual function is here}}
virtual void cr() throw(C&);
virtual void dr() throw(D&);
virtual void er() throw(E&);
// cxx98-14-error at -1 {{exception specification of overriding function is more lax than base version}}
- // cxx98-14-note@#dr126-er {{overridden virtual function is here}}
+ // cxx98-14-note@#dr126-er {{overridden virtual function is here}}
virtual void fr() throw(F&);
// cxx98-14-error at -1 {{exception specification of overriding function is more lax than base version}}
- // cxx98-14-note@#dr126-fr {{overridden virtual function is here}}
+ // cxx98-14-note@#dr126-fr {{overridden virtual function is here}}
virtual void gr() throw(G&);
virtual void hr() throw(H&);
// cxx98-14-error at -1 {{exception specification of overriding function is more lax than base version}}
- // cxx98-14-note@#dr126-hr {{overridden virtual function is here}}
+ // cxx98-14-note@#dr126-hr {{overridden virtual function is here}}
virtual void pv() throw(C*);
@@ -413,7 +413,7 @@ namespace dr126 { // dr126: partial
virtual void npm() throw(nullptr_t&);
virtual void nr() throw(nullptr_t);
// cxx11-14-error at -1 {{exception specification of overriding function is more lax than base version}}
- // cxx11-14-note@#dr126-nr {{overridden virtual function is here}}
+ // cxx11-14-note@#dr126-nr {{overridden virtual function is here}}
virtual void ncr() throw(nullptr_t);
#endif // __cplusplus >= 201103L
@@ -424,16 +424,16 @@ namespace dr126 { // dr126: partial
virtual void w() throw(int);
virtual void x() throw(const int*);
// cxx98-14-error at -1 {{exception specification of overriding function is more lax than base version}}
- // cxx98-14-note@#dr126-x {{overridden virtual function is here}}
+ // cxx98-14-note@#dr126-x {{overridden virtual function is here}}
virtual void y() throw(int*); // ok
virtual void z() throw(long);
// cxx98-14-error at -1 {{exception specification of overriding function is more lax than base version}}
- // cxx98-14-note@#dr126-z {{overridden virtual function is here}}
+ // cxx98-14-note@#dr126-z {{overridden virtual function is here}}
};
#endif // __cplusplus <= 201402L
void f() throw(int);
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
}
namespace dr127 { // dr127: 2.9
@@ -491,10 +491,10 @@ namespace dr136 { // dr136: 3.4
struct A {
friend void f(int, int = 0, int);
// expected-error at -1 {{friend declaration specifying a default argument must be the only declaration}}
- // expected-note@#dr136-f {{previous declaration is here}}
+ // expected-note@#dr136-f {{previous declaration is here}}
friend void g(int, int, int = 0);
// expected-error at -1 {{friend declaration specifying a default argument must be the only declaration}}
- // expected-note@#dr136-g {{previous declaration is here}}
+ // expected-note@#dr136-g {{previous declaration is here}}
friend void h(int, int, int = 0);
// expected-error at -1 {{friend declaration specifying a default argument must be a definition}}
friend void i(int, int, int = 0) {} // #dr136-A-i
@@ -503,7 +503,7 @@ namespace dr136 { // dr136: 3.4
};
void i(int, int, int);
// expected-error at -1 {{friend declaration specifying a default argument must be the only declaration}}
- // expected-note@#dr136-A-i {{previous declaration is here}}
+ // expected-note@#dr136-A-i {{previous declaration is here}}
void q() {
j(A(), A()); // ok, has default argument
}
@@ -512,7 +512,7 @@ namespace dr136 { // dr136: 3.4
struct A {
friend void dr136::k(int, int, int, int = 0);
// expected-error at -1 {{friend declaration specifying a default argument must be the only declaration}}
- // expected-note@#dr136-k {{previous declaration is here}}
+ // expected-note@#dr136-k {{previous declaration is here}}
};
}
namespace NSB {
@@ -529,7 +529,7 @@ namespace dr136 { // dr136: 3.4
struct C {
friend void B::f(int = 0);
// expected-error at -1 {{friend declaration specifying a default argument must be the only declaration}}
- // expected-note@#dr136-B-f {{previous declaration is here}}
+ // expected-note@#dr136-B-f {{previous declaration is here}}
};
}
@@ -563,7 +563,7 @@ namespace dr139 { // dr139: yes
struct A {
friend void f(A &);
// expected-error at -1 {{redefinition of 'f' as
diff erent kind of symbol}}
- // expected-note@#dr139-typedef-f {{previous definition is here}}
+ // expected-note@#dr139-typedef-f {{previous definition is here}}
};
}
@@ -583,7 +583,7 @@ namespace dr140 { // dr140: yes
void f(int *const) {} // #dr140-f-first
void f(int[3]) {}
// expected-error at -1 {{redefinition of 'f'}}
- // expected-note@#dr140-f-first {{previous definition is here}}
+ // expected-note@#dr140-f-first {{previous definition is here}}
void g(const int);
void g(int n) { n = 2; }
}
@@ -644,23 +644,23 @@ namespace dr142 { // dr142: 2.8
void DD::f() {
mi = 3;
// expected-error at -1 {{'mi' is a private member of 'dr142::B'}}
- // expected-note@#dr142-D {{constrained by private inheritance here}}
- // expected-note@#dr142-B-mi {{member is declared here}}
+ // expected-note@#dr142-D {{constrained by private inheritance here}}
+ // expected-note@#dr142-B-mi {{member is declared here}}
si = 3;
// expected-error at -1 {{'si' is a private member of 'dr142::B'}}
- // expected-note@#dr142-D {{constrained by private inheritance here}}
- // expected-note@#dr142-B-si {{member is declared here}}
+ // expected-note@#dr142-D {{constrained by private inheritance here}}
+ // expected-note@#dr142-B-si {{member is declared here}}
B b_old;
// expected-error at -1 {{'B' is a private member of 'dr142::B'}}
- // expected-note@#dr142-D {{constrained by private inheritance here}}
- // expected-note@#dr142-B {{member is declared here}}
+ // expected-note@#dr142-D {{constrained by private inheritance here}}
+ // expected-note@#dr142-B {{member is declared here}}
dr142::B b;
b.mi = 3;
b.si = 3;
B::si = 3;
// expected-error at -1 {{'B' is a private member of 'dr142::B'}}
- // expected-note@#dr142-D {{constrained by private inheritance here}}
- // expected-note@#dr142-B {{member is declared here}}
+ // expected-note@#dr142-D {{constrained by private inheritance here}}
+ // expected-note@#dr142-B {{member is declared here}}
dr142::B::si = 3;
B *bp1_old = this; // #dr142-bp1_old
// expected-error@#dr142-bp1_old {{'B' is a private member of 'dr142::B'}}
@@ -670,7 +670,7 @@ namespace dr142 { // dr142: 2.8
// expected-note@#dr142-D {{declared private here}}
dr142::B *bp1 = this;
// expected-error at -1 {{cannot cast 'dr142::DD' to its private base class 'dr142::B'}}
- // expected-note@#dr142-D {{declared private here}}
+ // expected-note@#dr142-D {{declared private here}}
B *bp2_old = (B*)this; // #dr142-bp2_old
// expected-error@#dr142-bp2_old {{'B' is a private member of 'dr142::B'}}
// expected-note@#dr142-D {{constrained by private inheritance here}}
@@ -761,15 +761,15 @@ namespace dr152 { // dr152: yes
};
A a1 = A();
// cxx98-14-error at -1 {{no matching constructor for initialization of 'A'}}
- // cxx98-14-note@#dr152-A-explicit-ctor {{explicit constructor is not a candidate}}
- // cxx98-14-note@#dr152-A-ctor {{candidate constructor not viable: requires 0 arguments, but 1 was provided}}
+ // cxx98-14-note@#dr152-A-explicit-ctor {{explicit constructor is not a candidate}}
+ // cxx98-14-note@#dr152-A-ctor {{candidate constructor not viable: requires 0 arguments, but 1 was provided}}
A a2((A()));
A &f();
A a3 = f();
// expected-error at -1 {{no matching constructor for initialization of 'A'}}
- // expected-note@#dr152-A-explicit-ctor {{explicit constructor is not a candidate}}
- // expected-note@#dr152-A-ctor {{candidate constructor not viable: requires 0 arguments, but 1 was provided}}
+ // expected-note@#dr152-A-explicit-ctor {{explicit constructor is not a candidate}}
+ // expected-note@#dr152-A-ctor {{candidate constructor not viable: requires 0 arguments, but 1 was provided}}
A a4(f());
}
@@ -817,17 +817,17 @@ namespace dr161 { // dr161: 3.1
C::B b2; // ok, accessible as a member of A
(void)&C::b;
// expected-error at -1 {{'b' is a protected member of 'dr161::A'}}
- // expected-note@#dr161-B {{declared protected here}}
+ // expected-note@#dr161-B {{declared protected here}}
(void)&C::bs;
(void)c.b;
// expected-error at -1 {{'b' is a protected member of 'dr161::A'}}
- // expected-note@#dr161-B {{declared protected here}}
+ // expected-note@#dr161-B {{declared protected here}}
(void)c.bs;
f();
sf();
c.f();
// expected-error at -1 {{protected}}
- // expected-note@#dr161-f {{declared protected here}}
+ // expected-note@#dr161-f {{declared protected here}}
c.sf();
A::f();
D::f();
@@ -887,8 +887,8 @@ namespace dr166 { // dr166: 2.9
int g(A::X);
template<typename T> int h(T t) { return t.n; }
// expected-error at -1 {{'n' is a private member of 'dr166::A::X'}}
- // expected-note@#dr166-h-instantiation {{in instantiation of function template specialization 'dr166::h<dr166::A::X>' requested here}}
- // expected-note@#dr166-X-n {{implicitly declared private here}}
+ // expected-note@#dr166-h-instantiation {{in instantiation of function template specialization 'dr166::h<dr166::A::X>' requested here}}
+ // expected-note@#dr166-X-n {{implicitly declared private here}}
int i(A::X);
namespace A {
@@ -909,7 +909,7 @@ namespace dr166 { // dr166: 2.9
template int h(A::X); // #dr166-h-instantiation
int i(A::X x) { return x.n; }
// expected-error at -1 {{'n' is a private member of 'dr166::A::X'}}
- // expected-note@#dr166-X-n {{implicitly declared private here}}
+ // expected-note@#dr166-X-n {{implicitly declared private here}}
}
// dr167: sup 1012
@@ -951,7 +951,7 @@ namespace dr171 {
extern "C" void dr171a();
extern "C" void dr171b();
// expected-error at -1 {{declaration of 'dr171b' with C language linkage conflicts with declaration in global scope}}
- // expected-note@#dr171b-int {{declared in global scope here}}
+ // expected-note@#dr171b-int {{declared in global scope here}}
}
namespace dr172 { // dr172: yes
@@ -1002,8 +1002,8 @@ namespace dr175 { // dr175: 2.8
struct C : B {
A a;
// expected-error at -1 {{'A' is a private member of 'dr175::A'}}
- // expected-note@#dr175-B {{constrained by private inheritance here}}
- // expected-note@#dr175-A {{member is declared here}}
+ // expected-note@#dr175-B {{constrained by private inheritance here}}
+ // expected-note@#dr175-A {{member is declared here}}
dr175::A b;
};
}
@@ -1015,7 +1015,7 @@ namespace dr176 { // dr176: 3.1
typedef Y A; // #dr176-A-first
typedef Y<char> A;
// expected-error at -1 {{typedef redefinition with
diff erent types ('Y<char>' vs 'Y<int>')}}
- // expected-note@#dr176-A-first {{previous definition is here}}
+ // expected-note@#dr176-A-first {{previous definition is here}}
}
};
@@ -1031,8 +1031,8 @@ namespace dr176 { // dr176: 3.1
template<typename T> struct Derived2 : Base<int>, Base<char> {
typename Derived2::Base b;
// expected-error at -1 {{member 'Base' found in multiple base classes of
diff erent types}}
- // expected-note@#dr176-Base {{member type 'dr176::Base<int>' found by ambiguous name lookup}}
- // expected-note@#dr176-Base {{member type 'dr176::Base<char>' found by ambiguous name lookup}}
+ // expected-note@#dr176-Base {{member type 'dr176::Base<int>' found by ambiguous name lookup}}
+ // expected-note@#dr176-Base {{member type 'dr176::Base<char>' found by ambiguous name lookup}}
typename Derived2::Base<double> d;
};
@@ -1057,8 +1057,8 @@ namespace dr177 { // dr177: yes
B b;
A a = b;
// cxx98-14-error at -1 {{no viable constructor copying variable of type 'A'}}
- // cxx98-14-note@#dr177-A-copy-ctor {{candidate constructor not viable: expects an lvalue for 1st argument}}
- // cxx98-14-note@#dr177-A-ctor-from-B {{candidate constructor not viable: no known conversion from 'A' to 'const B &' for 1st argument}}
+ // cxx98-14-note@#dr177-A-copy-ctor {{candidate constructor not viable: expects an lvalue for 1st argument}}
+ // cxx98-14-note@#dr177-A-ctor-from-B {{candidate constructor not viable: no known conversion from 'A' to 'const B &' for 1st argument}}
struct C { C(C&); }; // #dr177-C-copy-ctor
struct D : C {};
@@ -1066,7 +1066,7 @@ namespace dr177 { // dr177: yes
E e;
C c = e;
// expected-error at -1 {{no viable constructor copying variable of type 'D'}}
- // expected-note@#dr177-C-copy-ctor {{candidate constructor not viable: expects an lvalue for 1st argument}}
+ // expected-note@#dr177-C-copy-ctor {{candidate constructor not viable: expects an lvalue for 1st argument}}
}
namespace dr178 { // dr178: yes
@@ -1157,7 +1157,7 @@ namespace dr184 { // dr184: yes
template<template<typename TT> class T> void A<T>::f() { // #dr184-T
T<> t;
// expected-error at -1 {{too few template arguments for template template parameter 'T'}}
- // expected-note@#dr184-T {{template is declared here}}
+ // expected-note@#dr184-T {{template is declared here}}
}
template<template<typename TT = char> class T> void A<T>::g() {
@@ -1248,7 +1248,7 @@ namespace dr197 { // dr197: yes
char &a = f(1);
char &b = f(T(1));
// expected-error at -1 {{non-const lvalue reference to type 'char' cannot bind to a value of unrelated type 'int'}}
- // expected-note@#dr197-g-e-call {{in instantiation of function template specialization 'dr197::g<dr197::E>' requested here}}
+ // expected-note@#dr197-g-e-call {{in instantiation of function template specialization 'dr197::g<dr197::E>' requested here}}
char &c = f(t);
// expected-error at -1 {{non-const lvalue reference to type 'char' cannot bind to a value of unrelated type 'int'}}
}
diff --git a/clang/test/CXX/drs/dr26xx.cpp b/clang/test/CXX/drs/dr26xx.cpp
index 47eeddcc5bf269..f151c9eea051a3 100644
--- a/clang/test/CXX/drs/dr26xx.cpp
+++ b/clang/test/CXX/drs/dr26xx.cpp
@@ -106,11 +106,11 @@ int \N{Λ} = 0;
// expected-error at -2 {{expected unqualified-id}}
const char* emoji = "\N{🤡}";
// expected-error at -1 {{'🤡' is not a valid Unicode character name}}
-// expected-note at -2 {{did you mean OX ('🐂' U+1F402)?}}
-// expected-note at -3 {{did you mean ANT ('🐜' U+1F41C)?}}
-// expected-note at -4 {{did you mean ARC ('⌒' U+2312)?}}
-// expected-note at -5 {{did you mean AXE ('🪓' U+1FA93)?}}
-// expected-note at -6 {{did you mean BAT ('🦇' U+1F987)?}}
+// expected-note at -2 {{did you mean OX ('🐂' U+1F402)?}}
+// expected-note at -3 {{did you mean ANT ('🐜' U+1F41C)?}}
+// expected-note at -4 {{did you mean ARC ('⌒' U+2312)?}}
+// expected-note at -5 {{did you mean AXE ('🪓' U+1FA93)?}}
+// expected-note at -6 {{did you mean BAT ('🦇' U+1F987)?}}
#define z(x) 0
#define dr2640_a z(
diff --git a/clang/test/CXX/drs/dr2xx.cpp b/clang/test/CXX/drs/dr2xx.cpp
index bc862e26ff667a..1a3ac532f93b26 100644
--- a/clang/test/CXX/drs/dr2xx.cpp
+++ b/clang/test/CXX/drs/dr2xx.cpp
@@ -42,10 +42,10 @@ namespace dr206 { // dr206: yes
struct S; // #dr206-S
template<typename T> struct Q { S s; };
// expected-error at -1 {{field has incomplete type 'S'}}
- // expected-note@#dr206-S {{forward declaration of 'dr206::S'}}
+ // expected-note@#dr206-S {{forward declaration of 'dr206::S'}}
template<typename T> void f() { S s; }
// expected-error at -1 {{variable has incomplete type 'S'}}
- // expected-note@#dr206-S {{forward declaration of 'dr206::S'}}
+ // expected-note@#dr206-S {{forward declaration of 'dr206::S'}}
}
namespace dr207 { // dr207: yes
@@ -72,7 +72,7 @@ namespace dr209 { // dr209: 3.2
class B {
friend void A::f();
// expected-error at -1 {{friend function 'f' is a private member of 'dr209::A'}}
- // expected-note@#dr209-A-f {{implicitly declared private here}}
+ // expected-note@#dr209-A-f {{implicitly declared private here}}
};
}
@@ -95,8 +95,8 @@ namespace dr213 { // dr213: yes
char &r1 = f(t);
int &r2 = g(t);
// expected-error at -1 {{explicit qualification required to use member 'g' from dependent base class}}
- // expected-note@#dr213-instantiation {{in instantiation of member function 'dr213::A<dr213::B>::h' requested here}}
- // expected-note@#dr213-B-g {{member is declared here}}
+ // expected-note@#dr213-instantiation {{in instantiation of member function 'dr213::A<dr213::B>::h' requested here}}
+ // expected-note@#dr213-B-g {{member is declared here}}
}
};
struct B {
@@ -172,16 +172,16 @@ namespace dr218 { // dr218: yes
// expected-error at -1 {{called object type 'int' is not a function or function pointer}}
void test2(A::S as) { void f(); f(as); }
// expected-error at -1 {{too many arguments to function call, expected 0, have 1}}
- // expected-note at -2 {{'f' declared here}}
+ // expected-note at -2 {{'f' declared here}}
void test3(A::S as) { using A::f; f(as); } // ok
void test4(A::S as) { using B::f; f(as); } // ok
void test5(A::S as) { int f; f(as); }
// expected-error at -1 {{called object type 'int' is not a function or function pointer}}
void test6(A::S as) { struct f {}; (void) f(as); }
// expected-error at -1 {{no matching conversion for functional-style cast from 'A::S' to 'f'}}
- // expected-note at -2 {{candidate constructor (the implicit copy constructor) not viable: no known conversion from 'A::S' to 'const f' for 1st argument}}
- // since-cxx11-note at -3 {{candidate constructor (the implicit move constructor) not viable: no known conversion from 'A::S' to 'f' for 1st argument}}
- // expected-note at -4 {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
+ // expected-note at -2 {{candidate constructor (the implicit copy constructor) not viable: no known conversion from 'A::S' to 'const f' for 1st argument}}
+ // since-cxx11-note at -3 {{candidate constructor (the implicit move constructor) not viable: no known conversion from 'A::S' to 'f' for 1st argument}}
+ // expected-note at -4 {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
};
namespace D {
@@ -243,15 +243,15 @@ namespace dr221 { // dr221: 3.6
a += n;
a = c;
// expected-error at -1 {{no viable overloaded '='}}
- // expected-note@#dr221-S-copy-assign {{candidate function not viable: no known conversion from 'char' to 'int &' for 1st argument}}
- // since-cxx11-note@#dr221-S {{candidate function (the implicit move assignment operator) not viable: no known conversion from 'char' to 'A' for 1st argument}}
- // expected-note@#dr221-S {{candidate function (the implicit copy assignment operator) not viable: no known conversion from 'char' to 'const A' for 1st argument}}
+ // expected-note@#dr221-S-copy-assign {{candidate function not viable: no known conversion from 'char' to 'int &' for 1st argument}}
+ // since-cxx11-note@#dr221-S {{candidate function (the implicit move assignment operator) not viable: no known conversion from 'char' to 'A' for 1st argument}}
+ // expected-note@#dr221-S {{candidate function (the implicit copy assignment operator) not viable: no known conversion from 'char' to 'const A' for 1st argument}}
a += c;
a = f;
// expected-error at -1 {{no viable overloaded '='}}
- // expected-note@#dr221-S-copy-assign {{candidate function not viable: no known conversion from 'float' to 'int &' for 1st argument}}
- // since-cxx11-note@#dr221-S {{candidate function (the implicit move assignment operator) not viable: no known conversion from 'float' to 'A' for 1st argument}}
- // expected-note@#dr221-S {{candidate function (the implicit copy assignment operator) not viable: no known conversion from 'float' to 'const A' for 1st argument}}
+ // expected-note@#dr221-S-copy-assign {{candidate function not viable: no known conversion from 'float' to 'int &' for 1st argument}}
+ // since-cxx11-note@#dr221-S {{candidate function (the implicit move assignment operator) not viable: no known conversion from 'float' to 'A' for 1st argument}}
+ // expected-note@#dr221-S {{candidate function (the implicit copy assignment operator) not viable: no known conversion from 'float' to 'const A' for 1st argument}}
a += f;
}
}
@@ -351,8 +351,8 @@ namespace dr224 { // dr224: 16
// dr225: yes
template<typename T> void dr225_f(T t) { dr225_g(t); }
// expected-error at -1 {{call to function 'dr225_g' that is neither visible in the template definition nor found by argument-dependent lookup}}
-// expected-note@#dr225-f {{in instantiation of function template specialization 'dr225_f<int>' requested here}}
-// expected-note@#dr225-g {{'dr225_g' should be declared prior to the call site}}
+// expected-note@#dr225-f {{in instantiation of function template specialization 'dr225_f<int>' requested here}}
+// expected-note@#dr225-g {{'dr225_g' should be declared prior to the call site}}
void dr225_g(int); // #dr225-g
template void dr225_f(int); // #dr225-f
@@ -397,7 +397,7 @@ namespace dr226 { // dr226: no
// cxx98-error at -1 {{default template arguments for a function template are a C++11 extension}}
template<typename=void, typename X> struct Foo {};
// expected-error at -1 {{template parameter missing a default argument}}
- // expected-note at -2 {{previous default template argument defined here}}
+ // expected-note at -2 {{previous default template argument defined here}}
template<typename=void, typename X, typename, typename Y> int foo(X, Y);
// cxx98-error at -1 {{default template arguments for a function template are a C++11 extension}}
@@ -433,7 +433,7 @@ namespace dr230 { // dr230: 3.0
struct S {
S() { f(); }
// expected-warning at -1 {{call to pure virtual member function 'f' has undefined behavior; overrides of 'f' in subclasses are not available in the constructor of 'dr230::S'}}
- // expected-note@#dr230-f {{'f' declared here}}
+ // expected-note@#dr230-f {{'f' declared here}}
virtual void f() = 0; // #dr230-f
};
}
@@ -446,7 +446,7 @@ namespace dr231 { // dr231: yes
void f() { using namespace inner; }
int j = i;
// expected-error at -1 {{use of undeclared identifier 'i'; did you mean 'inner::i'?}}
- // expected-note@#dr231-i {{'inner::i' declared here}}
+ // expected-note@#dr231-i {{'inner::i' declared here}}
}
}
@@ -502,20 +502,20 @@ namespace dr241 { // dr241: yes
// cxx98-17-error at -1 {{use of function template name with no prior declaration in function call with explicit template arguments is a C++20 extension}}
A::f<3>(b);
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr241-A-f {{candidate function template not viable: requires 0 arguments, but 1 was provided}}
+ // expected-note@#dr241-A-f {{candidate function template not viable: requires 0 arguments, but 1 was provided}}
A::g<3>(b);
C::f<3>(b);
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr241-C-f {{candidate template ignored: invalid explicitly-specified argument for template parameter 'T'}}
+ // expected-note@#dr241-C-f {{candidate template ignored: invalid explicitly-specified argument for template parameter 'T'}}
C::g<3>(b);
// expected-error at -1 {{no matching function for call to 'g'}}
- // expected-note@#dr241-C-g {{candidate template ignored: invalid explicitly-specified argument for template parameter 'T'}}
+ // expected-note@#dr241-C-g {{candidate template ignored: invalid explicitly-specified argument for template parameter 'T'}}
using C::f;
using C::g;
f<3>(b);
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr241-C-f {{candidate template ignored: invalid explicitly-specified argument for template parameter 'T'}}
- // expected-note@#dr241-A-f {{candidate function template not viable: requires 0 arguments, but 1 was provided}}
+ // expected-note@#dr241-C-f {{candidate template ignored: invalid explicitly-specified argument for template parameter 'T'}}
+ // expected-note@#dr241-A-f {{candidate function template not viable: requires 0 arguments, but 1 was provided}}
g<3>(b);
}
}
@@ -532,8 +532,8 @@ namespace dr243 { // dr243: yes
A a1(b);
A a2 = b;
// expected-error at -1 {{conversion from 'struct B' to 'A' is ambiguous}}
- // expected-note@#dr243-A {{candidate constructor}}
- // expected-note@#dr243-B {{candidate function has been explicitly deleted}}
+ // expected-note@#dr243-A {{candidate constructor}}
+ // expected-note@#dr243-B {{candidate function has been explicitly deleted}}
}
namespace dr244 { // dr244: 11
@@ -548,7 +548,7 @@ namespace dr244 { // dr244: 11
void f() {
D_object.~B();
// expected-error at -1 {{destructor type 'dr244::B' in object destruction expression does not match the type 'D' of the object being destroyed}}
- // expected-note@#dr244-B {{type 'dr244::B' found by destructor name lookup}}
+ // expected-note@#dr244-B {{type 'dr244::B' found by destructor name lookup}}
D_object.B::~B();
D_object.D::~B(); // FIXME: Missing diagnostic for this.
B_ptr->~B();
@@ -601,7 +601,7 @@ namespace dr244 { // dr244: 11
// Rejecting this seems correct, but most compilers accept, so we do also.
f.N::F::~G();
// expected-error at -1 {{qualified destructor name only found in lexical scope; omit the qualifier to find this type name by unqualified lookup}}
- // expected-note@#dr244-G {{type 'G' (aka 'E<int>') found by destructor name lookup}}
+ // expected-note@#dr244-G {{type 'G' (aka 'E<int>') found by destructor name lookup}}
}
// Bizarrely, compilers perform lookup in the scope for qualified destructor
@@ -615,7 +615,7 @@ namespace dr244 { // dr244: 11
typedef typename N::S<U>::Inner T;
p->::dr244::QualifiedLookupInScope::N::S<U>::Inner::~T();
// expected-error at -1 {{no type named 'T' in 'dr244::QualifiedLookupInScope::N::S<int>'}}
- // expected-note@#dr244-f {{in instantiation of function template specialization 'dr244::QualifiedLookupInScope::f<int>' requested here}}
+ // expected-note@#dr244-f {{in instantiation of function template specialization 'dr244::QualifiedLookupInScope::f<int>' requested here}}
}
template void f<int>(N::S<int>::Inner *); // #dr244-f
@@ -635,7 +635,7 @@ namespace dr245 { // dr245: yes
enum E {}; // #dr245-E
class E *p;
// expected-error at -1 {{use of 'E' with tag type that does not match previous declaration}}
- // expected-note@#dr245-E {{previous use is here}}
+ // expected-note@#dr245-E {{previous use is here}}
};
}
@@ -647,7 +647,7 @@ X: ;
} catch (int) {
goto X;
// expected-error at -1 {{cannot jump from this goto statement to its label}}
- // expected-note@#dr246-try {{jump bypasses initialization of try block}}
+ // expected-note@#dr246-try {{jump bypasses initialization of try block}}
}
};
}
@@ -710,8 +710,8 @@ namespace dr252 { // dr252: 3.1
};
C::~C() {}
// expected-error at -1 {{member 'operator delete' found in multiple base classes of
diff erent types}}
- // expected-note@#dr252-A {{member found by ambiguous name lookup}}
- // expected-note@#dr252-B {{member found by ambiguous name lookup}}
+ // expected-note@#dr252-A {{member found by ambiguous name lookup}}
+ // expected-note@#dr252-B {{member found by ambiguous name lookup}}
struct D {
void operator delete(void*, int); // #dr252-D
@@ -719,7 +719,7 @@ namespace dr252 { // dr252: 3.1
};
D::~D() {}
// expected-error at -1 {{no suitable member 'operator delete' in 'D'}}
- // expected-note@#dr252-D {{member 'operator delete' declared here}}
+ // expected-note@#dr252-D {{member 'operator delete' declared here}}
struct E {
void operator delete(void*, int);
@@ -729,7 +729,7 @@ namespace dr252 { // dr252: 3.1
};
E::~E() {}
// expected-error at -1 {{attempt to use a deleted function}}
- // expected-note@#dr252-E {{'operator delete' has been explicitly marked deleted here}}
+ // expected-note@#dr252-E {{'operator delete' has been explicitly marked deleted here}}
struct F {
// If both functions are available, the first one is a placement delete.
@@ -740,7 +740,7 @@ namespace dr252 { // dr252: 3.1
};
F::~F() {}
// expected-error at -1 {{attempt to use a deleted function}}
- // expected-note@#dr252-F {{'operator delete' has been explicitly marked deleted here}}
+ // expected-note@#dr252-F {{'operator delete' has been explicitly marked deleted here}}
struct G {
void operator delete(void*, size_t);
@@ -755,8 +755,8 @@ namespace dr254 { // dr254: 2.9
// it's not an elaborated-type-specifier
typedef struct T::type foo;
// expected-error at -1 {{typedef 'type' cannot be referenced with a struct specifier}}
- // expected-note@#dr254-instantiation {{in instantiation of template class 'dr254::A<dr254::C>' requested here}}
- // expected-note@#dr254-C {{declared here}}
+ // expected-note@#dr254-instantiation {{in instantiation of template class 'dr254::A<dr254::C>' requested here}}
+ // expected-note@#dr254-C {{declared here}}
};
struct B { struct type {}; };
struct C { typedef struct {} type; }; // #dr254-C
@@ -786,7 +786,7 @@ namespace dr257 { // dr257: 3.4
struct D : B {
D() {}
// expected-error at -1 {{constructor for 'dr257::D' must explicitly initialize the base class 'A' which does not have a default constructor}}
- // expected-note@#dr257-A {{'dr257::A' declared here}}
+ // expected-note@#dr257-A {{'dr257::A' declared here}}
void f();
};
}
@@ -808,7 +808,7 @@ namespace dr258 { // dr258: 2.8
int &w = b.f(0);
int &x = b.g<int>(0);
// expected-error at -1 {{no matching member function for call to 'g'}}
- // expected-note@#dr258-B-g {{candidate template ignored: invalid explicitly-specified argument for 1st template parameter}}
+ // expected-note@#dr258-B-g {{candidate template ignored: invalid explicitly-specified argument for 1st template parameter}}
int &y = b.h();
float &z = const_cast<const B&>(b).h();
@@ -826,7 +826,7 @@ namespace dr258 { // dr258: 2.8
void f() const {}
} f;
// expected-error at -1 {{variable type 'struct F' is an abstract class}}
- // expected-note@#dr258-E-f {{unimplemented pure virtual method 'f' in 'F'}}
+ // expected-note@#dr258-E-f {{unimplemented pure virtual method 'f' in 'F'}}
}
namespace dr259 { // dr259: 4
@@ -834,34 +834,34 @@ namespace dr259 { // dr259: 4
template struct A<int>; // #dr259-A-int
template struct A<int>;
// expected-error at -1 {{duplicate explicit instantiation of 'A<int>'}}
- // expected-note@#dr259-A-int {{previous explicit instantiation is here}}
+ // expected-note@#dr259-A-int {{previous explicit instantiation is here}}
template<> struct A<float>; // #dr259-A-float
template struct A<float>;
// expected-warning at -1 {{explicit instantiation of 'A<float>' that occurs after an explicit specialization has no effect}}
- // expected-note@#dr259-A-float {{previous template specialization is here}}
+ // expected-note@#dr259-A-float {{previous template specialization is here}}
template struct A<char>; // #dr259-A-char
template<> struct A<char>;
// expected-error at -1 {{explicit specialization of 'dr259::A<char>' after instantiation}}
- // expected-note@#dr259-A-char {{explicit instantiation first required here}}
+ // expected-note@#dr259-A-char {{explicit instantiation first required here}}
template<> struct A<double>;
template<> struct A<double>;
template<> struct A<double> {}; // #dr259-A-double
template<> struct A<double> {};
// expected-error at -1 {{redefinition of 'A<double>'}}
- // expected-note@#dr259-A-double {{previous definition is here}}
+ // expected-note@#dr259-A-double {{previous definition is here}}
template<typename T> struct B; // #dr259-B
template struct B<int>;
// expected-error at -1 {{explicit instantiation of undefined template 'dr259::B<int>'}}
- // expected-note@#dr259-B {{template is declared here}}
+ // expected-note@#dr259-B {{template is declared here}}
template<> struct B<float>; // #dr259-B-float
template struct B<float>;
// expected-warning at -1 {{explicit instantiation of 'B<float>' that occurs after an explicit specialization has no effect}}
- // expected-note@#dr259-B-float {{previous template specialization is here}}
+ // expected-note@#dr259-B-float {{previous template specialization is here}}
}
// FIXME: When dr260 is resolved, also add tests for DR507.
@@ -981,11 +981,11 @@ namespace dr275 { // dr275: no
// FIXME: this should be rejected in c++98 too
template void f(long);
// since-cxx11-error at -1 {{explicit instantiation of 'dr275::N::f' must occur in namespace 'N'}}
- // since-cxx11-note@#dr275-N-f {{explicit instantiation refers here}}
+ // since-cxx11-note@#dr275-N-f {{explicit instantiation refers here}}
// FIXME: this should be rejected in c++98 too
template void N::f(unsigned long);
// since-cxx11-error at -1 {{explicit instantiation of 'f' not in a namespace enclosing 'N'}}
- // since-cxx11-note@#dr275-N-f {{explicit instantiation refers here}}
+ // since-cxx11-note@#dr275-N-f {{explicit instantiation refers here}}
template void h(long);
// expected-error at -1 {{explicit instantiation of 'h' does not refer to a function template, variable template, member function, member class, or static data member}}
template <> void f(double) {}
@@ -1001,22 +1001,22 @@ namespace dr275 { // dr275: no
// FIXME: this should be rejected in c++98 too
template void f(short);
// since-cxx11-error at -1 {{explicit instantiation of 'dr275::N::f' must occur in namespace 'N'}}
- // since-cxx11-note@#dr275-N-f {{explicit instantiation refers here}}
+ // since-cxx11-note@#dr275-N-f {{explicit instantiation refers here}}
template void N::f(unsigned short);
// FIXME: this should probably be valid. the wording from the issue
// doesn't clarify this, but it follows from the usual rules.
template void g(int);
// expected-error at -1 {{partial ordering for explicit instantiation of 'g' is ambiguous}}
- // expected-note@#dr275-g {{explicit instantiation candidate function 'dr275::g<int>' template here [with T = int]}}
- // expected-note@#dr275-N-g {{explicit instantiation candidate function 'dr275::N::g<int>' template here [with T = int]}}
+ // expected-note@#dr275-g {{explicit instantiation candidate function 'dr275::g<int>' template here [with T = int]}}
+ // expected-note@#dr275-N-g {{explicit instantiation candidate function 'dr275::N::g<int>' template here [with T = int]}}
// FIXME: likewise, this should also be valid.
template<typename T> void f(T) {} // #dr275-f
template void f(short);
// expected-error at -1 {{partial ordering for explicit instantiation of 'f' is ambiguous}}
- // expected-note@#dr275-f {{explicit instantiation candidate function 'dr275::f<short>' template here [with T = short]}}
- // expected-note@#dr275-N-f {{explicit instantiation candidate function 'dr275::N::f<short>' template here [with T = short]}}
+ // expected-note@#dr275-f {{explicit instantiation candidate function 'dr275::f<short>' template here [with T = short]}}
+ // expected-note@#dr275-N-f {{explicit instantiation candidate function 'dr275::N::f<short>' template here [with T = short]}}
}
// dr276: na
@@ -1055,28 +1055,28 @@ namespace dr280 { // dr280: 2.9
d(); // ok, public
d(0);
// expected-error at -1 {{'operator void (*)(int)' is a private member of 'dr280::A'}}
- // expected-note@#dr280-D {{constrained by private inheritance here}}
- // expected-note@#dr280-A-f1 {{member is declared here}}
+ // expected-note@#dr280-D {{constrained by private inheritance here}}
+ // expected-note@#dr280-A-f1 {{member is declared here}}
d(0, 0); // ok, suppressed by member in D
d(0, 0, 0);
// expected-error at -1 {{'operator void (*)(int, int, int)' is a private member of 'dr280::B'}}
- // expected-note@#dr280-B-f3 {{declared private here}}
+ // expected-note@#dr280-B-f3 {{declared private here}}
e();
// expected-error at -1 {{call to object of type 'struct E' is ambiguous}}
- // expected-note@#dr280-B-f0 {{conversion candidate of type 'void (*)()'}}
- // expected-note@#dr280-C-f0 {{conversion candidate of type 'void (*)()'}}
+ // expected-note@#dr280-B-f0 {{conversion candidate of type 'void (*)()'}}
+ // expected-note@#dr280-C-f0 {{conversion candidate of type 'void (*)()'}}
e(0);
// expected-error at -1 {{call to object of type 'struct E' is ambiguous}}
- // expected-note@#dr280-A-f1 {{conversion candidate of type 'void (*)(int)'}}
- // expected-note@#dr280-C-f1 {{conversion candidate of type 'void (*)(int)'}}
+ // expected-note@#dr280-A-f1 {{conversion candidate of type 'void (*)(int)'}}
+ // expected-note@#dr280-C-f1 {{conversion candidate of type 'void (*)(int)'}}
e(0, 0);
// expected-error at -1 {{call to object of type 'struct E' is ambiguous}}
- // expected-note@#dr280-C-f2 {{conversion candidate of type 'void (*)(int, int)'}}
- // expected-note@#dr280-D-f2 {{conversion candidate of type 'void (*)(int, int)'}}
+ // expected-note@#dr280-C-f2 {{conversion candidate of type 'void (*)(int, int)'}}
+ // expected-note@#dr280-D-f2 {{conversion candidate of type 'void (*)(int, int)'}}
e(0, 0, 0);
// expected-error at -1 {{call to object of type 'struct E' is ambiguous}}
- // expected-note@#dr280-B-f3 {{conversion candidate of type 'void (*)(int, int, int)'}}
- // expected-note@#dr280-C-f3 {{conversion candidate of type 'void (*)(int, int, int)'}}
+ // expected-note@#dr280-B-f3 {{conversion candidate of type 'void (*)(int, int, int)'}}
+ // expected-note@#dr280-C-f3 {{conversion candidate of type 'void (*)(int, int, int)'}}
}
}
@@ -1102,10 +1102,10 @@ namespace dr283 { // dr283: yes
struct S {
friend class T;
// expected-error at -1 {{declaration of 'T' shadows template parameter}}
- // expected-note@#dr283-template {{template parameter is declared here}}
+ // expected-note@#dr283-template {{template parameter is declared here}}
class T;
// expected-error at -1 {{declaration of 'T' shadows template parameter}}
- // expected-note@#dr283-template {{template parameter is declared here}}
+ // expected-note@#dr283-template {{template parameter is declared here}}
};
}
@@ -1152,8 +1152,8 @@ namespace dr285 { // dr285: yes
template<typename T> void f(int, T); // #dr285-f-int-T
template<> void f<int>(int, int) {}
// expected-error at -1 {{function template specialization 'f' ambiguously refers to more than one function template; explicitly specify additional template arguments to identify a particular function template}}
- // expected-note@#dr285-f-int-T {{function template 'dr285::f<int>' matches specialization [with T = int]}}
- // expected-note@#dr285-f-T-int {{function template 'dr285::f<int>' matches specialization [with T = int]}}
+ // expected-note@#dr285-f-int-T {{function template 'dr285::f<int>' matches specialization [with T = int]}}
+ // expected-note@#dr285-f-T-int {{function template 'dr285::f<int>' matches specialization [with T = int]}}
}
namespace dr286 { // dr286: 2.8
@@ -1169,7 +1169,7 @@ namespace dr286 { // dr286: 2.8
A<short>::C::B<int*> absip;
// expected-error at -1 {{'B' is a private member of 'dr286::A<short>::C'}}
- // expected-note@#dr286-B {{implicitly declared private here}}
+ // expected-note@#dr286-B {{implicitly declared private here}}
}
// dr288: na
@@ -1178,11 +1178,11 @@ namespace dr289 { // dr289: yes
struct A; // #dr289-A
struct B : A {};
// expected-error at -1 {{base class has incomplete type}}
- // expected-note@#dr289-A {{forward declaration of 'dr289::A'}}
+ // expected-note@#dr289-A {{forward declaration of 'dr289::A'}}
template<typename T> struct C { typename T::error error; };
// expected-error at -1 {{type 'int' cannot be used prior to '::' because it has no members}}
- // expected-note@#dr289-C-int {{in instantiation of template class 'dr289::C<int>' requested here}}
+ // expected-note@#dr289-C-int {{in instantiation of template class 'dr289::C<int>' requested here}}
struct D : C<int> {}; // #dr289-C-int
}
@@ -1193,7 +1193,7 @@ namespace dr289 { // dr289: yes
namespace dr294 { // dr294: no
void f() throw(int);
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
int main() {
(void)static_cast<void (*)() throw()>(f); // FIXME: ill-formed in C++14 and before
// FIXME: since-cxx17-error at -1 {{static_cast from 'void (*)() throw(int)' to 'void (*)() throw()' is not allowed}}
@@ -1207,14 +1207,14 @@ namespace dr294 { // dr294: no
// conversion, but that is being changed by core issue).
(void)static_cast<void (*)() throw(int)>(f); // FIXME: ill-formed in C++14 and before
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
void (*p)() throw() = f;
// cxx98-14-error at -1 {{target exception specification is not superset of source}}
// since-cxx17-error at -2 {{cannot initialize a variable of type 'void (*)() throw()' with an lvalue of type 'void () throw(int)':
diff erent exception specifications}}
void (*q)() throw(int) = f;
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
}
}
@@ -1260,10 +1260,10 @@ namespace dr298 { // dr298: 3.1
struct A a;
struct B b;
// expected-error at -1 {{typedef 'B' cannot be referenced with a struct specifier}}
- // expected-note@#dr298-B {{declared here}}
+ // expected-note@#dr298-B {{declared here}}
struct C c;
// expected-error at -1 {{typedef 'C' cannot be referenced with a struct specifier}}
- // expected-note@#dr298-C {{declared here}}
+ // expected-note@#dr298-C {{declared here}}
B::B() {}
// expected-error at -1 {{a type specifier is required for all declarations}}
@@ -1274,7 +1274,7 @@ namespace dr298 { // dr298: 3.1
typedef struct D E; // #dr298-E
struct E {};
// expected-error at -1 {{definition of type 'E' conflicts with typedef of the same name}}
- // expected-note@#dr298-E {{'E' declared here}}
+ // expected-note@#dr298-E {{'E' declared here}}
struct F {
~F();
diff --git a/clang/test/CXX/drs/dr3xx.cpp b/clang/test/CXX/drs/dr3xx.cpp
index b1fcf709c22731..4584801f9f9714 100644
--- a/clang/test/CXX/drs/dr3xx.cpp
+++ b/clang/test/CXX/drs/dr3xx.cpp
@@ -26,7 +26,7 @@ namespace dr301 { // dr301: 3.5
// cxx20-23-note at -3 {{to match this '<'}}
bool c = (void(*)(S, S))operator+ < (void(*)(S, S))operator-;
// expected-error at -1 {{expected '>'}}
- // expected-note at -2 {{to match this '<'}}
+ // expected-note at -2 {{to match this '<'}}
}
template<typename T> void f() {
@@ -71,8 +71,8 @@ namespace dr302 { // dr302: 3.0
#if __cplusplus < 201103L
struct B {
// expected-error at -1 {{implicit default constructor for 'dr302::B' must explicitly initialize the const member 'n'}}
- // expected-note@#dr302-b {{in implicit default constructor for 'dr302::B' first required here}}
- // expected-note@#dr302-B-n {{declared here}}
+ // expected-note@#dr302-b {{in implicit default constructor for 'dr302::B' first required here}}
+ // expected-note@#dr302-B-n {{declared here}}
const int n; // #dr302-B-n
A a;
} b = B(); // #dr302-b
@@ -86,13 +86,13 @@ namespace dr302 { // dr302: 3.0
A a;
} b = B();
// expected-error at -1 {{call to implicitly-deleted default constructor of 'B'}}
- // expected-note@#dr302-B-n {{default constructor of 'B' is implicitly deleted because field 'n' of const-qualified type 'const int' would not be initialized}}
+ // expected-note@#dr302-B-n {{default constructor of 'B' is implicitly deleted because field 'n' of const-qualified type 'const int' would not be initialized}}
// C::C() is called here, because even though it's trivial, it's deleted.
struct C {
const int n; // #dr302-C-n
} c = C();
// expected-error at -1 {{call to implicitly-deleted default constructor of 'C'}}
- // expected-note@#dr302-C-n {{default constructor of 'C' is implicitly deleted because field 'n' of const-qualified type 'const int' would not be initialized}}
+ // expected-note@#dr302-C-n {{default constructor of 'C' is implicitly deleted because field 'n' of const-qualified type 'const int' would not be initialized}}
struct D {
const int n = 0;
} d = D();
@@ -132,7 +132,7 @@ namespace dr305 { // dr305: no
struct B {}; // #dr305-h-B
b->~B();
// expected-error at -1 {{destructor type 'B' in object destruction expression does not match the type 'B' (aka 'dr305::A') of the object being destroyed}}
- // expected-note@#dr305-h-B {{type 'B' found by destructor name lookup}}
+ // expected-note@#dr305-h-B {{type 'B' found by destructor name lookup}}
}
template<typename T> struct X {};
@@ -186,8 +186,8 @@ namespace dr306 { // dr306: dup 39
Z<X>::X zx;
Z<const X>::X zcx;
// expected-error at -1 {{member 'X' found in multiple base classes of
diff erent types}}
- // expected-note@#dr306-X {{member type 'dr306::X' found}}
- // expected-note@#dr306-typedef-X {{member type 'const dr306::X' found}}
+ // expected-note@#dr306-X {{member type 'dr306::X' found}}
+ // expected-note@#dr306-typedef-X {{member type 'const dr306::X' found}}
}
// dr307: na
@@ -214,7 +214,7 @@ namespace dr308 { // dr308: 3.7
// unreachable
} catch (const B&) {
// expected-warning at -1 {{exception of type 'const B &' will be caught by earlier handler}}
- // expected-note@#dr308-catch-A {{for type 'const A &'}}
+ // expected-note@#dr308-catch-A {{for type 'const A &'}}
// get here instead
}
}
@@ -269,7 +269,7 @@ namespace dr317 { // dr317: 3.5
void f() {} // #dr317-f
inline void f();
// expected-error at -1 {{inline declaration of 'f' follows non-inline definition}}
- // expected-note@#dr317-f {{previous definition is here}}
+ // expected-note@#dr317-f {{previous definition is here}}
int g();
int n = g();
@@ -280,7 +280,7 @@ namespace dr317 { // dr317: 3.5
int h() { return 0; } // #dr317-h
inline int h();
// expected-error at -1 {{inline declaration of 'h' follows non-inline definition}}
- // expected-note@#dr317-h {{previous definition is here}}
+ // expected-note@#dr317-h {{previous definition is here}}
}
namespace dr318 { // dr318: sup 1310
@@ -372,12 +372,12 @@ namespace dr324 { // dr324: 3.6
struct S { int n : 1; } s; // #dr324-n
int &a = s.n;
// expected-error at -1 {{non-const reference cannot bind to bit-field 'n'}}
- // expected-note@#dr324-n {{bit-field is declared here}}
+ // expected-note@#dr324-n {{bit-field is declared here}}
int *b = &s.n;
// expected-error at -1 {{address of bit-field requested}}
int &c = (s.n = 0);
// expected-error at -1 {{non-const reference cannot bind to bit-field 'n'}}
- // expected-note@#dr324-n {{bit-field is declared here}}
+ // expected-note@#dr324-n {{bit-field is declared here}}
int *d = &(s.n = 0);
// expected-error at -1 {{address of bit-field requested}}
// FIXME: why don't we emit a note here, as for the rest of this type of diagnostic in this test?
@@ -387,7 +387,7 @@ namespace dr324 { // dr324: 3.6
// expected-error at -1 {{address of bit-field requested}}
int &g = (void(), s.n);
// expected-error at -1 {{non-const reference cannot bind to bit-field 'n'}}
- // expected-note@#dr324-n {{bit-field is declared here}}
+ // expected-note@#dr324-n {{bit-field is declared here}}
int *h = &(void(), s.n);
// expected-error at -1 {{address of bit-field requested}}
int *i = &++s.n;
@@ -411,13 +411,13 @@ namespace dr328 { // dr328: yes
struct A; // #dr328-A
struct B { A a; };
// expected-error at -1 {{field has incomplete type 'A'}}
- // expected-note@#dr328-A {{forward declaration of 'dr328::A'}}
+ // expected-note@#dr328-A {{forward declaration of 'dr328::A'}}
template<typename> struct C { A a; };
// expected-error at -1 {{field has incomplete type 'A'}}
- // expected-note@#dr328-A {{forward declaration of 'dr328::A'}}
+ // expected-note@#dr328-A {{forward declaration of 'dr328::A'}}
A *p = new A[0];
// expected-error at -1 {{allocation of incomplete type 'A'}}
- // expected-note@#dr328-A {{forward declaration of 'dr328::A'}}
+ // expected-note@#dr328-A {{forward declaration of 'dr328::A'}}
}
namespace dr329 { // dr329: 3.5
@@ -426,11 +426,11 @@ namespace dr329 { // dr329: 3.5
friend void f(A a) { g(a); }
friend void h(A a) { g(a); }
// expected-error at -1 {{use of undeclared identifier 'g'}}
- // expected-note@#dr329-h-call {{in instantiation of member function 'dr329::h' requested here}}
+ // expected-note@#dr329-h-call {{in instantiation of member function 'dr329::h' requested here}}
friend void i(B b) {} // #dr329-i
// expected-error at -1 {{redefinition of 'i'}}
- // expected-note@#dr329-b {{in instantiation of template class 'dr329::A<char>' requested here}}
- // expected-note@#dr329-i {{previous definition is here}}
+ // expected-note@#dr329-b {{in instantiation of template class 'dr329::A<char>' requested here}}
+ // expected-note@#dr329-i {{previous definition is here}}
};
A<int> a;
A<char> b; // #dr329-b
@@ -540,10 +540,10 @@ namespace dr331 { // dr331: 11
};
const A a;
// expected-error at -1 {{no matching constructor for initialization of 'const A'}}
- // expected-note@#dr331-A-ctor {{candidate constructor not viable: requires 1 argument, but 0 were provided}}
+ // expected-note@#dr331-A-ctor {{candidate constructor not viable: requires 1 argument, but 0 were provided}}
const A b(a);
// expected-error at -1 {{no matching constructor for initialization of 'const A'}}
- // expected-note@#dr331-A-ctor {{candidate constructor not viable: 1st argument ('const A') would lose const qualifier}}
+ // expected-note@#dr331-A-ctor {{candidate constructor not viable: 1st argument ('const A') would lose const qualifier}}
}
namespace dr332 { // dr332: dup 577
@@ -638,7 +638,7 @@ namespace dr339 { // dr339: 2.8
A<2> b = f(0.0f);
A<3> c = f("foo");
// expected-error at -1 {{no matching function}}
- // expected-note@#dr339-f {{candidate}}
+ // expected-note@#dr339-f {{candidate}}
}
@@ -673,30 +673,30 @@ namespace dr341 { // dr341: sup 1708
namespace B {
extern "C" int &dr341_a = dr341_a;
// expected-error at -1 {{redefinition of 'dr341_a'}}
- // expected-note@#dr341_a {{previous definition is here}}
+ // expected-note@#dr341_a {{previous definition is here}}
}
extern "C" void dr341_b(); // #dr341_b
}
int dr341_a;
// expected-error at -1 {{declaration of 'dr341_a' in global scope conflicts with declaration with C language linkage}}
-// expected-note@#dr341_a {{declared with C language linkage here}}
+// expected-note@#dr341_a {{declared with C language linkage here}}
int dr341_b;
// expected-error at -1 {{declaration of 'dr341_b' in global scope conflicts with declaration with C language linkage}}
-// expected-note@#dr341_b {{declared with C language linkage here}}
+// expected-note@#dr341_b {{declared with C language linkage here}}
int dr341_c; // #dr341_c
int dr341_d; // #dr341_d
namespace dr341 {
extern "C" int dr341_c;
// expected-error at -1 {{declaration of 'dr341_c' with C language linkage conflicts with declaration in global scope}}
- // expected-note@#dr341_c {{declared in global scope here}}
+ // expected-note@#dr341_c {{declared in global scope here}}
extern "C" void dr341_d();
// expected-error at -1 {{declaration of 'dr341_d' with C language linkage conflicts with declaration in global scope}}
- // expected-note@#dr341_d {{declared in global scope here}}
+ // expected-note@#dr341_d {{declared in global scope here}}
namespace A { extern "C" int dr341_e; } // #dr341_e
namespace B { extern "C" void dr341_e(); }
// expected-error at -1 {{redefinition of 'dr341_e' as
diff erent kind of symbol}}
- // expected-note@#dr341_e {{previous definition is here}}
+ // expected-note@#dr341_e {{previous definition is here}}
}
// dr342: na
@@ -729,8 +729,8 @@ namespace dr345 { // dr345: yes
};
template <class T> void f(T t) { typename T::X x; }
// expected-error at -1 {{typename specifier refers to non-type member 'X' in 'dr345::A'}}
- // expected-note@#dr345-f-a {{in instantiation of function template specialization 'dr345::f<dr345::A>' requested here}}
- // expected-note@#dr345-int-X {{referenced member 'X' is declared here}}
+ // expected-note@#dr345-f-a {{in instantiation of function template specialization 'dr345::f<dr345::A>' requested here}}
+ // expected-note@#dr345-int-X {{referenced member 'X' is declared here}}
void f(A a, B b) {
f(b);
f(a); // #dr345-f-a
@@ -768,7 +768,7 @@ namespace dr349 { // dr349: no
return p;
// cxx98-20-error at -1 {{cannot initialize return object of type 'const int ***' with an lvalue of type 'int ***'}}
// since-cxx23-error at -2 {{cannot initialize return object of type 'const int ***' with an rvalue of type 'int ***'}}
- // expected-note@#dr349-p1 {{in instantiation of function template specialization 'dr349::A::operator const int ***<const int>' requested here}}
+ // expected-note@#dr349-p1 {{in instantiation of function template specialization 'dr349::A::operator const int ***<const int>' requested here}}
}
};
@@ -804,12 +804,12 @@ namespace dr352 { // dr352: 2.8
void f(A::E e) {
foo(e, &arg);
// expected-error at -1 {{no matching function for call to 'foo'}}
- // expected-note@#dr352-foo {{candidate template ignored: couldn't infer template argument 'R'}}
+ // expected-note@#dr352-foo {{candidate template ignored: couldn't infer template argument 'R'}}
using A::foo;
foo<int, int>(e, &arg);
// expected-error at -1 {{attempt to use a deleted function}}
- // expected-note@#dr352-deleted {{'arg<int>' has been explicitly marked deleted here}}
+ // expected-note@#dr352-deleted {{'arg<int>' has been explicitly marked deleted here}}
}
int arg(int);
@@ -817,7 +817,7 @@ namespace dr352 { // dr352: 2.8
void g(A::E e) {
foo(e, &arg);
// expected-error at -1 {{no matching function for call to 'foo'}}
- // expected-note@#dr352-foo {{candidate template ignored: couldn't infer template argument 'R'}}
+ // expected-note@#dr352-foo {{candidate template ignored: couldn't infer template argument 'R'}}
using A::foo;
foo<int, int>(e, &arg); // ok, uses non-template
@@ -834,7 +834,7 @@ namespace dr352 { // dr352: 2.8
f1(a);
f2(a);
// expected-error at -1 {{no matching function for call to 'f2'}}
- // expected-note@#dr352-f2 {{candidate template ignored: couldn't infer template argument 'I'}}
+ // expected-note@#dr352-f2 {{candidate template ignored: couldn't infer template argument 'I'}}
f3(a, b);
}
@@ -848,7 +848,7 @@ namespace dr352 { // dr352: 2.8
g1(a);
g2(a);
// expected-error at -1 {{no matching function for call to 'g2'}}
- // expected-note@#dr352-g2 {{candidate template ignored: couldn't infer template argument 'I'}}
+ // expected-note@#dr352-g2 {{candidate template ignored: couldn't infer template argument 'I'}}
g3(a, b);
}
@@ -857,7 +857,7 @@ namespace dr352 { // dr352: 2.8
void h() {
h1();
// expected-error at -1 {{no matching function for call to 'h1'}}
- // expected-note@#dr352-h1 {{candidate template ignored: couldn't infer template argument 'T'}}
+ // expected-note@#dr352-h1 {{candidate template ignored: couldn't infer template argument 'T'}}
h1(0);
h1<int>();
h2(0);
@@ -874,20 +874,20 @@ namespace dr352 { // dr352: 2.8
extern int ambig(float), ambig(int);
i1(ambig);
// expected-error at -1 {{no matching function for call to 'i1'}}
- // expected-note@#dr352-i1 {{candidate template ignored: couldn't infer template argument 'R'}}
+ // expected-note@#dr352-i1 {{candidate template ignored: couldn't infer template argument 'R'}}
i2(0, 0, ambig);
extern void no_match(float), no_match(int);
i1(no_match);
// expected-error at -1 {{no matching function for call to 'i1'}}
- // expected-note@#dr352-i1 {{candidate template ignored: couldn't infer template argument 'R'}}
+ // expected-note@#dr352-i1 {{candidate template ignored: couldn't infer template argument 'R'}}
i2(0, 0, no_match);
// expected-error at -1 {{no matching function for call to 'i2'}}
- // expected-note@#dr352-i2 {{candidate function [with R = int, A = int] not viable: no overload of 'no_match' matching 'int (*)(int)' for 3rd argument}}
+ // expected-note@#dr352-i2 {{candidate function [with R = int, A = int] not viable: no overload of 'no_match' matching 'int (*)(int)' for 3rd argument}}
i1(tmpl);
// expected-error at -1 {{no matching function for call to 'i1'}}
- // expected-note@#dr352-i1 {{candidate template ignored: couldn't infer template argument 'R'}}
+ // expected-note@#dr352-i1 {{candidate template ignored: couldn't infer template argument 'R'}}
i2(0, 0, tmpl);
}
}
@@ -923,7 +923,7 @@ namespace dr352 { // dr352: 2.8
void h(A<1> a1, A<2> a2) {
g(a1);
// expected-error at -1 {{no matching function for call to 'g'}}
- // expected-note@#dr352-g {{candidate template ignored: couldn't infer template argument 'I'}}
+ // expected-note@#dr352-g {{candidate template ignored: couldn't infer template argument 'I'}}
g<0>(a1);
f(a1, a2);
}
@@ -964,8 +964,8 @@ namespace dr354 { // dr354: yes c++11
int b0 = both<0>();
int b1 = both<(int*)0>();
// cxx98-error at -1 {{no matching function for call to 'both'}}
- // cxx98-note@#dr354-both-int-ptr {{candidate template ignored: invalid explicitly-specified argument for 1st template parameter}}
- // cxx98-note@#dr354-both-int {{candidate template ignored: invalid explicitly-specified argument for 1st template parameter}}
+ // cxx98-note@#dr354-both-int-ptr {{candidate template ignored: invalid explicitly-specified argument for 1st template parameter}}
+ // cxx98-note@#dr354-both-int {{candidate template ignored: invalid explicitly-specified argument for 1st template parameter}}
template<int S::*> struct ptr_mem {}; // #dr354-ptr_mem
ptr_mem<0> m0; // #dr354-m0
@@ -1003,7 +1003,7 @@ namespace dr357 { // dr357: yes
};
template<typename T> void A<T>::f() {}
// expected-error at -1 {{out-of-line definition of 'f' does not match any declaration in 'A<T>'}}
- // expected-note@#dr357-f {{member declaration does not match because it is const qualified}}
+ // expected-note@#dr357-f {{member declaration does not match because it is const qualified}}
struct B {
template<typename T> void f();
@@ -1070,10 +1070,10 @@ struct B : A {
int main() {
int foo = B().foo();
// expected-error at -1 {{'foo' is a private member of 'dr360::B'}}
- // expected-note@#dr360-using-foo {{declared private here}}
+ // expected-note@#dr360-using-foo {{declared private here}}
int bar = B().bar();
// expected-error at -1 {{'bar' is a protected member of 'dr360::B'}}
- // expected-note@#dr360-using-bar {{declared protected here}}
+ // expected-note@#dr360-using-bar {{declared protected here}}
int baz = B().baz();
}
} // namespace dr360
@@ -1120,7 +1120,7 @@ namespace dr368 { // dr368: 3.6
template<typename T, T> struct S {}; // #dr368-S
template<typename T> int f(S<T, T()> *);
// expected-error at -1 {{template argument for non-type template parameter is treated as function type 'T ()'}}
- // expected-note@#dr368-S {{template parameter is declared here}}
+ // expected-note@#dr368-S {{template parameter is declared here}}
template<typename T> int g(S<T, (T())> *); // #dr368-g
template<typename T> int g(S<T, true ? T() : T()> *); // #dr368-g-2
struct X {};
@@ -1151,16 +1151,16 @@ namespace dr372 { // dr372: no
T1<T>,
T2<typename T1<T>::Type> {};
// expected-error at -1 {{'Type' is a protected member of 'dr372::example1::X<int>'}}
- // expected-note@#dr372-z1 {{in instantiation of template class 'dr372::example1::Z1<int, dr372::example1::X, dr372::example1::Y>' requested here}}
- // expected-note@#dr372-ex1-Type {{declared protected here}}
+ // expected-note@#dr372-z1 {{in instantiation of template class 'dr372::example1::Z1<int, dr372::example1::X, dr372::example1::Y>' requested here}}
+ // expected-note@#dr372-ex1-Type {{declared protected here}}
template<typename T,
template<typename> class T1,
template<typename> class T2> struct Z2 :
T2<typename T1<T>::Type>,
// expected-error at -1 {{'Type' is a protected member of 'dr372::example1::X<int>'}}
- // expected-note@#dr372-z2 {{in instantiation of template class 'dr372::example1::Z2<int, dr372::example1::X, dr372::example1::Y>' requested here}}
- // expected-note@#dr372-ex1-Type {{declared protected here}}
+ // expected-note@#dr372-z2 {{in instantiation of template class 'dr372::example1::Z2<int, dr372::example1::X, dr372::example1::Y>' requested here}}
+ // expected-note@#dr372-ex1-Type {{declared protected here}}
T1<T> {};
Z1<int, X, Y> z1; // #dr372-z1
@@ -1175,8 +1175,8 @@ namespace dr372 { // dr372: no
template<typename T> struct A {
typename T::Type t;
// expected-error at -1 {{'Type' is a private member of 'dr372::example2::X'}}
- // expected-note@#dr372-ax {{in instantiation of template class 'dr372::example2::A<dr372::example2::X>' requested here}}
- // expected-note@#dr372-ex2-Type {{declared private here}}
+ // expected-note@#dr372-ax {{in instantiation of template class 'dr372::example2::A<dr372::example2::X>' requested here}}
+ // expected-note@#dr372-ex2-Type {{declared private here}}
};
A<X> ax; // #dr372-ax
}
@@ -1190,12 +1190,12 @@ namespace dr372 { // dr372: no
template<typename T> struct B {};
template<typename U> struct C : U, B<typename U::N> {};
// expected-error at -1 {{'N' is a protected member of 'dr372::example3::A'}}
- // expected-note@#dr372-x {{in instantiation of template class 'dr372::example3::C<dr372::example3::A>' requested here}}
- // expected-note@#dr372-N {{declared protected here}}
+ // expected-note@#dr372-x {{in instantiation of template class 'dr372::example3::C<dr372::example3::A>' requested here}}
+ // expected-note@#dr372-N {{declared protected here}}
template<typename U> struct D : B<typename U::N>, U {};
// expected-error at -1 {{'N' is a protected member of 'dr372::example3::A'}}
- // expected-note@#dr372-y {{in instantiation of template class 'dr372::example3::D<dr372::example3::A>' requested here}}
- // expected-note@#dr372-N {{declared protected here}}
+ // expected-note@#dr372-y {{in instantiation of template class 'dr372::example3::D<dr372::example3::A>' requested here}}
+ // expected-note@#dr372-N {{declared protected here}}
C<A> x; // #dr372-x
D<A> y; // #dr372-y
@@ -1223,7 +1223,7 @@ namespace dr372 { // dr372: no
};
struct D : A::B, A {};
// expected-error at -1 {{'B' is a protected member of 'dr372::std_example::A'}}
- // expected-note@#dr372-B-std {{declared protected here}}
+ // expected-note@#dr372-B-std {{declared protected here}}
}
// FIXME: This is valid: deriving from A::B gives access to A::B!
@@ -1235,7 +1235,7 @@ namespace dr372 { // dr372: no
struct A::B : A {};
struct C : A::B {};
// expected-error at -1 {{'B' is a protected member of 'dr372::badwolf::A'}}
- // expected-note@#dr372-B {{declared protected here}}
+ // expected-note@#dr372-B {{declared protected here}}
}
}
@@ -1246,7 +1246,7 @@ namespace dr373 { // dr373: 5
using namespace dr373::X;
int k = dr373;
// expected-error at -1 {{'dr373' does not refer to a value}}
- // expected-note@#dr373-struct {{declared here}}
+ // expected-note@#dr373-struct {{declared here}}
namespace Y = dr373::X;
k = Y::dr373;
}
@@ -1255,10 +1255,10 @@ namespace dr373 { // dr373: 5
struct A { struct B {}; }; // #dr373-A
namespace X = A::B;
// expected-error at -1 {{expected namespace name}}
- // expected-note@#dr373-A {{'A' declared here}}
+ // expected-note@#dr373-A {{'A' declared here}}
using namespace A::B;
// expected-error at -1 {{expected namespace name}}
- // expected-note@#dr373-A {{'A' declared here}}
+ // expected-note@#dr373-A {{'A' declared here}}
}
namespace dr374 { // dr374: 7
@@ -1361,8 +1361,8 @@ namespace dr385 { // dr385: 2.8
struct F : E { friend int i(E); };
int i(E e) { return e.n; }
// expected-error at -1 {{'n' is a protected member of 'dr385::D'}}
- // expected-note@#dr385-E {{constrained by protected inheritance here}}
- // expected-note@#dr385-n {{member is declared here}}
+ // expected-note@#dr385-E {{constrained by protected inheritance here}}
+ // expected-note@#dr385-n {{member is declared here}}
}
namespace dr387 { // dr387: 2.8
@@ -1375,10 +1375,10 @@ namespace dr387 { // dr387: 2.8
void g() {
number<double> a(3);
// expected-error at -1 {{calling a private constructor of class 'dr387::old::number<double>'}}
- // expected-note@#dr387-number-ctor {{implicitly declared private here}}
+ // expected-note@#dr387-number-ctor {{implicitly declared private here}}
number<double> b(4);
// expected-error at -1 {{calling a private constructor of class 'dr387::old::number<double>'}}
- // expected-note@#dr387-number-ctor {{implicitly declared private here}}
+ // expected-note@#dr387-number-ctor {{implicitly declared private here}}
a = gcd(a, b);
b = gcd(3, 4);
// expected-error at -1 {{use of undeclared identifier 'gcd'}}
@@ -1451,19 +1451,19 @@ namespace dr389 { // dr389: no
typedef T<WithoutLinkage1> BadArg1;
// expected-error at -1 {{template argument uses unnamed type}}
- // expected-note@#dr389-no-link-1 {{unnamed type used in template argument was declared here}}
+ // expected-note@#dr389-no-link-1 {{unnamed type used in template argument was declared here}}
typedef T<WithoutLinkage2> BadArg2;
// expected-error at -1 {{template argument uses unnamed type}}
- // expected-note@#dr389-no-link-2 {{unnamed type used in template argument was declared here}}
+ // expected-note@#dr389-no-link-2 {{unnamed type used in template argument was declared here}}
typedef T<WithoutLinkage3> BadArg3;
// expected-error at -1 {{template argument uses unnamed type}}
- // expected-note@#dr389-C {{unnamed type used in template argument was declared here}}
+ // expected-note@#dr389-C {{unnamed type used in template argument was declared here}}
typedef T<WithoutLinkage4> BadArg4;
// expected-error at -1 {{template argument uses unnamed type}}
- // expected-note@#dr389-D {{unnamed type used in template argument was declared here}}
+ // expected-note@#dr389-D {{unnamed type used in template argument was declared here}}
typedef T<WithoutLinkage5> BadArg5;
// expected-error at -1 {{template argument uses unnamed type}}
- // expected-note@#dr389-C {{unnamed type used in template argument was declared here}}
+ // expected-note@#dr389-C {{unnamed type used in template argument was declared here}}
#endif
extern WithLinkage1 withLinkage1;
@@ -1530,14 +1530,14 @@ namespace dr390 { // dr390: 3.3
struct A {
A() { f(); }
// expected-warning at -1 {{call to pure virtual member function 'f' has undefined behavior; overrides of 'f' in subclasses are not available in the constructor of 'dr390::A<int>'}}
- // expected-note@#dr390-A-int {{in instantiation of member function 'dr390::A<int>::A' requested here}}
- // expected-note@#dr390-f {{'f' declared here}}
+ // expected-note@#dr390-A-int {{in instantiation of member function 'dr390::A<int>::A' requested here}}
+ // expected-note@#dr390-f {{'f' declared here}}
virtual void f() = 0; // #dr390-f
virtual ~A() = 0;
};
template<typename T> A<T>::~A() { T::error; }
// expected-error at -1 {{type 'int' cannot be used prior to '::' because it has no members}}
- // expected-note@#dr390-A-int {{in instantiation of member function 'dr390::A<int>::~A' requested here}}
+ // expected-note@#dr390-A-int {{in instantiation of member function 'dr390::A<int>::~A' requested here}}
template<typename T> void A<T>::f() { T::error; } // ok, not odr-used
struct B : A<int> { // #dr390-A-int
void f() {}
@@ -1550,14 +1550,14 @@ namespace dr391 { // dr391: 2.8 c++11
A fa();
const A &a = fa();
// cxx98-error at -1 {{C++98 requires an accessible copy constructor for class 'dr391::A' when binding a reference to a temporary; was private}}
- // cxx98-note@#dr391-A {{implicitly declared private here}}
+ // cxx98-note@#dr391-A {{implicitly declared private here}}
struct B { B(const B&) = delete; }; // #dr391-B
// cxx98-error at -1 {{deleted function definitions are a C++11 extension}}
B fb();
const B &b = fb();
// cxx98-error at -1 {{copying variable of type 'B' invokes deleted constructor}}
- // cxx98-note@#dr391-B {{'B' has been explicitly marked deleted here}}
+ // cxx98-note@#dr391-B {{'B' has been explicitly marked deleted here}}
template<typename T>
struct C {
@@ -1600,7 +1600,7 @@ namespace dr395 { // dr395: 3.0
} null1;
int (S::*p)() = null1;
// expected-error at -1 {{no viable conversion from 'struct null1_t' to 'int (dr395::S::*)()'}}
- // expected-note@#dr395-conv-func {{candidate template ignored: couldn't infer template argument 'T'}}
+ // expected-note@#dr395-conv-func {{candidate template ignored: couldn't infer template argument 'T'}}
template <typename T> using id = T;
// cxx98-error at -1 {{alias declarations are a C++11 extension}}
@@ -1664,16 +1664,16 @@ namespace dr398 { // dr398: yes
void test() {
f<A>(0);
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr398-f {{candidate template ignored: substitution failure [with T = A]: no type named 'Y' in 'dr398::example2::A'}}
+ // expected-note@#dr398-f {{candidate template ignored: substitution failure [with T = A]: no type named 'Y' in 'dr398::example2::A'}}
f<B>(0);
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr398-f {{candidate template ignored: substitution failure [with T = B]: typename specifier refers to non-type member 'Y' in 'dr398::example2::B'}}
+ // expected-note@#dr398-f {{candidate template ignored: substitution failure [with T = B]: typename specifier refers to non-type member 'Y' in 'dr398::example2::B'}}
g<C>(0);
// expected-error at -1 {{no matching function for call to 'g'}}
- // expected-note@#dr398-g {{candidate template ignored: substitution failure [with T = C]: missing 'typename' prior to dependent type name 'C::N'}}
+ // expected-note@#dr398-g {{candidate template ignored: substitution failure [with T = C]: missing 'typename' prior to dependent type name 'C::N'}}
h<D>(0);
// expected-error at -1 {{no matching function for call to 'h'}}
- // expected-note@#dr398-h {{candidate template ignored: substitution failure [with T = D]: 'TT' following the 'template' keyword does not refer to a template}}
+ // expected-note@#dr398-h {{candidate template ignored: substitution failure [with T = D]: 'TT' following the 'template' keyword does not refer to a template}}
}
}
}
@@ -1690,7 +1690,7 @@ namespace dr399 { // dr399: 11
void f() {
D_object.~B();
// expected-error at -1 {{destructor type 'dr399::B' in object destruction expression does not match the type 'D' of the object being destroyed}}
- // expected-note@#dr399-B {{type 'dr399::B' found by destructor name lookup}}
+ // expected-note@#dr399-B {{type 'dr399::B' found by destructor name lookup}}
D_object.B::~B();
D_object.D::~B(); // FIXME: Missing diagnostic for this.
B_ptr->~B();
@@ -1743,7 +1743,7 @@ namespace dr399 { // dr399: 11
// Rejecting this seems correct, but most compilers accept, so we do also.
f.N::F::~G();
// expected-error at -1 {{qualified destructor name only found in lexical scope; omit the qualifier to find this type name by unqualified lookup}}
- // expected-note@#dr399-G {{type 'G' (aka 'E<int>') found by destructor name lookup}}
+ // expected-note@#dr399-G {{type 'G' (aka 'E<int>') found by destructor name lookup}}
}
// Bizarrely, compilers perform lookup in the scope for qualified destructor
@@ -1757,7 +1757,7 @@ namespace dr399 { // dr399: 11
typedef typename N::S<U>::Inner T;
p->::dr399::QualifiedLookupInScope::N::S<U>::Inner::~T();
// expected-error at -1 {{no type named 'T' in 'dr399::QualifiedLookupInScope::N::S<int>'}}
- // expected-note@#dr399-f {{in instantiation of function template specialization 'dr399::QualifiedLookupInScope::f<int>' requested here}}
+ // expected-note@#dr399-f {{in instantiation of function template specialization 'dr399::QualifiedLookupInScope::f<int>' requested here}}
}
template void f<int>(N::S<int>::Inner *); // #dr399-f
diff --git a/clang/test/CXX/drs/dr4xx.cpp b/clang/test/CXX/drs/dr4xx.cpp
index fa90764df9b03b..aa7a41b95ccd85 100644
--- a/clang/test/CXX/drs/dr4xx.cpp
+++ b/clang/test/CXX/drs/dr4xx.cpp
@@ -28,8 +28,8 @@ namespace dr400 { // dr400: yes
};
struct E : A, B { struct a b; };
// expected-error at -1 {{member 'a' found in multiple base classes of
diff erent types}}
- // expected-note@#dr400-A {{member type 'dr400::A::a' found by ambiguous name lookup}}
- // expected-note@#dr400-B {{member type 'dr400::B::a' found by ambiguous name lookup}}
+ // expected-note@#dr400-A {{member type 'dr400::A::a' found by ambiguous name lookup}}
+ // expected-note@#dr400-B {{member type 'dr400::B::a' found by ambiguous name lookup}}
}
namespace dr401 { // dr401: 2.8
@@ -80,7 +80,7 @@ namespace dr401 { // dr401: 2.8
// cxx98-note@#dr402-B-type {{declared protected here}}
void g(B b) { f(b); } // #dr402-f-b
// since-cxx11-error at -1 {{no matching function for call to 'f'}}
- // since-cxx11-note@#dr402-f {{candidate template ignored: substitution failure [with T = B, U = typename B::type]: 'type' is a protected member of 'dr401::B'}}
+ // since-cxx11-note@#dr402-f {{candidate template ignored: substitution failure [with T = B, U = typename B::type]: 'type' is a protected member of 'dr401::B'}}
}
namespace dr403 { // dr403: yes
@@ -117,16 +117,16 @@ namespace dr405 { // dr405: yes
// expected-error at -1 {{called object type 'int' is not a function or function pointer}}
void test2(A::S as) { void f(); f(as); }
// expected-error at -1 {{too many arguments to function call, expected 0, have 1}}
- // expected-note at -2 {{'f' declared here}}
+ // expected-note at -2 {{'f' declared here}}
void test3(A::S as) { using A::f; f(as); } // ok
void test4(A::S as) { using B::f; f(as); } // ok
void test5(A::S as) { int f; f(as); }
// expected-error at -1 {{called object type 'int' is not a function or function pointer}}
void test6(A::S as) { struct f {}; (void) f(as); }
// expected-error at -1 {{no matching conversion for functional-style cast from 'A::S' to 'f'}}
- // expected-note at -2 {{candidate constructor (the implicit copy constructor) not viable: no known conversion from 'A::S' to 'const f' for 1st argument}}
- // since-cxx11-note at -3 {{candidate constructor (the implicit move constructor) not viable: no known conversion from 'A::S' to 'f' for 1st argument}}
- // expected-note at -4 {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
+ // expected-note at -2 {{candidate constructor (the implicit copy constructor) not viable: no known conversion from 'A::S' to 'const f' for 1st argument}}
+ // since-cxx11-note at -3 {{candidate constructor (the implicit move constructor) not viable: no known conversion from 'A::S' to 'f' for 1st argument}}
+ // expected-note at -4 {{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
};
namespace D {
@@ -165,7 +165,7 @@ namespace dr407 { // dr407: 3.8
typedef struct S S; // #dr407-typedef-S
struct S *p;
// expected-error at -1 {{typedef 'S' cannot be referenced with a struct specifier}}
- // expected-note@#dr407-typedef-S {{declared here}}
+ // expected-note@#dr407-typedef-S {{declared here}}
}
}
struct S {};
@@ -182,8 +182,8 @@ namespace dr407 { // dr407: 3.8
using namespace B;
struct S s;
// expected-error at -1 {{ambiguous}}
- // expected-note@#dr407-A-S {{candidate found by name lookup is 'dr407::UsingDir::A::S'}}
- // expected-note@#dr407-B-S {{candidate found by name lookup is 'dr407::UsingDir::B::S'}}
+ // expected-note@#dr407-A-S {{candidate found by name lookup is 'dr407::UsingDir::A::S'}}
+ // expected-note@#dr407-B-S {{candidate found by name lookup is 'dr407::UsingDir::B::S'}}
}
namespace D {
using A::S;
@@ -279,7 +279,7 @@ namespace dr410 { // dr410: no
template<> void f(int) { M::A::z(); }
void g(int) { M::A::z(); }
// expected-error at -1 {{'z' is a private member of 'dr410::M::A'}}
- // expected-note@#dr410-z {{declared private here}}
+ // expected-note@#dr410-z {{declared private here}}
}
// dr412 is in dr412.cpp
@@ -302,7 +302,7 @@ namespace dr413 { // dr413: yes
T t1 = { 1, {}, 2 };
T t2 = { 1, 2 };
// expected-error at -1 {{initializer for aggregate with no elements requires explicit braces}}
- // expected-note@#dr413-T {{'dr413::T' declared here}}
+ // expected-note@#dr413-T {{'dr413::T' declared here}}
}
namespace dr414 { // dr414: dup 305
@@ -385,7 +385,7 @@ void g2() {
using B::f2;
f2();
// expected-error at -1 {{no matching function for call to 'f2'}}
- // expected-note@#dr418-f2 {{candidate function not viable: requires 1 argument, but 0 were provided}}
+ // expected-note@#dr418-f2 {{candidate function not viable: requires 1 argument, but 0 were provided}}
}
} // namespace example2
@@ -473,8 +473,8 @@ namespace dr422 { // dr422: yes
typedef T type; // #dr422-typedef-T
typedef U type;
// expected-error at -1 {{typedef redefinition with
diff erent types ('char' vs 'int')}}
- // expected-note@#dr422-f-int-char {{in instantiation of function template specialization 'dr422::f<int, char>' requested here}}
- // expected-note@#dr422-typedef-T {{previous definition is here}}
+ // expected-note@#dr422-f-int-char {{in instantiation of function template specialization 'dr422::f<int, char>' requested here}}
+ // expected-note@#dr422-typedef-T {{previous definition is here}}
}
template void f<int, int>();
template void f<int, char>(); // #dr422-f-int-char
@@ -490,7 +490,7 @@ namespace dr424 { // dr424: yes
typedef int N; // #dr424-N
typedef int N;
// expected-error at -1 {{redefinition of 'N'}}
- // expected-note@#dr424-N {{previous definition is here}}
+ // expected-note@#dr424-N {{previous definition is here}}
struct X;
typedef X X; // #dr424-X
@@ -502,7 +502,7 @@ namespace dr424 { // dr424: yes
typedef X X;
// expected-error at -1 {{redefinition of 'X'}}
- // expected-note@#dr424-X {{previous definition is here}}
+ // expected-note@#dr424-X {{previous definition is here}}
};
struct B {
typedef int M;
@@ -511,7 +511,7 @@ namespace dr424 { // dr424: yes
typedef int M; // #dr424-M
typedef int M;
// expected-error at -1 {{redefinition of 'M'}}
- // expected-note@#dr424-M {{previous definition is here}}
+ // expected-note@#dr424-M {{previous definition is here}}
};
}
@@ -519,7 +519,7 @@ namespace dr425 { // dr425: yes
struct A { template<typename T> operator T() const; } a;
float f = 1.0f * a;
// expected-error at -1 {{use of overloaded operator '*' is ambiguous (with operand types 'float' and 'struct A')}}
- // expected-note at -2 +{{built-in candidate}}
+ // expected-note at -2 +{{built-in candidate}}
template<typename T> struct is_float;
template<> struct is_float<float> { typedef void type; };
@@ -544,7 +544,7 @@ namespace dr427 { // dr427: yes
const D &d3 = (const D&)b;
const D &d4(b);
// expected-error at -1 {{conversion function from 'B' to 'const D' invokes a deleted function}}
- // expected-note@#dr427-D {{'D' has been explicitly marked deleted here}}
+ // expected-note@#dr427-D {{'D' has been explicitly marked deleted here}}
}
namespace dr428 { // dr428: yes
@@ -557,19 +557,19 @@ namespace dr428 { // dr428: yes
throw make<const volatile void*>();
throw x;
// expected-error at -1 {{cannot throw}}
- // expected-note@#dr428-X {{forward declaration of 'dr428::X'}}
+ // expected-note@#dr428-X {{forward declaration of 'dr428::X'}}
throw make<X&>();
// expected-error at -1 {{cannot throw}}
- // expected-note@#dr428-X {{forward declaration of 'dr428::X'}}
+ // expected-note@#dr428-X {{forward declaration of 'dr428::X'}}
throw make<X*>();
// expected-error at -1 {{cannot throw}}
- // expected-note@#dr428-X {{forward declaration of 'dr428::X'}}
+ // expected-note@#dr428-X {{forward declaration of 'dr428::X'}}
throw make<const volatile X&>();
// expected-error at -1 {{cannot throw}}
- // expected-note@#dr428-X {{forward declaration of 'dr428::X'}}
+ // expected-note@#dr428-X {{forward declaration of 'dr428::X'}}
throw make<const volatile X*>();
// expected-error at -1 {{cannot throw}}
- // expected-note@#dr428-X {{forward declaration of 'dr428::X'}}
+ // expected-note@#dr428-X {{forward declaration of 'dr428::X'}}
}
}
@@ -580,7 +580,7 @@ namespace dr429 { // dr429: 2.8 c++11
static void operator delete(void*, size_t); // #dr429-delete
} *a = new (0) A;
// since-cxx11-error at -1 {{'new' expression with placement arguments refers to non-placement 'operator delete'}}
- // since-cxx11-note@#dr429-delete {{here}}
+ // since-cxx11-note@#dr429-delete {{here}}
struct B {
static void *operator new(size_t, size_t);
static void operator delete(void*);
@@ -633,12 +633,12 @@ namespace dr432 { // dr432: 3.0
template<typename T> struct A {};
template<typename T> struct B : A<B> {};
// expected-error at -1 {{use of class template 'B' requires template arguments}}
- // expected-note at -2 {{template is declared here}}
+ // expected-note at -2 {{template is declared here}}
template<typename T> struct C : A<C<T> > {};
#if __cplusplus >= 201103L
template<typename T> struct D : decltype(A<D>()) {};
// since-cxx11-error at -1 {{use of class template 'D' requires template arguments}}
- // since-cxx11-note at -2 {{template is declared here}}
+ // since-cxx11-note at -2 {{template is declared here}}
#endif
}
@@ -676,7 +676,7 @@ namespace dr436 { // dr436: yes
enum E { f }; // #dr436-f
void f();
// expected-error at -1 {{redefinition of 'f' as
diff erent kind of symbol}}
- // expected-note@#dr436-f {{previous definition is here}}
+ // expected-note@#dr436-f {{previous definition is here}}
}
namespace dr437 { // dr437: sup 1308
@@ -686,14 +686,14 @@ namespace dr437 { // dr437: sup 1308
struct S {
void f() throw(S);
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
void g() throw(T<S>);
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
struct U;
void h() throw(U);
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
- // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
+ // since-cxx17-note at -2 {{use 'noexcept(false)' instead}}
struct U {};
};
}
@@ -716,11 +716,11 @@ namespace dr444 { // dr444: yes
void f() {
d = d;
// expected-error at -1 {{overload resolution selected deleted operator '='}}
- // expected-note@#dr444-deleted {{candidate function has been explicitly deleted}}
- // expected-note@#dr444-D {{candidate function (the implicit copy assignment operator)}}
- // expected-note@#dr444-B {{candidate function (the implicit copy assignment operator)}}
- // since-cxx11-note@#dr444-B {{candidate function (the implicit move assignment operator) not viable: expects an rvalue for 1st argument}}
- // since-cxx11-note@#dr444-D {{candidate function (the implicit move assignment operator) not viable: expects an rvalue for 1st argument}}
+ // expected-note@#dr444-deleted {{candidate function has been explicitly deleted}}
+ // expected-note@#dr444-D {{candidate function (the implicit copy assignment operator)}}
+ // expected-note@#dr444-B {{candidate function (the implicit copy assignment operator)}}
+ // since-cxx11-note@#dr444-B {{candidate function (the implicit move assignment operator) not viable: expects an rvalue for 1st argument}}
+ // since-cxx11-note@#dr444-D {{candidate function (the implicit move assignment operator) not viable: expects an rvalue for 1st argument}}
}
}
@@ -729,7 +729,7 @@ namespace dr445 { // dr445: 3.2
struct B {
friend void A::f();
// expected-error at -1 {{friend function 'f' is a private member of 'dr445::A'}}
- // expected-note@#dr445-f {{implicitly declared private here}}
+ // expected-note@#dr445-f {{implicitly declared private here}}
};
}
@@ -746,24 +746,24 @@ namespace dr446 { // dr446: 2.8
void(b ? a : a);
b ? A() : a;
// expected-error at -1 {{call to deleted constructor of 'A'}}
- // expected-note@#dr446-deleted {{'A' has been explicitly marked deleted here}}
+ // expected-note@#dr446-deleted {{'A' has been explicitly marked deleted here}}
b ? a : A();
// expected-error at -1 {{call to deleted constructor of 'A'}}
- // expected-note@#dr446-deleted {{'A' has been explicitly marked deleted here}}
+ // expected-note@#dr446-deleted {{'A' has been explicitly marked deleted here}}
b ? A() : A();
// cxx98-14-error at -1 {{call to deleted constructor of 'A'}}
- // expected-note@#dr446-deleted {{'A' has been explicitly marked deleted here}}
+ // expected-note@#dr446-deleted {{'A' has been explicitly marked deleted here}}
void(b ? a : c);
b ? a : C();
// expected-error at -1 {{call to deleted constructor of 'A'}}
- // cxx98-14-note@#dr446-deleted {{'A' has been explicitly marked deleted here}}
+ // cxx98-14-note@#dr446-deleted {{'A' has been explicitly marked deleted here}}
b ? c : A();
// cxx98-14-error at -1 {{call to deleted constructor of 'A'}}
- // cxx98-14-note@#dr446-deleted {{'A' has been explicitly marked deleted here}}
+ // cxx98-14-note@#dr446-deleted {{'A' has been explicitly marked deleted here}}
b ? A() : C();
// cxx98-14-error at -1 {{call to deleted constructor of 'A'}}
- // cxx98-14-note@#dr446-deleted {{'A' has been explicitly marked deleted here}}
+ // cxx98-14-note@#dr446-deleted {{'A' has been explicitly marked deleted here}}
}
}
@@ -801,11 +801,11 @@ namespace dr448 { // dr448: 2.8
template<typename T> void g(T t) {
f<T>(t);
// expected-error at -1 {{call to function 'f' that is neither visible in the template definition nor found by argument-dependent lookup}}
- // expected-note@#dr448-g {{in instantiation of function template specialization 'dr448::g<dr448::HideFromADL::X>' requested here}}
- // expected-note@#dr448-f-T {{'f' should be declared prior to the call site or in namespace 'dr448::HideFromADL'}}
+ // expected-note@#dr448-g {{in instantiation of function template specialization 'dr448::g<dr448::HideFromADL::X>' requested here}}
+ // expected-note@#dr448-f-T {{'f' should be declared prior to the call site or in namespace 'dr448::HideFromADL'}}
dr448::f(t);
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr448-f-int {{candidate function template not viable: no known conversion from 'dr448::HideFromADL::X' to 'int' for 1st argument}}
+ // expected-note@#dr448-f-int {{candidate function template not viable: no known conversion from 'dr448::HideFromADL::X' to 'int' for 1st argument}}
}
template<typename T> void f(T); // #dr448-f-T
namespace HideFromADL { struct X {}; }
@@ -824,14 +824,14 @@ namespace dr450 { // dr450: yes
f1(S().n);
f2(S().n);
// expected-error at -1 {{no matching function for call to 'f2'}}}
- // expected-note@#dr450-f2 {{candidate function not viable: expects an lvalue for 1st argument}}
+ // expected-note@#dr450-f2 {{candidate function not viable: expects an lvalue for 1st argument}}
}
#if __cplusplus >= 201103L
void h() {
f1(A{});
f2(A{});
// expected-error at -1 {{no matching function for call to 'f2'}}}
- // expected-note@#dr450-f2 {{candidate function not viable: expects an lvalue for 1st argument}}
+ // expected-note@#dr450-f2 {{candidate function not viable: expects an lvalue for 1st argument}}
}
#endif
}
@@ -885,7 +885,7 @@ namespace dr457 { // dr457: yes
ea = a,
eb = b
// expected-error at -1 {{expression is not an integral constant expression}}
- // expected-note at -2 {{read of volatile-qualified type 'const volatile int' is not allowed in a constant expression}}
+ // expected-note at -2 {{read of volatile-qualified type 'const volatile int' is not allowed in a constant expression}}
};
}
@@ -909,7 +909,7 @@ namespace dr458 { // dr458: 11
int A::g() {
return T;
// expected-error at -1 {{'T' does not refer to a value}}
- // expected-note@#dr458-g-T {{declared here}}
+ // expected-note@#dr458-g-T {{declared here}}
}
template<typename T>
@@ -926,7 +926,7 @@ namespace dr458 { // dr458: 11
int B<U>::h() {
return T;
// expected-error at -1 {{'T' does not refer to a value}}
- // expected-note@#dr458-h-T {{declared here}}
+ // expected-note@#dr458-h-T {{declared here}}
}
}
@@ -993,7 +993,7 @@ namespace dr467 { // dr467: yes
int g() {
goto later;
// expected-error at -1 {{cannot jump from this goto statement to its label}}
- // expected-note@#dr467-k {{jump bypasses variable initialization}}
+ // expected-note@#dr467-k {{jump bypasses variable initialization}}
int k = stuff(); // #dr467-k
later:
return k;
@@ -1017,7 +1017,7 @@ namespace dr469 { // dr469: no
template<typename T> struct X<const T> {};
X<int&> x;
// expected-error at -1 {{implicit instantiation of undefined template 'dr469::X<int &>'}}
- // expected-note@#dr469-X {{template is declared here}}
+ // expected-note@#dr469-X {{template is declared here}}
}
namespace dr470 { // dr470: yes
@@ -1030,7 +1030,7 @@ namespace dr470 { // dr470: yes
template struct A<int>; // #dr470-A-int
template struct A<int>::B;
// expected-error at -1 {{duplicate explicit instantiation of 'B'}}
- // expected-note@#dr470-A-int {{previous explicit instantiation is here}}
+ // expected-note@#dr470-A-int {{previous explicit instantiation is here}}
// ok, instantiating C<char> doesn't instantiate base class members.
template struct A<char>;
@@ -1052,7 +1052,7 @@ namespace dr471 { // dr471: 2.8
};
struct H : B, G { int f() { return n; } };
// expected-error at -1 {{'n' is a private member of 'dr471::G'}}
- // expected-note@#dr471-G-using {{declared private here}}
+ // expected-note@#dr471-G-using {{declared private here}}
}
namespace dr474 { // dr474: 3.4
@@ -1068,7 +1068,7 @@ namespace dr474 { // dr474: 3.4
namespace N {
int g();
// expected-error at -1 {{functions that
diff er only in their return type cannot be overloaded}}
- // expected-note@#dr474-g {{previous declaration is here}}
+ // expected-note@#dr474-g {{previous declaration is here}}
}
}
@@ -1096,7 +1096,7 @@ namespace dr478 { // dr478: yes
void f(A *a);
void f(A a[10]);
// expected-error at -1 {{array of abstract class type 'A'}}
- // expected-note@#dr478-f {{unimplemented pure virtual method 'f' in 'A'}}
+ // expected-note@#dr478-f {{unimplemented pure virtual method 'f' in 'A'}}
}
namespace dr479 { // dr479: 2.8
@@ -1120,7 +1120,7 @@ namespace dr479 { // dr479: 2.8
void g() {
S s;
// expected-error at -1 {{variable of type 'S' has private destructor}}
- // expected-note@#dr479-S-dtor {{declared private here}}
+ // expected-note@#dr479-S-dtor {{declared private here}}
throw s;
// expected-error at -1 {{exception object of type 'S' has private destructor}}
// expected-note@#dr479-S-dtor {{declared private here}}
@@ -1183,8 +1183,8 @@ namespace dr481 { // dr481: 2.8
typedef ::dr481::C c; // #dr481-c
typedef C c;
// expected-error at -1 {{typedef redefinition with
diff erent types ('int' vs '::dr481::C')}}
- // expected-note@#dr481-E-int {{in instantiation of member function 'dr481::E<int>::f' requested here}}
- // expected-note@#dr481-c {{previous definition is here}}
+ // expected-note@#dr481-E-int {{in instantiation of member function 'dr481::E<int>::f' requested here}}
+ // expected-note@#dr481-c {{previous definition is here}}
}
};
template struct E<>; // ok
@@ -1296,7 +1296,7 @@ namespace dr484 { // dr484: yes
typedef C CT; // #dr484-typedef-CT
struct CT {};
// expected-error at -1 {{definition of type 'CT' conflicts with typedef of the same name}}
- // expected-note@#dr484-typedef-CT {{'CT' declared here}}
+ // expected-note@#dr484-typedef-CT {{'CT' declared here}}
namespace N {
struct D;
@@ -1304,7 +1304,7 @@ namespace dr484 { // dr484: yes
}
struct N::DT {};
// expected-error at -1 {{definition of type 'DT' conflicts with typedef of the same name}}
- // expected-note@#dr484-typedef-DT {{'DT' declared here}}
+ // expected-note@#dr484-typedef-DT {{'DT' declared here}}
typedef struct {
S();
@@ -1337,10 +1337,10 @@ namespace dr486 { // dr486: yes
int &b = f(&n);
f<void()>(&g);
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr486-f {{candidate template ignored: substitution failure [with T = void ()]: function cannot return function type 'void ()'}}
+ // expected-note@#dr486-f {{candidate template ignored: substitution failure [with T = void ()]: function cannot return function type 'void ()'}}
f<int[10]>(&n);
// expected-error at -1 {{no matching function for call to 'f'}}
- // expected-note@#dr486-f {{candidate template ignored: substitution failure [with T = int[10]]: function cannot return array type 'int[10]'}}
+ // expected-note@#dr486-f {{candidate template ignored: substitution failure [with T = int[10]]: function cannot return array type 'int[10]'}}
}
}
@@ -1399,10 +1399,10 @@ namespace dr490 { // dr490: 2.8
// (no number yet...) which will eventually supersede this one.
friend int X<T>::*A::i();
// expected-error at -1 {{return type of out-of-line definition of 'dr490::A::i'
diff ers from that in the declaration}}
- // expected-note@#dr490-i {{previous declaration is here}}
+ // expected-note@#dr490-i {{previous declaration is here}}
friend int K::*A::j();
// expected-error at -1 {{use of undeclared identifier 'K'; did you mean 'A::K'?}}
- // expected-note@#dr490-k {{'A::K' declared here}}
+ // expected-note@#dr490-k {{'A::K' declared here}}
// ok, lookup finds B::T, not A::T, so return type matches
friend char A::k<T>();
diff --git a/clang/test/CXX/drs/dr6xx.cpp b/clang/test/CXX/drs/dr6xx.cpp
index 78604d480aa1ca..b35d3051ab554c 100644
--- a/clang/test/CXX/drs/dr6xx.cpp
+++ b/clang/test/CXX/drs/dr6xx.cpp
@@ -779,7 +779,7 @@ namespace dr657 { // dr657: partial
struct C { C(Abs) {} };
// expected-error at -1 {{parameter type 'Abs' is an abstract class}}
- // expected-note@#dr657-Abs {{unimplemented pure virtual method 'x' in 'Abs'}}
+ // expected-note@#dr657-Abs {{unimplemented pure virtual method 'x' in 'Abs'}}
struct Q { operator Abs() { __builtin_unreachable(); } } q;
// expected-error at -1 {{return type 'Abs' is an abstract class}}
#if __cplusplus >= 201703L
@@ -809,7 +809,7 @@ namespace dr659 { // dr659: 3.0
struct A; // #dr659-A
int m = alignof(A&);
// since-cxx11-error at -1 {{invalid application of 'alignof' to an incomplete type 'A'}}
- // since-cxx11-note@#dr659-A {{forward declaration of 'dr659::A'}}
+ // since-cxx11-note@#dr659-A {{forward declaration of 'dr659::A'}}
}
#endif
@@ -836,7 +836,7 @@ namespace dr662 { // dr662: yes
T &tr = t;
T *tp = &t;
// expected-error at -1 {{'tp' declared as a pointer to a reference of type 'int &'}}
- // expected-note@#dr662-f-call {{in instantiation of function template specialization 'dr662::f<int &>' requested here}}
+ // expected-note@#dr662-f-call {{in instantiation of function template specialization 'dr662::f<int &>' requested here}}
#if __cplusplus >= 201103L
auto *ap = &t;
#endif
@@ -1302,12 +1302,12 @@ namespace dr692 { // dr692: 16
e2(b2);
f<int>(42);
// expected-error at -1 {{call to 'f' is ambiguous}}
- // expected-note@#dr692-f-deleted {{candidate function [with T = int, U = int] has been explicitly deleted}}
- // expected-note@#dr692-f {{candidate function [with U = int]}}
+ // expected-note@#dr692-f-deleted {{candidate function [with T = int, U = int] has been explicitly deleted}}
+ // expected-note@#dr692-f {{candidate function [with U = int]}}
g(42);
// expected-error at -1 {{ambiguous}}
- // expected-note@#dr692-g {{candidate function [with T = int]}}
- // expected-note@#dr692-g-variadic {{candidate function [with T = int, U = <>]}}
+ // expected-note@#dr692-g {{candidate function [with T = int]}}
+ // expected-note@#dr692-g-variadic {{candidate function [with T = int, U = <>]}}
}
}
@@ -1371,7 +1371,7 @@ namespace dr696 { // dr696: 3.1
int arr[N]; (void)arr;
f(&N);
// expected-error at -1 {{reference to local variable 'N' declared in enclosing function 'dr696::g'}}
- // expected-note@#dr696-N {{'N' declared here}}
+ // expected-note@#dr696-N {{'N' declared here}}
}
};
#if __cplusplus >= 201103L
More information about the cfe-commits
mailing list