summaryrefslogtreecommitdiffstats
path: root/tests/language-feature/capability/cpp-target-has-cpp-impl-from-default.slang
diff options
context:
space:
mode:
Diffstat (limited to 'tests/language-feature/capability/cpp-target-has-cpp-impl-from-default.slang')
-rw-r--r--tests/language-feature/capability/cpp-target-has-cpp-impl-from-default.slang32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/language-feature/capability/cpp-target-has-cpp-impl-from-default.slang b/tests/language-feature/capability/cpp-target-has-cpp-impl-from-default.slang
new file mode 100644
index 000000000..46ffaf2a7
--- /dev/null
+++ b/tests/language-feature/capability/cpp-target-has-cpp-impl-from-default.slang
@@ -0,0 +1,32 @@
+//TEST:SIMPLE(filecheck=CHECK): -target cpp -entry computeMain -stage compute -allow-glsl
+
+// CHECK: computeMain(
+
+layout(binding = 0) buffer MyBlockName
+{
+ int v[1];
+} outputBuffer;
+
+// `default` only should try to define `glsl`, but glsl target is
+// present in a `case` statment. Therefore this code should error
+// since cpp is missing a target for a function called
+[require(cpp_glsl)]
+void someInternalFunc()
+{
+ __target_switch
+ {
+ case glsl:
+ outputBuffer.v[0] = 0;
+ default:
+ outputBuffer.v[0] = 0;
+ }
+}
+void someMin()
+{
+ someInternalFunc();
+}
+[numthreads(1,1,1)]
+void computeMain()
+{
+ someMin();
+}