summaryrefslogtreecommitdiffstats
path: root/tests/experiments
diff options
context:
space:
mode:
Diffstat (limited to 'tests/experiments')
-rw-r--r--tests/experiments/generic/multilevel-inheritance.slang31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/experiments/generic/multilevel-inheritance.slang b/tests/experiments/generic/multilevel-inheritance.slang
new file mode 100644
index 000000000..f3db67d70
--- /dev/null
+++ b/tests/experiments/generic/multilevel-inheritance.slang
@@ -0,0 +1,31 @@
+//TEST:SIMPLE(filecheck=CHECK): -target spirv -gnone -std 2026
+//TEST:SIMPLE(filecheck=CHECK): -target spirv -gminimal -std 2026
+//TEST:SIMPLE(filecheck=CHECK_LEGACY): -target spirv -gnone -std 2025
+//TEST:SIMPLE(filecheck=CHECK_LEGACY): -target spirv -gminimal -std 2025
+//TEST:SIMPLE(filecheck=CHECK_LEGACY): -target spirv -gnone -std legacy
+//TEST:SIMPLE(filecheck=CHECK_LEGACY): -target spirv -gminimal -std legacy
+
+// CHECK: error 30811
+// CHECK: struct Child : Parent {};
+// CHECK: error 38029
+// CHECK: getObject<Child>();
+
+// CHECK_LEGACY: warning 30816
+// CHECK_LEGACY: struct Child : Parent {};
+// CHECK_LEGACY: error 38029
+// CHECK_LEGACY: getObject<Child>();
+
+interface IFoo {};
+struct Parent : IFoo {};
+struct Child : Parent {};
+
+T getObject<T>() where T : IFoo
+{
+ return T();
+}
+
+[shader("compute")]
+void main()
+{
+ getObject<Child>();
+}