1 | // RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s |
2 | // RUN: %clang_cc1 -fsyntax-only -std=c++11 -fallow-editor-placeholders -DSUPPRESS -verify %s |
3 | |
4 | struct Struct { |
5 | public: |
6 | void method(Struct &x); |
7 | }; |
8 | |
9 | struct <#struct name#> { |
10 | int <#field-name#>; |
11 | #ifndef SUPPRESS |
12 | // expected-error@-3 {{editor placeholder in source file}} |
13 | // expected-error@-3 {{editor placeholder in source file}} |
14 | #endif |
15 | }; |
16 | |
17 | typename <#typename#>::<#name#>; |
18 | decltype(<#expression#>) foobar; |
19 | typedef <#type#> <#name#>; |
20 | #ifndef SUPPRESS |
21 | // expected-error@-4 2 {{editor placeholder in source file}} |
22 | // expected-error@-4 {{editor placeholder in source file}} |
23 | // expected-error@-4 2 {{editor placeholder in source file}} |
24 | #endif |
25 | |
26 | namespace <#identifier#> { |
27 | <#declarations#> |
28 | #ifndef SUPPRESS |
29 | // expected-error@-3 {{editor placeholder in source file}} |
30 | // expected-error@-3 {{editor placeholder in source file}} |
31 | #endif |
32 | |
33 | } |
34 | |
35 | using <#qualifier#>::<#name#>; |
36 | #ifndef SUPPRESS |
37 | // expected-error@-2 2 {{editor placeholder in source file}} |
38 | #endif |
39 | |
40 | void avoidPlaceholderErrors(Struct &obj) { |
41 | static_cast< <#type#> >(<#expression#>); |
42 | while (<#condition#>) { |
43 | <#statements#> |
44 | } |
45 | obj.method(<#Struct &x#>); |
46 | #ifndef SUPPRESS |
47 | // expected-error@-6 2 {{editor placeholder in source file}} |
48 | // expected-error@-6 {{editor placeholder in source file}} |
49 | // expected-error@-6 {{editor placeholder in source file}} |
50 | // expected-error@-5 {{editor placeholder in source file}} |
51 | #endif |
52 | switch (<#expression#>) { |
53 | case <#constant#>: |
54 | <#statements#> |
55 | #ifndef SUPPRESS |
56 | // expected-error@-4 {{editor placeholder in source file}} |
57 | // expected-error@-4 {{editor placeholder in source file}} |
58 | // expected-error@-4 {{editor placeholder in source file}} |
59 | #endif |
60 | break; |
61 | |
62 | default: |
63 | break; |
64 | } |
65 | } |
66 | |
67 | void Struct::method(<#Struct &x#>, noSupressionHere) { // expected-error {{unknown type name 'noSupressionHere'}} expected-error {{C++ requires a type specifier for all declarations}} |
68 | #ifndef SUPPRESS |
69 | // expected-error@-2 {{editor placeholder in source file}} |
70 | #endif |
71 | } |
72 | |
73 | void handleTrigraph() { |
74 | <??=placeholder#> // expected-error {{expected expression}} expected-error {{expected expression}} expected-warning {{trigraph converted to '#' character}} |
75 | } |
76 | |