diff --git a/clang/test/CXX/drs/dr10xx.cpp b/clang/test/CXX/drs/dr10xx.cpp index f629280c3d9811..4d49a1859c2f5d 100644 --- a/clang/test/CXX/drs/dr10xx.cpp +++ b/clang/test/CXX/drs/dr10xx.cpp @@ -1,7 +1,9 @@ // RUN: %clang_cc1 -std=c++98 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors // RUN: %clang_cc1 -std=c++11 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors // RUN: %clang_cc1 -std=c++14 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors -// RUN: %clang_cc1 -std=c++1z %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++17 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++20 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++2b %s -verify -fexceptions -fcxx-exceptions -pedantic-errors namespace std { __extension__ typedef __SIZE_TYPE__ size_t; @@ -83,3 +85,16 @@ namespace dr1070 { // dr1070: 3.5 C c = {}; #endif } + +namespace dr1042 { // dr1042: 3.5 +#if __cplusplus >= 201402L + // C++14 added an attribute that we can test the semantics of. + using foo [[deprecated]] = int; // expected-note {{'foo' has been explicitly marked deprecated here}} + foo f = 12; // expected-warning {{'foo' is deprecated}} +#elif __cplusplus >= 201103L + // C++11 did not have any attributes that could be applied to an alias + // declaration, so the best we can test is that we accept an empty attribute + // list in this mode. + using foo [[]] = int; +#endif +} diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html index b54c65e0340662..dbd4e34816f98a 100755 --- a/clang/www/cxx_dr_status.html +++ b/clang/www/cxx_dr_status.html @@ -6059,7 +6059,7 @@

C++ defect report implementation status

1042 C++11 Attributes in alias-declarations - Unknown + 3.5 1043