// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -o - -fsyntax-only %s -verify // expected-error@+2 {{expected identifier}} // expected-error@+1 {{expected unqualified-id}} cbuffer { ... }; // expected-error@+1 {{expected '{'}} cbuffer missing_definition; // expected-error@+1 {{expected unqualified-id}} int cbuffer; // expected-error@+1 {{expected identifier}} cbuffer; // expected-error@+2 {{expected identifier}} // expected-error@+1 {{expected unqualified-id}} tbuffer { ... }; // expected-error@+1 {{expected '{'}} tbuffer missing_definition; // expected-error@+1 {{expected unqualified-id}} int tbuffer; // expected-error@+1 {{expected identifier}} tbuffer; // expected-error@+1 {{expected unqualified-id}} cbuffer A {}, B{} // cbuffer inside namespace is supported. namespace N { cbuffer A { float g; } } cbuffer A { // expected-error@+1 {{invalid declaration inside cbuffer}} namespace N { } } cbuffer A { // expected-error@+1 {{invalid declaration inside cbuffer}} cbuffer Nested { } } struct S { // expected-error@+1 {{expected member name or ';' after declaration specifiers}} cbuffer what { int y; } }; void func() { // expected-error@+1 {{expected expression}} tbuffer derp { int z; } decltype(derp) another { int a; } } // struct decl inside cb is supported. cbuffer A { struct S2 { float s; }; S2 s; } // function decl inside cb is supported. cbuffer A { float foo_inside_cb() { return 1.2;} }