forked from OSchip/llvm-project
Big update to the C++ status table to reflect "recent"
development. Still much more to write! llvm-svn: 71167
This commit is contained in:
parent
17f0f65499
commit
1bbffbceae
|
|
@ -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}}
|
||||
|
|
@ -1113,25 +1113,97 @@ welcome!</p>
|
|||
<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">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="na">N/A</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> 8.2 [dcl.ambig.res]</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="na" align="center">N/A</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="na">N/A</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> 8.3 [dcl.meaning]</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</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">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="na">N/A</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> 8.3.2 [dcl.ref]</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="na">N/A</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> 8.3.3 [dcl.mptr]</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="na">N/A</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> 8.3.4 [dcl.array]</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="na">N/A</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> 8.3.5 [dcl.fct]</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</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">✓</td>
|
||||
<td class="complete" align="center">✓</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 @@ welcome!</p>
|
|||
<tr>
|
||||
<td> 9.1 [class.name]</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="na" align="center">N/A</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -1177,15 +1249,15 @@ welcome!</p>
|
|||
<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">✓</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 @@ welcome!</p>
|
|||
<td class="complete" align="center">✓</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 @@ welcome!</p>
|
|||
<td class="complete" align="center">✓</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 @@ welcome!</p>
|
|||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="medium" align="center"></td>
|
||||
<td></td>
|
||||
<td class="basic"></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -1217,7 +1289,7 @@ welcome!</p>
|
|||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="medium" align="center"></td>
|
||||
<td></td>
|
||||
<td class="basic"></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -1225,7 +1297,7 @@ welcome!</p>
|
|||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="medium" align="center"></td>
|
||||
<td></td>
|
||||
<td class="basic"></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -1239,89 +1311,187 @@ welcome!</p>
|
|||
<tr>
|
||||
<td> 9.6 [class.bit]</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> 9.7 [class.nest]</td>
|
||||
<td class="complete" align="center">✓</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">✓</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">✓</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="na" align="center">N/A</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 [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">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="na" align="center">N/A</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">✓</td>
|
||||
<td class="complete" align="center">✓</td>
|
||||
<td class="complete" align="center">✓</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">✓</td>
|
||||
<td class="advanced" align="center"></td>
|
||||
<td class="complete" align="center">✓</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">✓</td>
|
||||
<td class="complete" align="center">✓</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">✓</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 @@ welcome!</p>
|
|||
<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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue