aboutsummaryrefslogtreecommitdiff
path: root/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp')
-rw-r--r--test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp156
1 files changed, 0 insertions, 156 deletions
diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp
deleted file mode 100644
index 8c6f6e5ddc79..000000000000
--- a/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-
-namespace RedeclAliasTypedef {
- typedef int T;
- using T = int;
- using T = int;
- typedef T T;
- using T = T;
- typedef int T;
-}
-
-namespace IllegalTypeIds {
- using A = void(int n = 0); // expected-error {{default arguments can only be specified for parameters in a function declaration}}
- using B = inline void(int n); // expected-error {{type name does not allow function specifier}}
- using C = virtual void(int n); // expected-error {{type name does not allow function specifier}}
- using D = explicit void(int n); // expected-error {{type name does not allow function specifier}}
- using E = void(int n) throw(); // expected-error {{exception specifications are not allowed in type aliases}}
- using F = void(*)(int n) &&; // expected-error {{pointer to function type cannot have '&&' qualifier}}
- using G = __thread void(int n); // expected-error {{type name does not allow storage class to be specified}}
- using H = constexpr int; // expected-error {{type name does not allow constexpr specifier}}
-
- using Y = void(int n); // ok
- using Z = void(int n) &&; // ok
-}
-
-namespace IllegalSyntax {
- using ::T = void(int n); // expected-error {{name defined in alias declaration must be an identifier}}
- using operator int = void(int n); // expected-error {{name defined in alias declaration must be an identifier}}
- using typename U = void; // expected-error {{name defined in alias declaration must be an identifier}}
- using typename ::V = void(int n); // expected-error {{name defined in alias declaration must be an identifier}}
- using typename ::operator bool = void(int n); // expected-error {{name defined in alias declaration must be an identifier}}
-}
-
-namespace VariableLengthArrays {
- using T = int[42]; // ok
-
- int n = 32;
- using T = int[n]; // expected-error {{variable length array declaration not allowed at file scope}}
-
- const int m = 42;
- using U = int[m];
- using U = int[42]; // expected-note {{previous definition}}
- using U = int; // expected-error {{type alias redefinition with different types ('int' vs 'int [42]')}}
-
- void f() {
- int n = 42;
- goto foo; // expected-error {{cannot jump}}
- using T = int[n]; // expected-note {{bypasses initialization of VLA type alias}}
- foo: ;
- }
-}
-
-namespace RedeclFunc {
- int f(int, char**);
- using T = int;
- T f(int, char **); // ok
-}
-
-namespace LookupFilter {
- namespace N { struct S; }
- using namespace N;
- using S = S*; // ok
-}
-
-namespace InFunctions {
- template<typename...T> void f0() {
- using U = T*; // expected-error {{declaration type contains unexpanded parameter pack 'T'}}
- U u;
- }
- template void f0<int, char>();
-
- void f1() {
- using T = int;
- }
- void f2() {
- using T = int[-1]; // expected-error {{array size is negative}}
- }
-
- template<typename...T> void f3() { // expected-note {{template parameter is declared here}}
- using T = int; // expected-error {{declaration of 'T' shadows template parameter}}
- }
-}
-
-namespace ClassNameRedecl {
- class C0 {
- using C0 = int; // expected-error {{member 'C0' has the same name as its class}}
- };
- class C1 {
- using C1 = C1; // expected-error {{member 'C1' has the same name as its class}}
- };
- class C2 {
- using C0 = C1; // ok
- };
- template<typename...T> class C3 {
- using f = T; // expected-error {{declaration type contains unexpanded parameter pack 'T'}}
- };
- template<typename T> class C4 { // expected-note {{template parameter is declared here}}
- using T = int; // expected-error {{declaration of 'T' shadows template parameter}}
- };
- class C5 {
- class c; // expected-note {{previous definition}}
- using c = int; // expected-error {{typedef redefinition with different types}}
- class d;
- using d = d; // ok
- };
- class C6 {
- class c { using C6 = int; }; // ok
- };
-}
-
-class CtorDtorName {
- using X = CtorDtorName;
- X(); // expected-error {{expected member name}}
- ~X(); // expected-error {{destructor cannot be declared using a type alias}}
-};
-
-namespace TagName {
- using S = struct { int n; };
- using T = class { int n; };
- using U = enum { a, b, c };
- using V = struct V { int n; };
-}
-
-namespace CWG1044 {
- using T = T; // expected-error {{unknown type name 'T'}}
-}
-
-namespace StdExample {
- template<typename T, typename U> struct pair;
-
- using handler_t = void (*)(int);
- extern handler_t ignore;
- extern void (*ignore)(int);
- // FIXME: we know we're parsing a type here; don't recover as if we were
- // using operator*.
- using cell = pair<void*, cell*>; // expected-error {{use of undeclared identifier 'cell'}} \
- expected-error {{expected expression}}
-}
-
-namespace Access {
- class C0 {
- using U = int; // expected-note {{declared private here}}
- };
- C0::U v; // expected-error {{'U' is a private member}}
- class C1 {
- public:
- using U = int;
- };
- C1::U w; // ok
-}
-
-namespace VoidArg {
- using V = void;
- V f(int); // ok
- V g(V); // ok (DR577)
-}