[clang] a6e63e3 - [NFC][HLSL] Add tests for vector alias. Remove dead code.

Chris Bieneman via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 5 14:33:11 PDT 2022


Author: Chris Bieneman
Date: 2022-07-05T16:32:59-05:00
New Revision: a6e63e35ede4b9f23b58437263eaac9a2926c9bf

URL: https://github.com/llvm/llvm-project/commit/a6e63e35ede4b9f23b58437263eaac9a2926c9bf
DIFF: https://github.com/llvm/llvm-project/commit/a6e63e35ede4b9f23b58437263eaac9a2926c9bf.diff

LOG: [NFC][HLSL] Add tests for vector alias. Remove dead code.

Based on feedback from @Aaron.Ballman.

Remove the unused static ID char (can re-add it later if needed).

Add test to cover some invalid HLSL vector instantations ensuring
that the appropriate error messages are generated.

Added: 
    clang/test/SemaHLSL/BuiltIns/vector-errors.hlsl

Modified: 
    clang/include/clang/Sema/HLSLExternalSemaSource.h
    clang/lib/Sema/HLSLExternalSemaSource.cpp

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Sema/HLSLExternalSemaSource.h b/clang/include/clang/Sema/HLSLExternalSemaSource.h
index 92154427a3e72..439fc3d10f333 100644
--- a/clang/include/clang/Sema/HLSLExternalSemaSource.h
+++ b/clang/include/clang/Sema/HLSLExternalSemaSource.h
@@ -19,8 +19,6 @@ class NamespaceDecl;
 class Sema;
 
 class HLSLExternalSemaSource : public ExternalSemaSource {
-  static char ID;
-
   Sema *SemaPtr = nullptr;
   NamespaceDecl *HLSLNamespace;
 

diff  --git a/clang/lib/Sema/HLSLExternalSemaSource.cpp b/clang/lib/Sema/HLSLExternalSemaSource.cpp
index 2de90378baf90..56c2dd40bd9a8 100644
--- a/clang/lib/Sema/HLSLExternalSemaSource.cpp
+++ b/clang/lib/Sema/HLSLExternalSemaSource.cpp
@@ -17,8 +17,6 @@
 
 using namespace clang;
 
-char HLSLExternalSemaSource::ID;
-
 HLSLExternalSemaSource::~HLSLExternalSemaSource() {}
 
 void HLSLExternalSemaSource::InitializeSema(Sema &S) {

diff  --git a/clang/test/SemaHLSL/BuiltIns/vector-errors.hlsl b/clang/test/SemaHLSL/BuiltIns/vector-errors.hlsl
new file mode 100644
index 0000000000000..d2598a57400b0
--- /dev/null
+++ b/clang/test/SemaHLSL/BuiltIns/vector-errors.hlsl
@@ -0,0 +1,30 @@
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -fsyntax-only -verify %s
+
+// Some bad declarations
+hlsl::vector ShouldWorkSomeday; // expected-error{{use of alias template 'hlsl::vector' requires template arguments}}
+
+hlsl::vector<1> BadVec; // expected-error{{template argument for template type parameter must be a type}}
+// expected-note@*:* {{template is declared here}}
+// expected-note@*:* {{template parameter is declared here}}
+
+
+hlsl::vector<int, float> AnotherBadVec; // expected-error{{template argument for non-type template parameter must be an expression}}
+// expected-note@*:* {{template parameter is declared here}}
+
+hlsl::vector<int, 2, 3> YABV; // expected-error{{too many template arguments for alias template 'vector'}}
+// expected-note@*:* {{template is declared here}}
+
+// This code is rejected by clang because clang puts the HLSL built-in types
+// into the HLSL namespace.
+namespace hlsl {
+  struct vector {}; // expected-error {{redefinition of 'vector'}}
+}
+
+// This code is rejected by dxc because dxc puts the HLSL built-in types
+// into the global space, but clang will allow it even though it will shadow the
+// vector template.
+struct vector {}; // expected-note {{candidate found by name lookup is 'vector'}}
+
+vector<int,2> VecInt2; // expected-error {{reference to 'vector' is ambiguous}}
+
+// expected-note@*:* {{candidate found by name lookup is 'hlsl::vector'}}


        


More information about the cfe-commits mailing list