summaryrefslogtreecommitdiffstats
path: root/tests/language-feature
diff options
context:
space:
mode:
Diffstat (limited to 'tests/language-feature')
-rw-r--r--tests/language-feature/extensions/extension-override-3.slang28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/language-feature/extensions/extension-override-3.slang b/tests/language-feature/extensions/extension-override-3.slang
new file mode 100644
index 000000000..2a023bca3
--- /dev/null
+++ b/tests/language-feature/extensions/extension-override-3.slang
@@ -0,0 +1,28 @@
+//TEST:SIMPLE(filecheck=CHECK):-target spirv
+
+// This test verifies that a generic method defined in an extension can be found.
+
+// CHECK: OpEntryPoint
+struct Test {
+ void genericMethod<int u>(float2 x) {}
+ __subscript<T:__BuiltinIntegerType>(T idx1, T idx2) -> int
+ {
+ get { return 0; }
+ }
+}
+
+extension Test {
+ void genericMethod<int u>() {}
+ __subscript<T:__BuiltinIntegerType>(T idx1) -> int
+ {
+ get { return 1; }
+ }
+}
+
+[shader("compute")]
+void main()
+{
+ Test t;
+ t.genericMethod<3>(); // Should work - calls extension method
+ int a = t[0]; // Should work - calls extension method
+}