diff options
Diffstat (limited to 'tests/diagnostics/interfaces')
| -rw-r--r-- | tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang | 42 | ||||
| -rw-r--r-- | tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang.expected | 6 |
2 files changed, 48 insertions, 0 deletions
diff --git a/tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang b/tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang new file mode 100644 index 000000000..2dbe45ccb --- /dev/null +++ b/tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang @@ -0,0 +1,42 @@ +// mutating-impl-of-non-mutating-req.slang + +//DIAGNOSTIC_TEST:SIMPLE:-target hlsl -entry main + +interface IThing +{ + int processValue(int inValue); +} + +struct Counter : IThing +{ + int state; + + [mutating] int processValue(int inValue) + { + int result = state; + state += inValue; + return state; + } +} + +int helper<T : IThing>(T thing, int value) +{ + return thing.processValue(value); +} + +int test(int value) +{ + Counter counter = { value }; + return helper(counter, value); +} + +cbuffer C +{ + int gValue; +} + +[shader("fragment")] +int main() : SV_Target +{ + return test(gValue); +}
\ No newline at end of file diff --git a/tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang.expected b/tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang.expected new file mode 100644 index 000000000..922a6c826 --- /dev/null +++ b/tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang(10): error 38100: type 'Counter' does not provide required interface member 'processValue' +} +standard output = { +} |
