1 // RUN: %clang_cc1 -pedantic -triple x86_64-apple-macos11 -std=c++20 -fsyntax-only -verify %s
3 static_assert(__has_extension(cxx_attributes_on_using_declarations
), "");
5 namespace NS
{ typedef int x
; }
7 [[clang::annotate("foo")]] using NS::x
; // expected-warning{{ISO C++ does not allow an attribute list to appear here}}
10 [[deprecated
]] using NS::x
; // expected-warning {{'deprecated' currently has no effect on a using declaration}} expected-warning{{ISO C++ does not allow}}
11 using NS::x
[[deprecated
]]; // expected-warning {{'deprecated' currently has no effect on a using declaration}} expected-warning{{ISO C++ does not allow}}
12 using NS::x
__attribute__((deprecated
)); // expected-warning {{'deprecated' currently has no effect on a using declaration}}
13 using NS::x
__attribute__((availability(macos
,introduced
=1))); // expected-warning {{'availability' currently has no effect on a using declaration}}
15 [[clang::availability(macos
,introduced
=1)]] using NS::x
; // expected-warning {{'availability' currently has no effect on a using declaration}} expected-warning{{ISO C++ does not allow}}
17 // expected-warning@+1 3 {{ISO C++ does not allow an attribute list to appear here}}
18 [[clang::annotate("A")]] using NS::x
[[clang::annotate("Y")]], NS::x
[[clang::annotate("Z")]];
22 [[deprecated
]] using typename
T::x
; // expected-warning{{ISO C++ does not allow}} expected-warning {{'deprecated' currently has no effect on a using declaration}}
23 [[deprecated
]] using T::y
; // expected-warning{{ISO C++ does not allow}} expected-warning {{'deprecated' currently has no effect on a using declaration}}
25 using typename
T::z
[[deprecated
]]; // expected-warning{{ISO C++ does not allow}} expected-warning {{'deprecated' currently has no effect on a using declaration}}
26 using T::a
[[deprecated
]]; // expected-warning{{ISO C++ does not allow}} expected-warning {{'deprecated' currently has no effect on a using declaration}}
38 using B::B
__attribute__(());