summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-02-27 10:32:14 -0800
committerGitHub <noreply@github.com>2025-02-27 10:32:14 -0800
commit6cf15f4ea1fe044d8227440dcc30ac712334568e (patch)
tree668f3ef00fd0b144dd3221ee4ab8d344397649d8 /tests
parent2ebf9555a54c00f45b1cd0bdd7f6c163120bb845 (diff)
Allow `.member` syntax on vector and scalars. (#6424)
* Allow `.member` syntax on vector and scalars. * Fix. * fix. * Fix. * update comment. * Fix tests. * Fix warning. * Add more tests.
Diffstat (limited to 'tests')
-rw-r--r--tests/bugs/invalid-swizzle-count.slang4
-rw-r--r--tests/diagnostics/matrix-swizzle.slang.expected26
-rw-r--r--tests/front-end/matrix-member.slang17
-rw-r--r--tests/front-end/scalar-member.slang17
-rw-r--r--tests/front-end/vector-member.slang17
-rw-r--r--tests/language-server/member-completion-broken-syntax-3.slang10
-rw-r--r--tests/language-server/scalar-member.slang9
-rw-r--r--tests/language-server/vector-member.slang7
8 files changed, 88 insertions, 19 deletions
diff --git a/tests/bugs/invalid-swizzle-count.slang b/tests/bugs/invalid-swizzle-count.slang
index 811cf6f44..93cb1fdcc 100644
--- a/tests/bugs/invalid-swizzle-count.slang
+++ b/tests/bugs/invalid-swizzle-count.slang
@@ -1,6 +1,6 @@
//TEST:SIMPLE(filecheck=CHECK): -target spirv -stage compute -entry computeMain -emit-spirv-directly
-// CHECK: error 30052
-// CHECK-NOT: error 30052
+// CHECK: error 30027
+// CHECK-NOT: error 30027
RWStructuredBuffer<float> outputBuffer;
[numthreads(1,1,1)]
diff --git a/tests/diagnostics/matrix-swizzle.slang.expected b/tests/diagnostics/matrix-swizzle.slang.expected
index 832ddd739..3c8853161 100644
--- a/tests/diagnostics/matrix-swizzle.slang.expected
+++ b/tests/diagnostics/matrix-swizzle.slang.expected
@@ -1,42 +1,42 @@
result code = -1
standard error = {
-tests/diagnostics/matrix-swizzle.slang(8): error 30052: invalid swizzle pattern '_14' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(8): error 30027: '_14' is not a member of 'matrix<int,2,3>'.
int c = m1._14; // Out of bounds
^~~
-tests/diagnostics/matrix-swizzle.slang(9): error 30052: invalid swizzle pattern '_32' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(9): error 30027: '_32' is not a member of 'matrix<int,2,3>'.
c = m1._32;
^~~
-tests/diagnostics/matrix-swizzle.slang(10): error 30052: invalid swizzle pattern '_m22' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(10): error 30027: '_m22' is not a member of 'matrix<int,3,2>'.
c = m2._m22;
^~~~
-tests/diagnostics/matrix-swizzle.slang(11): error 30052: invalid swizzle pattern '_' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(11): error 30027: '_' is not a member of 'matrix<int,3,2>'.
c = m2._; // unfinished
^
-tests/diagnostics/matrix-swizzle.slang(12): error 30052: invalid swizzle pattern '_m' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(12): error 30027: '_m' is not a member of 'matrix<int,3,2>'.
c = m2._m;
^~
-tests/diagnostics/matrix-swizzle.slang(13): error 30052: invalid swizzle pattern '_1' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(13): error 30027: '_1' is not a member of 'matrix<int,3,2>'.
c = m2._1;
^~
-tests/diagnostics/matrix-swizzle.slang(14): error 30052: invalid swizzle pattern '_m1' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(14): error 30027: '_m1' is not a member of 'matrix<int,3,2>'.
c = m2._m1;
^~~
-tests/diagnostics/matrix-swizzle.slang(15): error 30052: invalid swizzle pattern '_m12_' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(15): error 30027: '_m12_' is not a member of 'matrix<int,3,2>'.
c = m2._m12_;
^~~~~
-tests/diagnostics/matrix-swizzle.slang(16): error 30052: invalid swizzle pattern '_m11_11' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(16): error 30027: '_m11_11' is not a member of 'matrix<int,2,3>'.
int2 c2 = m1._m11_11; // Mixing of 1 and 0-indexing
^~~~~~~
-tests/diagnostics/matrix-swizzle.slang(17): error 30052: invalid swizzle pattern '_11_11_11_11_11' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(17): error 30027: '_11_11_11_11_11' is not a member of 'matrix<int,2,3>'.
c = m1._11_11_11_11_11; // More than 4 elements
^~~~~~~~~~~~~~~
-tests/diagnostics/matrix-swizzle.slang(18): error 30052: invalid swizzle pattern 'x' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(18): error 30027: 'x' is not a member of 'matrix<int,2,3>'.
c = m1.x; // Invalid character
^
-tests/diagnostics/matrix-swizzle.slang(19): error 30052: invalid swizzle pattern '_x' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(19): error 30027: '_x' is not a member of 'matrix<int,2,3>'.
c = m1._x;
^~
-tests/diagnostics/matrix-swizzle.slang(20): error 30052: invalid swizzle pattern 'x123' on type 'int'
+tests/diagnostics/matrix-swizzle.slang(20): error 30027: 'x123' is not a member of 'matrix<int,2,3>'.
c = m1.x123;
^~~~
}
diff --git a/tests/front-end/matrix-member.slang b/tests/front-end/matrix-member.slang
new file mode 100644
index 000000000..447fe715f
--- /dev/null
+++ b/tests/front-end/matrix-member.slang
@@ -0,0 +1,17 @@
+//TEST:COMPARE_COMPUTE(filecheck-buffer=CHECK):-output-using-type
+
+extension float2x2
+{
+ float sum() { return this[0][0] + this[1][1]; }
+}
+
+//TEST_INPUT: set outputBuffer = out ubuffer(data=[0 0 0 0], stride = 4)
+RWStructuredBuffer<float> outputBuffer;
+
+[numthreads(1,1,1)]
+void computeMain()
+{
+ float2x2 v = {1,2,3,4};
+ // CHECK: 5
+ outputBuffer[0] = v.sum();
+} \ No newline at end of file
diff --git a/tests/front-end/scalar-member.slang b/tests/front-end/scalar-member.slang
new file mode 100644
index 000000000..b85b8772c
--- /dev/null
+++ b/tests/front-end/scalar-member.slang
@@ -0,0 +1,17 @@
+//TEST:COMPARE_COMPUTE(filecheck-buffer=CHECK):-output-using-type
+
+extension float
+{
+ float sum() { return this + 1; }
+}
+
+//TEST_INPUT: set outputBuffer = out ubuffer(data=[0 0 0 0], stride = 4)
+RWStructuredBuffer<float> outputBuffer;
+
+[numthreads(1,1,1)]
+void computeMain()
+{
+ float v = 10.0;
+ // CHECK: 11
+ outputBuffer[0] = v.sum();
+} \ No newline at end of file
diff --git a/tests/front-end/vector-member.slang b/tests/front-end/vector-member.slang
new file mode 100644
index 000000000..adced39e4
--- /dev/null
+++ b/tests/front-end/vector-member.slang
@@ -0,0 +1,17 @@
+//TEST:COMPARE_COMPUTE(filecheck-buffer=CHECK):-output-using-type
+
+extension float3
+{
+ float sum() { return this.x + this.y + this.z; }
+}
+
+//TEST_INPUT: set outputBuffer = out ubuffer(data=[0 0 0 0], stride = 4)
+RWStructuredBuffer<float> outputBuffer;
+
+[numthreads(1,1,1)]
+void computeMain()
+{
+ float3 v = { 1, 2, 3 };
+ // CHECK: 6
+ outputBuffer[0] = v.sum();
+} \ No newline at end of file
diff --git a/tests/language-server/member-completion-broken-syntax-3.slang b/tests/language-server/member-completion-broken-syntax-3.slang
index 316afc541..9d497f9e1 100644
--- a/tests/language-server/member-completion-broken-syntax-3.slang
+++ b/tests/language-server/member-completion-broken-syntax-3.slang
@@ -1,9 +1,13 @@
-//TEST:LANG_SERVER:
-//COMPLETE:7,9
+//TEST:LANG_SERVER(filecheck=CHECK):
float3 m()
{
float3 val = 0;
+//COMPLETE:7,9
val.
return val;
-} \ No newline at end of file
+}
+
+// CHECK: x
+// CHECK: y
+// CHECK: z \ No newline at end of file
diff --git a/tests/language-server/scalar-member.slang b/tests/language-server/scalar-member.slang
new file mode 100644
index 000000000..6b12ab897
--- /dev/null
+++ b/tests/language-server/scalar-member.slang
@@ -0,0 +1,9 @@
+//TEST:LANG_SERVER(filecheck=CHECK):
+void f()
+{
+ float v;
+//COMPLETE:6,7
+ v.
+}
+
+// CHECK: x \ No newline at end of file
diff --git a/tests/language-server/vector-member.slang b/tests/language-server/vector-member.slang
index 5d624e56d..341544ac0 100644
--- a/tests/language-server/vector-member.slang
+++ b/tests/language-server/vector-member.slang
@@ -1,7 +1,12 @@
-//TEST:LANG_SERVER:
+//TEST:LANG_SERVER(filecheck=CHECK):
void f()
{
float4 v;
//COMPLETE:6,7
v.
}
+
+// CHECK: x
+// CHECK: y
+// CHECK: z
+// CHECK: w \ No newline at end of file