[cfe-commits] r71167 - in /cfe/trunk: test/SemaCXX/dcl_ambig_res.cpp www/cxx_status.html

Douglas Gregor dgregor at apple.com
Thu May 7 10:50:17 PDT 2009


Author: dgregor
Date: Thu May  7 12:50:16 2009
New Revision: 71167

URL: http://llvm.org/viewvc/llvm-project?rev=71167&view=rev
Log:
Big update to the C++ status table to reflect "recent"
development. Still much more to write!

Added:
    cfe/trunk/test/SemaCXX/dcl_ambig_res.cpp   (with props)
Modified:
    cfe/trunk/www/cxx_status.html

Added: cfe/trunk/test/SemaCXX/dcl_ambig_res.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/dcl_ambig_res.cpp?rev=71167&view=auto

==============================================================================
--- cfe/trunk/test/SemaCXX/dcl_ambig_res.cpp (added)
+++ cfe/trunk/test/SemaCXX/dcl_ambig_res.cpp Thu May  7 12:50:16 2009
@@ -0,0 +1,66 @@
+// RUN: clang-cc -fsyntax-only -pedantic -verify %s
+
+// [dcl.ambig.res]p1:
+struct S { 
+  S(int); 
+  void bar();
+}; 
+
+int returns_an_int();
+
+void foo(double a) 
+{ 
+  S w(int(a)); // expected-warning{{disambiguated}}
+  w(17);
+  S x(int()); // expected-warning{{disambiguated}}
+  x(&returns_an_int);
+  S y((int)a); 
+  y.bar();
+  S z = int(a);
+  z.bar();
+} 
+
+// [dcl.ambig.res]p3:
+char *p; 
+void *operator new(__SIZE_TYPE__, int); 
+void foo3() { 
+  const int x = 63; 
+  new (int(*p)) int; //new-placement expression 
+  new (int(*[x])); //new type-id 
+} 
+
+// [dcl.ambig.res]p4:
+template <class T>  // expected-note{{here}}
+struct S4 { 
+  T *p; 
+}; 
+S4<int()> x; //type-id 
+S4<int(1)> y; // expected-error{{must be a type}}
+
+// [dcl.ambig.res]p5:
+void foo5() 
+{ 
+  (void)sizeof(int(1)); //expression 
+  // FIXME: should we make this an error rather than a warning? 
+  // (It affects SFINAE)
+  (void)sizeof(int()); // expected-warning{{function type}}
+}
+
+// [dcl.ambig.res]p6:
+void foo6() 
+{ 
+  (void)(int(1)); //expression 
+  (void)(int())1; // expected-error{{used type}}
+} 
+
+// [dcl.ambig.res]p7:
+class C7 { }; 
+void f7(int(C7)) { } // expected-note{{candidate}}
+int g7(C7); 
+void foo7() { 
+  f7(1); // expected-error{{no matching function}}
+  f7(g7); //OK 
+} 
+
+void h7(int *(C7[10])) { } // expected-note{{previous}}
+void h7(int *(*_fp)(C7 _parm[10])) { } // expected-error{{redefinition}}

Propchange: cfe/trunk/test/SemaCXX/dcl_ambig_res.cpp

------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cfe/trunk/test/SemaCXX/dcl_ambig_res.cpp

------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cfe/trunk/test/SemaCXX/dcl_ambig_res.cpp

------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: cfe/trunk/www/cxx_status.html
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/www/cxx_status.html?rev=71167&r1=71166&r2=71167&view=diff

==============================================================================
--- cfe/trunk/www/cxx_status.html (original)
+++ cfe/trunk/www/cxx_status.html Thu May  7 12:50:16 2009
@@ -1113,25 +1113,97 @@
   <td></td>
   <td></td>
 </tr>
-<tr><td>8 [dcl.decl]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  8.1 [dcl.name]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  8.2 [dcl.ambig.res]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  8.3 [dcl.meaning]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>    8.3.1 [dcl.ptr]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>    8.3.2 [dcl.ref]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>    8.3.3 [dcl.mptr]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>    8.3.4 [dcl.array]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>    8.3.5 [dcl.fct]</td><td></td><td></td><td></td><td></td><td></td></tr>
 <tr>
+  <td>8 [dcl.decl]</td><td></td><td></td><td></td><td></td><td></td>
+</tr>
+<tr>
+  <td>  8.1 [dcl.name]</td>
+  <td class="complete" align="center">&#x2713;</td>
+  <td class="complete" align="center">&#x2713;</td>
+  <td class="complete" align="center">&#x2713;</td>
+  <td class="na">N/A</td>
+  <td></td>
+</tr>
+<tr>
+  <td>  8.2 [dcl.ambig.res]</td>
+  <td class="complete" align="center">&#x2713;</td>
+  <td class="na" align="center">N/A</td>
+  <td class="complete" align="center">&#x2713;</td>
+  <td class="na">N/A</td>
+  <td></td>
+</tr>
+<tr>
+  <td>  8.3 [dcl.meaning]</td>
+  <td class="complete" align="center">&#x2713;</td>
+  <td class="complete" align="center">&#x2713;</td>
+  <td class="advanced" align="center"></td>
+  <td class="na">N/A</td>
+  <td>Qualified declarator-ids are not fully implemented.</td>
+</tr>
+  <tr>
+    <td>    8.3.1 [dcl.ptr]</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="na">N/A</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>    8.3.2 [dcl.ref]</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="na">N/A</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>    8.3.3 [dcl.mptr]</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="na">N/A</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>    8.3.4 [dcl.array]</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="na">N/A</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>    8.3.5 [dcl.fct]</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="complete" align="center">&#x2713;</td>
+    <td class="na">N/A</td>
+    <td></td>
+  </tr>
+  <tr>
   <td>    8.3.6 [dcl.fct.default]</td>
   <td class="advanced" align="center"></td>
   <td class="advanced" align="center"></td>
   <td class="advanced" align="center"></td>
-  <td></td>
+  <td class="na">N/A</td>
   <td>Missing default arguments for templates.</td>
 </tr>
-<tr><td>  8.4 [dcl.fct.def]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  8.5 [dcl.init]</td><td></td><td></td><td></td><td></td><td></td></tr>
+<tr>
+  <td>  8.4 [dcl.fct.def]</td>
+  <td class="complete" align="center">&#x2713;</td>
+  <td class="complete" align="center">&#x2713;</td>
+  <td class="medium" align="center"></td>
+  <td class="basic" align="center"></td>
+  <td>ctor-initializers are not fully type-checked.</td>
+</tr>
+<tr>
+  <td>  8.5 [dcl.init]</td>
+  <td class="advanced" align="center"></td>
+  <td class="advanced" align="center"></td>
+  <td class="medium" align="center"></td>
+  <td class="medium" align="center"></td>
+  <td></td>
+</tr>
 <tr>
   <td>    8.5.1[dcl.init.aggr]</td>
   <td class="advanced" align="center"></td>
@@ -1167,9 +1239,9 @@
 <tr>
   <td>  9.1 [class.name]</td>
   <td class="complete" align="center">&#x2713;</td>  
-  <td></td>
-  <td></td>
-  <td></td>
+  <td class="complete" align="center">&#x2713;</td>  
+  <td class="complete" align="center">&#x2713;</td>  
+  <td class="na" align="center">N/A</td>  
   <td></td>
 </tr>
 <tr>
@@ -1177,15 +1249,15 @@
   <td class="advanced" align="center"></td>
   <td class="medium" align="center"></td>
   <td class="medium" align="center"></td>
-  <td></td>
-  <td>No parser support for using declarations, or templates.</td>
+  <td class="basic" align="center"></td>
+  <td>No parser support for using declarations or member templates.</td>
 </tr>
 <tr>
   <td>  9.3 [class.mfct]</td>
   <td class="complete" align="center">&#x2713;</td>  
-  <td class="medium" align="center"></td>
-  <td class="medium" align="center"></td>
-  <td></td>
+  <td class="advanced" align="center"></td>
+  <td class="advanced" align="center"></td>
+  <td class="basic" align="center"></td>
   <td></td>
 </tr>
 <tr>
@@ -1193,7 +1265,7 @@
   <td class="complete" align="center">&#x2713;</td>  
   <td class="medium" align="center"></td>
   <td class="medium" align="center"></td>
-  <td></td>
+  <td class="basic" align="center"></td>
   <td></td>
 </tr>
 <tr>
@@ -1201,7 +1273,7 @@
   <td class="complete" align="center">&#x2713;</td>  
   <td class="medium" align="center"></td>
   <td class="medium" align="center"></td>
-  <td></td>
+  <td class="basic"></td>
   <td></td>
 </tr>
 <tr>
@@ -1209,7 +1281,7 @@
   <td class="complete" align="center">&#x2713;</td>  
   <td class="complete" align="center">&#x2713;</td>
   <td class="medium" align="center"></td>
-  <td></td>
+  <td class="basic"></td>
   <td></td>
 </tr>
 <tr>
@@ -1217,7 +1289,7 @@
   <td class="complete" align="center">&#x2713;</td>  
   <td class="complete" align="center">&#x2713;</td>
   <td class="medium" align="center"></td>
-  <td></td>
+  <td class="basic"></td>
   <td></td>
 </tr>
 <tr>
@@ -1225,7 +1297,7 @@
   <td class="complete" align="center">&#x2713;</td>  
   <td class="complete" align="center">&#x2713;</td>
   <td class="medium" align="center"></td>
-  <td></td>
+  <td class="basic"></td>
   <td></td>
 </tr>
 <tr>
@@ -1239,89 +1311,187 @@
 <tr>
   <td>  9.6 [class.bit]</td>
   <td class="complete" align="center">&#x2713;</td>  
-  <td></td>
-  <td></td>
-  <td></td>
+  <td class="complete" align="center">&#x2713;</td>
+  <td class="complete" align="center">&#x2713;</td>
+  <td class="complete" align="center">&#x2713;</td>
   <td></td>
 </tr>
 <tr>
   <td>  9.7 [class.nest]</td>
   <td class="complete" align="center">&#x2713;</td>  
-  <td></td>
-  <td></td>
-  <td></td>
+  <td class="advanced"></td>
+  <td class="advanced"></td>
+  <td class="na" align="center">N/A</td>
   <td></td>
 </tr>
 <tr>
   <td>  9.8 [class.local]</td>
   <td class="complete" align="center">&#x2713;</td>  
-  <td></td>
-  <td></td>
-  <td></td>
+  <td class="medium"></td>
+  <td class="broken"></td>
+  <td class="broken"></td>
   <td></td>
 </tr>
 <tr>
   <td>  9.9 [class.nested.type]</td>
   <td class="complete" align="center">&#x2713;</td>  
+  <td class="complete" align="center">&#x2713;</td>  
+  <td class="complete" align="center">&#x2713;</td>  
+  <td class="na" align="center">N/A</td>  
   <td></td>
+</tr>
+<tr>
+  <td>10 [class.derived]</td>
+  <td class="advanced" align="center"></td>  
+  <td class="advanced" align="center"></td>  
+  <td class="medium" align="center"></td>  
+  <td class="broken" align="center"></td>
   <td></td>
+</tr>
+<tr>
+  <td>  10.1 [class.mi]</td>
+  <td class="advanced" align="center"></td>  
+  <td class="advanced" align="center"></td>  
+  <td class="medium" align="center"></td>  
+  <td class="broken" align="center"></td>
+  <td>No layout of base classes</td>
+</tr>
+<tr>
+  <td>  10.2 [class.member.lookup]</td>
+  <td class="complete" align="center">&#x2713;</td>  
+  <td class="complete" align="center">&#x2713;</td>  
+  <td class="complete" align="center">&#x2713;</td>  
+  <td class="na" align="center">N/A</td>
   <td></td>
-  <td></td>
 </tr>
-<tr><td>10 [class.derived]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  10.1 [class.mi]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  10.2 [class.member.lookup]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  10.3 [class.virtual]</td><td></td><td></td><td></td><td></td><td></td></tr>
+<tr>
+  <td>  10.3 [class.virtual]</td>
+  <td class="advanced" align="center"></td>  
+  <td class="medium" align="center"></td>  
+  <td class="basic" align="center"></td>  
+  <td class="broken" align="center"></td>
+  <td>No semantic analysis for overriding virtual functions or inheriting a virtual function. No layout of classes with virtual functions.</td>
+</tr>
 <tr>
   <td>  10.4 [class.abstract]</td>
   <td class="complete" align="center">&#x2713;</td>  
   <td class="complete" align="center">&#x2713;</td>  
   <td class="complete" align="center">&#x2713;</td>  
-  <td class="na">N/A</td>
+  <td class="na" align="center">N/A</td>
   <td></td>
  </tr>
-<tr><td>11 [class.access]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  11.1 [class.access.spec]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  11.2 [class.access.base]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  11.3 [class.access.dcl]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  11.4 [class.friend]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  11.5 [class.protected]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  11.6 [class.access.virt]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  11.7 [class.paths]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  11.8 [class.access.nest]</td><td></td><td></td><td></td><td></td><td></td></tr>
+<tr>
+  <td>11 [class.access]</td>
+  <td class="medium" align="center"></td>  
+  <td class="medium" align="center"></td>  
+  <td class="broken" align="center"></td>  
+  <td class="na" align="center">N/A</td>
+  <td></td>
+</tr>
+<tr>
+  <td>  11.1 [class.access.spec]</td>
+  <td class="complete" align="center">&#x2713;</td>  
+  <td class="advanced" align="center"></td>  
+  <td class="complete" align="center">&#x2713;</td>  
+  <td class="na" align="center">N/A</td>
+  <td></td>  
+</tr>
+<tr>
+  <td>  11.2 [class.access.base]</td>
+  <td class="complete" align="center">&#x2713;</td>  
+  <td class="complete" align="center">&#x2713;</td>  
+  <td class="broken" align="center"></td>  
+  <td class="na" align="center">N/A</td>
+  <td></td>  
+</tr>
+<tr>
+  <td>  11.3 [class.access.dcl]</td>
+  <td class="broken" align="center"></td>  
+  <td class="broken" align="center"></td>  
+  <td class="broken" align="center"></td>  
+  <td class="na" align="center">N/A</td>
+  <td></td>  
+</tr>
+<tr>
+  <td>  11.4 [class.friend]</td>
+  <td class="broken" align="center"></td>  
+  <td class="broken" align="center"></td>  
+  <td class="broken" align="center"></td>  
+  <td class="na" align="center">N/A</td>
+  <td></td>  
+</tr>
+<tr>
+  <td>  11.5 [class.protected]</td>
+  <td class="na" align="center"></td>  
+  <td class="complete" align="center">&#x2713;</td>  
+  <td class="broken" align="center"></td>  
+  <td class="na" align="center">N/A</td>
+  <td></td>  
+</tr>
+<tr>
+  <td>  11.6 [class.access.virt]</td>
+  <td class="na" align="center"></td>  
+  <td class="na" align="center"></td>  
+  <td class="broken" align="center"></td>  
+  <td class="na" align="center">N/A</td>
+  <td></td>  
+</tr>
+<tr>
+  <td>  11.7 [class.paths]</td>
+  <td class="na" align="center"></td>  
+  <td class="na" align="center"></td>  
+  <td class="broken" align="center"></td>  
+  <td class="na" align="center">N/A</td>
+  <td></td>  
+</tr>
+<tr>
+  <td>  11.8 [class.access.nest]</td>
+  <td class="na" align="center"></td>  
+  <td class="na" align="center"></td>  
+  <td class="broken" align="center"></td>  
+  <td class="na" align="center">N/A</td>
+  <td></td>  
+</tr>
 <tr><td>12 [special]</td><td></td><td></td><td></td><td></td><td></td></tr>
 <tr>
   <td>  12.1 [class.ctor]</td>
   <td class="advanced" align="center"></td>
   <td class="medium" align="center"></td>
   <td class="basic" align="center"></td>
-  <td class="broken" align="center"></td>
-  <td></td>
+  <td class="basic" align="center"></td>
+  <td>Implicitly-declared constructors are never defined.</td>
+</tr>
+<tr>
+  <td>  12.2 [class.temporary]</td>
+  <td class="na" align="center">N/A</td>
+  <td class="basic" align="center"></td>
+  <td class="basic" align="center"></td>
+  <td class="basic" align="center"></td>
+  <td>Implementation of temporary objects is in its initial stages.</td>
 </tr>
-<tr><td>  12.2 [class.temporary]</td><td></td><td></td><td></td><td></td><td></td></tr>
 <tr>
   <td>  12.3 [class.conv]</td>
   <td class="advanced" align="center"></td>
+  <td class="advanced" align="center"></td>
   <td class="medium" align="center"></td>
-  <td class="basic" align="center"></td>
   <td class="broken" align="center"></td>
   <td></td>
 </tr>
 <tr>
   <td>    12.3.1 [class.conv.ctor]</td>
+  <td class="complete" align="center"></td>
+  <td class="advanced" align="center"></td>
   <td class="advanced" align="center"></td>
-  <td class="medium" align="center"></td>
-  <td class="medium" align="center"></td>
   <td class="broken" align="center"></td>
   <td></td>
 </tr>
 <tr>
   <td>    12.3.2 [class.conv.fct]</td>
+  <td class="complete" align="center"></td>
+  <td class="advanced" align="center"></td>
   <td class="advanced" align="center"></td>
-  <td class="medium" align="center"></td>
-  <td class="basic" align="center"></td>
   <td class="broken" align="center"></td>
-  <td>Conversion functions can be declared and defined, but aren't used for anything.</td>
+  <td>No support for inheritance of conversion functions.</td>
 </tr>
 <tr>
   <td>  12.4 [class.dtor]</td>
@@ -1343,7 +1513,15 @@
   <td>No actual direct initialization; implicit initialization not checked.</td>
 </tr>
 <tr><td>  12.7 [class.cdtor]</td><td></td><td></td><td></td><td></td><td></td></tr>
-<tr><td>  12.8 [class.copy]</td><td></td><td></td><td></td><td></td><td></td></tr>
+<tr>
+  <td>  12.8 [class.copy]</td>
+  <td class="advanced" align="center"></td>
+  <td class="advanced" align="center"></td>
+  <td class="medium" align="center"></td>
+  <td class="broken" align="center"></td>
+  <td>Copy assignment operators are mostly ignored by semantic analysis.</td>
+</tr>
+
 <tr><td>13 [over]</td><td></td><td></td><td></td><td></td><td></td></tr>
 <tr>
   <td>  13.1 [over.load]</td>





More information about the cfe-commits mailing list