diff --git a/clang/lib/Parse/ParseHLSL.cpp b/clang/lib/Parse/ParseHLSL.cpp index 443bf2b9ec626..f4c109f9a81a2 100644 --- a/clang/lib/Parse/ParseHLSL.cpp +++ b/clang/lib/Parse/ParseHLSL.cpp @@ -27,10 +27,10 @@ static bool validateDeclsInsideHLSLBuffer(Parser::DeclGroupPtrTy DG, return false; DeclGroupRef Decls = DG.get(); bool IsValid = true; - // Only allow function, variable, record decls inside HLSLBuffer. + // Only allow function, variable, record, and empty decls inside HLSLBuffer. for (DeclGroupRef::iterator I = Decls.begin(), E = Decls.end(); I != E; ++I) { Decl *D = *I; - if (isa(D)) + if (isa(D)) continue; // FIXME: support nested HLSLBuffer and namespace inside HLSLBuffer. diff --git a/clang/test/SemaHLSL/cb_error.hlsl b/clang/test/SemaHLSL/cb_error.hlsl index 133adeeb2068b..95c917a9bb9ee 100644 --- a/clang/test/SemaHLSL/cb_error.hlsl +++ b/clang/test/SemaHLSL/cb_error.hlsl @@ -47,3 +47,15 @@ tbuffer B { // expected-error@+1 {{unknown type name 'flaot'}} flaot f; } + +// None of these should produce an error! +cbuffer EmptyCBuffer {} + +cbuffer EmptyDeclCBuffer { + ; +} + +cbuffer EmptyDecl2CBuffer { + ; + int X; +}