aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.other/decl5.C
blob: 2a7a5f2560e0bac1e9a292d90c92748741059bc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// { dg-do assemble  }

// Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 22 Apr 1999 <nathan@acm.org>
// derived from a bug report by <rch@larissa.sd.bi.ruhr-uni-bochum.de>
// http://gcc.gnu.org/ml/gcc-bugs/1999-04n/msg00631.html
// the code is wrong, but we fell over badly


struct A {
  int A::fn();        // { dg-error "extra qualification" } 
  int A::m;           // { dg-error "extra qualification" } 
  struct e;
  struct A::e {int i;}; // { dg-error "extra qualification" "qual" } 
  // { dg-error "anonymous struct" "anon" { target *-*-* } 14 }
  struct A::expand {  // { dg-error "qualified name" } 
  int m;
  };
  struct Z;
  expand me;          // { dg-error "'expand' does not name a type" }
  void foo(struct A::e);
  void foo(struct A::z);  // { dg-error "does not name a type" }
};

struct Q;
struct B {
  struct A::fink {    // { dg-error "does not name a class before" }
  int m;
  };
  struct A::Z {       // { dg-error "does not enclose" } A::Z not a member of B
    int m;
  };
  int m;
  int n;
  struct ::Q {        // { dg-error "global qual" } ::Q not a member of B
    int m;
  };
  int A::fn() {       // { dg-error "cannot define member" } A::fn not a member of B
    return 0;
  }
  void fn(struct ::Q &);
  void foo(struct A::y);  // { dg-error "does not name a type" } no such member
};

struct ::C {          // { dg-error "invalid before" } extra qualification
  int i;
};

namespace N {
  int fn();
  struct F;
}

namespace NMS
{
  void NMS::fn();     // { dg-error "explicit qual" }
  int NMS::i;         // { dg-error "explicit qual" }
  struct NMS::D {     // { dg-error "does not name a class" }
    int i;
  };
  struct N::E {       // { dg-error "does not name a class" } no such type
    int i;
  };
  struct ::F {        // { dg-error "global qual" } no such type
    int i;
  };
  int N::fn() {       // { dg-error "namespace" } N::fn not a member of NMS
    return 0;
  }
  struct N::F {       // { dg-error "namespace" } N::F not a member of NMS
    int i;
  };
}

NMS::D thing;         // { dg-error "'D' in namespace 'NMS' does not name a type" }
void NMS::fn()
{
  i = 3;
}

// From PR c++/15766 - bad parse error recovery (2 bugs)
void confusion1(const UndefinedType& a)  // { dg-error "does not name a type" }
{
}