OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.dg/] [cpp0x/] [auto9.C] - Blame information for rev 705

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 693 jeremybenn
// PR c++/37962
2
// Negative test for auto
3
// { dg-do compile }
4
// { dg-options "-std=c++0x" }
5
 
6
#include 
7
#include 
8
#include 
9
 
10
int i = *(auto *) 0;                            // { dg-error "auto" }
11
struct A *p = (auto *) 0;                       // { dg-error "auto" }
12
int *q = static_cast (0);               // { dg-error "auto" }
13
const int *r = const_cast (q);          // { dg-error "auto" }
14
const std::type_info &t1 = typeid (auto);  // { dg-error "auto" }
15
const std::type_info &t2 = typeid (auto *);  // { dg-error "auto" }
16
 
17
struct A
18
{
19
  operator auto ();                             // { dg-error "auto" }
20
  operator auto *();                            // { dg-error "auto" }
21
};
22
 
23
struct A2
24
{
25
  operator auto () -> int;                      // { dg-error "invalid use of" }
26
  operator auto *() -> int;                     // { dg-error "auto" }
27
};
28
 
29
template  struct B
30
{
31
  enum { e };
32
};
33
 
34
template  struct C
35
{
36
  C () : i () {}
37
  int i;
38
};
39
 
40
bool d = (auto (A::*)()) 0;                     // { dg-error "auto" }
41
 
42
void
43
foo ()
44
{
45
  (auto) { 0 };                                 // { dg-error "auto" }
46
  C c;
47
  dynamic_cast (c);                     // { dg-error "auto" }
48
  reinterpret_cast (c);                 // { dg-error "auto" }
49
  int i = auto (0);                             // { dg-error "auto" }
50
  auto p1 = new (auto);                         // { dg-error "auto" }
51
  auto p2 = new (auto) (42);                    // { dg-error "invalid use of|deduce" }
52
  offsetof (auto, fld);                         // { dg-error "auto" }
53
  offsetof (auto *, fld);                       // { dg-error "auto" }
54
  sizeof (auto);                                // { dg-error "auto" }
55
  sizeof (auto *);                              // { dg-error "auto" }
56
}
57
 
58
void
59
foo2 (void)
60
{
61
  __alignof__ (auto);                           // { dg-error "auto" }
62
  __alignof__ (auto *);                         // { dg-error "auto" }
63
  __typeof__ (auto) v1;                         // { dg-error "auto" }
64
  __typeof__ (auto *) v2;                       // { dg-error "auto" }
65
  __is_class (auto);                            // { dg-error "auto|expected" }
66
  __is_pod (auto *);                            // { dg-error "auto|expected" }
67
  __is_base_of (int, auto);                     // { dg-error "auto|expected" }
68
  __is_base_of (auto, int);                     // { dg-error "auto|expected" }
69
  __is_base_of (auto, auto *);                  // { dg-error "auto|expected" }
70
}
71
 
72
B b;                                    // { dg-error "auto|invalid" }
73
C c;                                    // { dg-error "auto|invalid" }
74
C c2;                                   // { dg-error "auto|invalid" }
75
 
76
enum : auto { EE = 0 };                         // { dg-error "must be an integral type" }
77
enum struct D : auto * { FF = 0 };              // { dg-error "must be an integral type|declar|expected" }
78
 
79
void
80
bar ()
81
{
82
  try { } catch (auto i) { }                    // { dg-error "parameter declared" }
83
  try { } catch (auto) { }                      // { dg-error "parameter declared" }
84
  try { } catch (auto *i) { }                   // { dg-error "parameter declared" }
85
  try { } catch (auto *) { }                    // { dg-error "parameter declared" }
86
}
87
 
88
void
89
baz (int i, ...)
90
{
91
  va_list ap;
92
  va_start (ap, i);
93
  va_arg (ap, auto);                            // { dg-error "invalid use of" }
94
  va_arg (ap, auto *);                          // { dg-error "invalid use of|expected" }
95
  va_arg (ap, auto &);                            // { dg-error "invalid use of|expected" }
96
  va_end (ap);
97
}
98
 
99
template  struct E {};  // { dg-error "invalid use of" }
100
template  struct F {};  // { dg-error "invalid use of|expected" }
101
 
102
auto fnlate () -> auto;                         // { dg-error "invalid use of" }
103
auto fnlate2 () -> auto *;                      // { dg-error "invalid use of|expected" }
104
 
105
void
106
badthrow () throw (auto)                        // { dg-error "invalid use of" }
107
{
108
}
109
 
110
void
111
badthrow2 () throw (auto &)                     // { dg-error "invalid use of|expected" }
112
{
113
}
114
 
115
template  struct G {};          // { dg-error "auto" }
116
 
117
template  struct H { H (); ~H (); };
118
H h;                                    // { dg-error "invalid" }
119
 
120
void qq (auto);                 // { dg-error "auto" }
121
void qr (auto*);                // { dg-error "auto" }
122
 
123
// PR c++/46145
124
typedef auto autot;             // { dg-error "auto" }

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.