Fix the clang-wpa example.
[clang.git] / test / Parser / cxx0x-attributes.cpp
blob9956427ebf119c27bc9a6506ab290f9995d1b678
1 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++0x %s
3 // Declaration syntax checks
4 [[]] int before_attr;
5 int after_attr [[]];
6 int * [[]] ptr_attr;
7 int array_attr [1] [[]];
8 [[align(8)]] int aligned_attr;
9 [[test::valid(for 42 [very] **** '+' symbols went on a trip; the end.)]]
10 int garbage_attr;
11 void fn_attr () [[]];
12 class [[]] class_attr {};
13 extern "C++" [[]] int extern_attr;
14 template <typename T> [[]] void template_attr ();
16 int comma_attr [[,]]; // expected-error {{expected identifier}}
17 int scope_attr [[foo::]]; // expected-error {{expected identifier}}
18 int & [[]] ref_attr = after_attr; // expected-error {{an attribute list cannot appear here}}
19 class foo {
20 void after_const_attr () const [[]]; // expected-error {{expected expression}}
22 extern "C++" [[]] { } // expected-error {{an attribute list cannot appear here}}
23 [[]] template <typename T> void before_template_attr (); // expected-error {{an attribute list cannot appear here}}
24 [[]] namespace ns { int i; } // expected-error {{an attribute list cannot appear here}}
25 [[]] static_assert(true, ""); //expected-error {{an attribute list cannot appear here}}
26 [[]] asm(""); // expected-error {{an attribute list cannot appear here}}
28 [[]] using ns::i; // expected-error {{an attribute list cannot appear here}}
29 [[]] using namespace ns;
31 // Argument tests
32 [[align]] int aligned_no_params; // expected-error {{C++0x attribute 'align' must have an argument list}}
33 [[align(i)]] int aligned_nonconst; // expected-error {{'aligned' attribute requires integer constant}}
35 // Statement tests
36 void foo () {
37 [[]] ;
38 [[]] { }
39 [[]] if (0) { }
40 [[]] for (;;);
41 [[]] do {
42 [[]] continue;
43 } while (0);
44 [[]] while (0);
46 [[]] switch (i) {
47 [[]] case 0:
48 [[]] default:
49 [[]] break;
52 [[]] goto there;
53 [[]] there:
55 [[]] try {
56 } [[]] catch (...) { // expected-error {{an attribute list cannot appear here}}
59 [[]] return;