From 71e0414411e56229616028c32a92b3cb8b378807 Mon Sep 17 00:00:00 2001 From: Richard Smith <richard-llvm@metafoo.co.uk> Date: Fri, 13 Jan 2017 00:57:54 +0000 Subject: [PATCH] Update C++ status pages for Clang 4 branch: * Update version number in DR tests from 4.0 to 4 * Teach make_cxx_dr_status script about version numbers that don't contain a period. * Update cxx_status.html and cxx_dr_status.html to list Clang 4 features as "Clang 4" rather than "SVN" Clang 4 features are still listed in yellow rather than green until release. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@291871 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CXX/drs/dr0xx.cpp | 2 +- test/CXX/drs/dr12xx.cpp | 4 ++-- test/CXX/drs/dr13xx.cpp | 4 ++-- test/CXX/drs/dr14xx.cpp | 2 +- test/CXX/drs/dr15xx.cpp | 4 ++-- test/CXX/drs/dr16xx.cpp | 2 +- test/CXX/drs/dr18xx.cpp | 2 +- test/CXX/drs/dr2xx.cpp | 2 +- test/CXX/drs/dr5xx.cpp | 2 +- test/CXX/drs/dr6xx.cpp | 2 +- www/cxx_dr_status.html | 26 +++++++++++++------------- www/cxx_status.html | 28 ++++++++++++++-------------- www/make_cxx_dr_status | 7 +++++-- 13 files changed, 45 insertions(+), 42 deletions(-) diff --git a/test/CXX/drs/dr0xx.cpp b/test/CXX/drs/dr0xx.cpp index c988b6aba57..055f40f98f6 100644 --- a/test/CXX/drs/dr0xx.cpp +++ b/test/CXX/drs/dr0xx.cpp @@ -1032,7 +1032,7 @@ namespace dr91 { // dr91: yes int k = f(U()); } -namespace dr92 { // dr92: 4.0 c++17 +namespace dr92 { // dr92: 4 c++17 void f() throw(int, float); // expected-error 0-1{{ISO C++1z does not allow}} expected-note 0-1{{use 'noexcept}} void (*p)() throw(int) = &f; // expected-error 0-1{{ISO C++1z does not allow}} expected-note 0-1{{use 'noexcept}} #if __cplusplus <= 201402L diff --git a/test/CXX/drs/dr12xx.cpp b/test/CXX/drs/dr12xx.cpp index 72d8d683ab7..45b33f9d7da 100644 --- a/test/CXX/drs/dr12xx.cpp +++ b/test/CXX/drs/dr12xx.cpp @@ -3,7 +3,7 @@ // 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 -namespace dr1213 { // dr1213: 4.0 +namespace dr1213 { // dr1213: 4 #if __cplusplus >= 201103L using T = int[3]; int &&r = T{}[1]; @@ -26,7 +26,7 @@ struct Derived : Base { }; } // dr1250 -namespace dr1295 { // dr1295: 4.0 +namespace dr1295 { // dr1295: 4 struct X { unsigned bitfield : 4; }; diff --git a/test/CXX/drs/dr13xx.cpp b/test/CXX/drs/dr13xx.cpp index 28e667f77f8..f35ead7b5e9 100644 --- a/test/CXX/drs/dr13xx.cpp +++ b/test/CXX/drs/dr13xx.cpp @@ -31,7 +31,7 @@ namespace dr1315 { // dr1315: partial // expected-error@-1 {{type of specialized non-type template argument depends on a template parameter of the partial specialization}} } -namespace dr1330 { // dr1330: 4.0 c++11 +namespace dr1330 { // dr1330: 4 c++11 // exception-specifications are parsed in a context where the class is complete. struct A { void f() throw(T) {} // expected-error 0-1{{C++1z}} expected-note 0-1{{noexcept}} @@ -175,7 +175,7 @@ namespace dr1359 { // dr1359: 3.5 #endif } -namespace dr1388 { // dr1388: 4.0 +namespace dr1388 { // dr1388: 4 template<typename A, typename ...T> void f(T..., A); // expected-note 1+{{candidate}} expected-error 0-1{{C++11}} template<typename ...T> void g(T..., int); // expected-note 1+{{candidate}} expected-error 0-1{{C++11}} template<typename ...T, typename A> void h(T..., A); // expected-note 1+{{candidate}} expected-error 0-1{{C++11}} diff --git a/test/CXX/drs/dr14xx.cpp b/test/CXX/drs/dr14xx.cpp index 9e724d91834..116437b1ab3 100644 --- a/test/CXX/drs/dr14xx.cpp +++ b/test/CXX/drs/dr14xx.cpp @@ -343,7 +343,7 @@ namespace dr1490 { // dr1490: 3.7 c++11 std::initializer_list<char>{"abc"}; // expected-error {{expected unqualified-id}}} } // dr190 -namespace dr1495 { // dr1495: 4.0 +namespace dr1495 { // dr1495: 4 // Deduction succeeds in both directions. template<typename T, typename U> struct A {}; // expected-note {{template is declared here}} template<typename T, typename U> struct A<U, T> {}; // expected-error {{class template partial specialization is not more specialized}} diff --git a/test/CXX/drs/dr15xx.cpp b/test/CXX/drs/dr15xx.cpp index fb0d9334f6b..a68928f727e 100644 --- a/test/CXX/drs/dr15xx.cpp +++ b/test/CXX/drs/dr15xx.cpp @@ -3,7 +3,7 @@ // RUN: %clang_cc1 -std=c++14 -triple x86_64-unknown-unknown %s -verify -fexceptions -fcxx-exceptions -pedantic-errors // RUN: %clang_cc1 -std=c++1z -triple x86_64-unknown-unknown %s -verify -fexceptions -fcxx-exceptions -pedantic-errors -namespace dr1512 { // dr1512: 4.0 +namespace dr1512 { // dr1512: 4 void f(char *p) { if (p > 0) {} // expected-error {{ordered comparison between pointer and zero}} #if __cplusplus >= 201103L @@ -135,7 +135,7 @@ namespace dr1512 { // dr1512: 4.0 } } -namespace dr1518 { // dr1518: 4.0 +namespace dr1518 { // dr1518: 4 #if __cplusplus >= 201103L struct Z0 { // expected-note 0+ {{candidate}} explicit Z0() = default; // expected-note 0+ {{here}} diff --git a/test/CXX/drs/dr16xx.cpp b/test/CXX/drs/dr16xx.cpp index 02aa5f9909e..c0b7c29e5dd 100644 --- a/test/CXX/drs/dr16xx.cpp +++ b/test/CXX/drs/dr16xx.cpp @@ -86,7 +86,7 @@ namespace dr1645 { // dr1645: 3.9 #endif } -namespace dr1653 { // dr1653: 4.0 c++17 +namespace dr1653 { // dr1653: 4 c++17 void f(bool b) { ++b; b++; diff --git a/test/CXX/drs/dr18xx.cpp b/test/CXX/drs/dr18xx.cpp index 436bccc8e42..e4ec199fcae 100644 --- a/test/CXX/drs/dr18xx.cpp +++ b/test/CXX/drs/dr18xx.cpp @@ -7,7 +7,7 @@ // expected-no-diagnostics #endif -void dr1891() { // dr1891: 4.0 +void dr1891() { // dr1891: 4 #if __cplusplus >= 201103L int n; auto a = []{}; // expected-note 2{{candidate}} expected-note 2{{here}} diff --git a/test/CXX/drs/dr2xx.cpp b/test/CXX/drs/dr2xx.cpp index a9f0c8fcc99..68261f6c00f 100644 --- a/test/CXX/drs/dr2xx.cpp +++ b/test/CXX/drs/dr2xx.cpp @@ -679,7 +679,7 @@ namespace dr258 { // dr258: yes } f; // expected-error {{abstract}} } -namespace dr259 { // dr259: 4.0 +namespace dr259 { // dr259: 4 template<typename T> struct A {}; template struct A<int>; // expected-note {{previous}} template struct A<int>; // expected-error {{duplicate explicit instantiation}} diff --git a/test/CXX/drs/dr5xx.cpp b/test/CXX/drs/dr5xx.cpp index f065128cd4b..89e404f5fd6 100644 --- a/test/CXX/drs/dr5xx.cpp +++ b/test/CXX/drs/dr5xx.cpp @@ -863,7 +863,7 @@ namespace dr580 { // dr580: partial // dr582: na -namespace dr583 { // dr583: 4.0 +namespace dr583 { // dr583: 4 // see n3624 int *p; bool b1 = p < 0; // expected-error {{ordered comparison between pointer and zero}} diff --git a/test/CXX/drs/dr6xx.cpp b/test/CXX/drs/dr6xx.cpp index 9dfcc7d6b46..8b9a6996076 100644 --- a/test/CXX/drs/dr6xx.cpp +++ b/test/CXX/drs/dr6xx.cpp @@ -142,7 +142,7 @@ namespace dr615 { // dr615: yes static int n = f(); } -namespace dr616 { // dr616: 4.0 +namespace dr616 { // dr616: 4 #if __cplusplus >= 201103L struct S { int n; } s; S f(); diff --git a/www/cxx_dr_status.html b/www/cxx_dr_status.html index c36adfdfad0..a0781458a85 100644 --- a/www/cxx_dr_status.html +++ b/www/cxx_dr_status.html @@ -591,7 +591,7 @@ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#92">92</a></td> <td>WP</td> <td>Should <I>exception-specification</I>s be part of the type system?</td> - <td class="svn" align="center">SVN (C++17 onwards)</td> + <td class="svn" align="center">Clang 4 (C++17 onwards)</td> </tr> <tr id="93"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#93">93</a></td> @@ -1594,7 +1594,7 @@ accessible?</td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#259">259</a></td> <td>CD1</td> <td>Restrictions on explicit specialization and instantiation</td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr class="open" id="260"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#260">260</a></td> @@ -3541,7 +3541,7 @@ and <I>POD class</I></td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#583">583</a></td> <td>CD3</td> <td>Relational pointer comparisons against the null pointer constant</td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr id="584"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#584">584</a></td> @@ -3739,7 +3739,7 @@ and <I>POD class</I></td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#616">616</a></td> <td>CD3</td> <td>Definition of “indeterminate value”</td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr class="open" id="617"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#617">617</a></td> @@ -7093,7 +7093,7 @@ and <I>POD class</I></td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1213">1213</a></td> <td>CD3</td> <td>Array subscripting and xvalues</td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr id="1214"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1214">1214</a></td> @@ -7585,7 +7585,7 @@ and <I>POD class</I></td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1295">1295</a></td> <td>CD3</td> <td>Binding a reference to an rvalue bit-field</td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr id="1296"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1296">1296</a></td> @@ -7795,7 +7795,7 @@ and <I>POD class</I></td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1330">1330</a></td> <td>CD3</td> <td>Delayed instantiation of <TT>noexcept</TT> specifiers</td> - <td class="svn" align="center">SVN (C++11 onwards)</td> + <td class="svn" align="center">Clang 4 (C++11 onwards)</td> </tr> <tr class="open" id="1331"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1331">1331</a></td> @@ -8143,7 +8143,7 @@ and <I>POD class</I></td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1388">1388</a></td> <td>CD3</td> <td>Missing non-deduced context following a function parameter pack</td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr id="1389"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1389">1389</a></td> @@ -8785,7 +8785,7 @@ and <I>POD class</I></td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1495">1495</a></td> <td>CD3</td> <td>Partial specialization of variadic class template</td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr id="1496"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1496">1496</a></td> @@ -8887,7 +8887,7 @@ and <I>POD class</I></td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1512">1512</a></td> <td>CD3</td> <td>Pointer comparison vs qualification conversions</td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr class="open" id="1513"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1513">1513</a></td> @@ -8923,7 +8923,7 @@ and <I>POD class</I></td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1518">1518</a></td> <td>DRWP</td> <td>Explicit default constructors and copy-list-initialization</td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr id="1519"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1519">1519</a></td> @@ -9733,7 +9733,7 @@ and <I>POD class</I></td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1653">1653</a></td> <td>WP</td> <td>Removing deprecated increment of <TT>bool</TT></td> - <td class="svn" align="center">SVN (C++17 onwards)</td> + <td class="svn" align="center">Clang 4 (C++17 onwards)</td> </tr> <tr id="1654"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1654">1654</a></td> @@ -11161,7 +11161,7 @@ and <I>POD class</I></td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1891">1891</a></td> <td>DRWP</td> <td>Move constructor/assignment for closure class</td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr id="1892"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1892">1892</a></td> diff --git a/www/cxx_status.html b/www/cxx_status.html index 675cc6f7a82..eb0beeb1855 100644 --- a/www/cxx_status.html +++ b/www/cxx_status.html @@ -612,7 +612,7 @@ as the draft C++1z standard evolves. <tr> <td>Make exception specifications part of the type system</td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0012r1.html">P0012R1</a></td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr> <td><tt>__has_include</tt> in preprocessor conditionals</td> @@ -679,7 +679,7 @@ as the draft C++1z standard evolves. <tr> <td>Dynamic memory allocation for over-aligned data</td> <td><a href="http://wg21.link/p0035r4">P0035R4</a></td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr> <td>Template argument deduction for class templates</td> @@ -689,17 +689,17 @@ as the draft C++1z standard evolves. <tr> <td>Non-type template parameters with <tt>auto</tt> type</td> <td><a href="http://wg21.link/p0127r2">P0127R2</a></td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr> <td>Guaranteed copy elision</td> <td><a href="http://wg21.link/p0135r1">P0135R1</a></td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr> <td rowspan=2>Stricter expression evaluation order</td> <td><a href="http://wg21.link/p0145r3">P0145R3</a></td> - <td class="svn" align="center" rowspan=2>SVN <a href="#p0145">(10)</a></td> + <td class="svn" align="center" rowspan=2>Clang 4 <a href="#p0145">(10)</a></td> </tr> <tr> <td><a href="http://wg21.link/p0400r0">P0400R0</a></td> @@ -722,7 +722,7 @@ as the draft C++1z standard evolves. <tr> <td>Structured bindings</td> <td><a href="http://wg21.link/p0217r3">P0217R3</a></td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr> <td>Separate variable and condition for <tt>if</tt> and <tt>switch</tt></td> @@ -738,12 +738,12 @@ as the draft C++1z standard evolves. <tr> <td>Removing deprecated dynamic exception specifications</td> <td><a href="http://wg21.link/p0003r5">P0003R5</a></td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> <tr> <td>Pack expansions in <em>using-declarations</em></td> <td><a href="http://wg21.link/p0195r2">P0195R2</a></td> - <td class="svn" align="center">SVN</td> + <td class="svn" align="center">Clang 4</td> </tr> </table> @@ -765,10 +765,10 @@ reverse construction order in that ABI. </span><br> <span id="p0522">(12): Despite being the the resolution to a Defect Report, this feature is disabled by default in all language versions, and can be enabled -explicitly with the flag <tt>-frelaxed-template-template-args</tt>. The change -to the standard lacks a corresponding change for template partial ordering, -resulting in ambiguity errors for reasonable and previously-valid code. This -issue is expected to be rectified soon. +explicitly with the flag <tt>-frelaxed-template-template-args</tt> in Clang 4. +The change to the standard lacks a corresponding change for template partial +ordering, resulting in ambiguity errors for reasonable and previously-valid +code. This issue is expected to be rectified soon. </span> </p> </details> @@ -802,8 +802,8 @@ and library features that are not part of standard C++.</p> </td> </tr> <tr> - <td class="svn" align="center"> - SVN (<a href="http://wg21.link/p0096r3">P0096R3</a>)</a> + <td class="full" align="center"> + Clang 4 (<a href="http://wg21.link/p0096r3">P0096R3</a>)</a> </td> </tr> <!-- FIXME: Implement latest recommendations. diff --git a/www/make_cxx_dr_status b/www/make_cxx_dr_status index 48f524208a4..8a05d41c08b 100755 --- a/www/make_cxx_dr_status +++ b/www/make_cxx_dr_status @@ -108,10 +108,13 @@ def availability(issue): if status == 'unknown': avail = 'Unknown' avail_style = ' class="none"' - elif status == '4.0': + elif status == '5': avail = 'SVN' avail_style = ' class="svn"' - elif re.match('^[0-9]+\.', status): + elif status == '4': + avail = 'Clang 4' + avail_style = ' class="svn"' + elif re.match('^[0-9]+\.?[0-9]*', status): avail = 'Clang %s' % status avail_style = ' class="full"' elif status == 'yes': -- GitLab