xref: /llvm-project/clang/test/ParserHLSL/cb_error.hlsl (revision 782ac2182c2b02de775c0f5a3d935613f2b748f5)
1// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -o - -fsyntax-only %s -verify
2
3// expected-error@+2 {{expected identifier}}
4// expected-error@+1 {{expected unqualified-id}}
5cbuffer { ... };
6// expected-error@+1 {{expected '{'}}
7cbuffer missing_definition;
8// expected-error@+1 {{expected unqualified-id}}
9int cbuffer;
10// expected-error@+1 {{expected identifier}}
11cbuffer;
12
13// expected-error@+2 {{expected identifier}}
14// expected-error@+1 {{expected unqualified-id}}
15tbuffer { ... };
16// expected-error@+1 {{expected '{'}}
17tbuffer missing_definition;
18// expected-error@+1 {{expected unqualified-id}}
19int tbuffer;
20// expected-error@+1 {{expected identifier}}
21tbuffer;
22
23// expected-error@+1 {{expected unqualified-id}}
24cbuffer A {}, B{}
25
26// cbuffer inside namespace is supported.
27namespace N {
28  cbuffer A {
29    float g;
30  }
31}
32
33cbuffer A {
34  // expected-error@+1 {{invalid declaration inside cbuffer}}
35  namespace N {
36  }
37}
38
39cbuffer A {
40  // expected-error@+1 {{invalid declaration inside cbuffer}}
41  cbuffer Nested {
42  }
43}
44
45struct S {
46  // expected-error@+1 {{expected member name or ';' after declaration specifiers}}
47  cbuffer what {
48    int y;
49  }
50};
51
52void func() {
53  // expected-error@+1 {{expected expression}}
54  tbuffer derp {
55    int z;
56  }
57
58  decltype(derp) another {
59    int a;
60  }
61}
62
63// struct decl inside cb is supported.
64cbuffer A {
65  struct S2 {
66    float s;
67  };
68  S2 s;
69}
70
71// function decl inside cb is supported.
72cbuffer A {
73  float foo_inside_cb() { return 1.2;}
74}
75