summaryrefslogtreecommitdiff
path: root/tests/diagnostics/methods
diff options
context:
space:
mode:
Diffstat (limited to 'tests/diagnostics/methods')
-rw-r--r--tests/diagnostics/methods/mutating-method-on-rvalue.slang26
-rw-r--r--tests/diagnostics/methods/mutating-method-on-rvalue.slang.expected8
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/diagnostics/methods/mutating-method-on-rvalue.slang b/tests/diagnostics/methods/mutating-method-on-rvalue.slang
new file mode 100644
index 000000000..ab51244aa
--- /dev/null
+++ b/tests/diagnostics/methods/mutating-method-on-rvalue.slang
@@ -0,0 +1,26 @@
+// mutating-method-on-rvalue.slang
+
+//DIAGNOSTIC_TEST:SIMPLE:-target hlsl -entry main
+
+struct Counter
+{
+ int count;
+
+ [mutating] void increment() { count++; }
+
+ void bad()
+ {
+ increment();
+ }
+}
+
+cbuffer C
+{
+ Counter gCounter;
+}
+
+[shader("compute")]
+void main()
+{
+ gCounter.increment();
+} \ No newline at end of file
diff --git a/tests/diagnostics/methods/mutating-method-on-rvalue.slang.expected b/tests/diagnostics/methods/mutating-method-on-rvalue.slang.expected
new file mode 100644
index 000000000..878882bd3
--- /dev/null
+++ b/tests/diagnostics/methods/mutating-method-on-rvalue.slang.expected
@@ -0,0 +1,8 @@
+result code = -1
+standard error = {
+tests/diagnostics/methods/mutating-method-on-rvalue.slang(13): error 30050: mutating method 'increment' cannot be called on an immutable value
+tests/diagnostics/methods/mutating-method-on-rvalue.slang(13): note 30049: a 'this' parameter is an immutable parameter by default in Slang; apply the `[mutating]` attribute to the function declaration to opt in to a mutable `this`
+tests/diagnostics/methods/mutating-method-on-rvalue.slang(25): error 30050: mutating method 'increment' cannot be called on an immutable value
+}
+standard output = {
+}