aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/ext/attr-no-dangling2.C
blob: 4cdc97ea7c4e032f346add0617965916ae1a19f4 (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
// { dg-do compile { target c++11 } }
// Negative tests.

struct [[no_dangling]] A {	    // { dg-warning "ignored" }
 [[no_dangling]] int &foo (int &);   // { dg-warning "ignored" }
};

[[no_dangling]] int &bar (int &);    // { dg-warning "ignored" }

[[gnu::no_dangling]] int i;	    // { dg-warning "ignored" }
[[gnu::no_dangling]] double d;	    // { dg-warning "ignored" }
[[gnu::no_dangling]] typedef int T;  // { dg-warning "ignored" }

[[gnu::no_dangling()]] int &fn1 (int &);	    // { dg-error "parentheses" }
[[gnu::no_dangling("a")]] int &fn2 (int &);  // { dg-error "must be an expression" }
[[gnu::no_dangling(true, true)]] int &fn3 (int &);  // { dg-error "wrong number of arguments" }

enum [[gnu::no_dangling]] E {	    // { dg-warning "ignored" }
  X [[gnu::no_dangling]]		    // { dg-warning "ignored" }
};

[[gnu::no_dangling]];		    // { dg-warning "ignored" }

void
g ()
{
  goto L;
[[gnu::no_dangling]] L:;		    // { dg-warning "ignored" }
}