From 7a8ef896196ad0d7095412d8558dd9a2542874c8 Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 21 Mar 2024 17:19:03 -0700 Subject: Support arrow operator `->` on pointers. (#3812) --- tests/diagnostics/arrow-operator.slang | 25 +++++++++++++++++++++++++ tests/spirv/pointer.slang | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/diagnostics/arrow-operator.slang (limited to 'tests') diff --git a/tests/diagnostics/arrow-operator.slang b/tests/diagnostics/arrow-operator.slang new file mode 100644 index 000000000..8c370cf67 --- /dev/null +++ b/tests/diagnostics/arrow-operator.slang @@ -0,0 +1,25 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv -emit-spirv-directly + +struct Type +{ + int member; +} + +struct CB +{ + Type* ptr; +} +ConstantBuffer cb; + +[numthreads(1,1,1)] +void main() +{ + Type val; + + // CHECK: ([[# @LINE+1]]): error 30101 + val->member = 2; // Error. + + // CHECK-NOT: error + let a = cb->ptr->member; // OK. + +} \ No newline at end of file diff --git a/tests/spirv/pointer.slang b/tests/spirv/pointer.slang index cd4845e4d..03ca3fb39 100644 --- a/tests/spirv/pointer.slang +++ b/tests/spirv/pointer.slang @@ -33,7 +33,7 @@ RWStructuredBuffer output; void main(int id : SV_DispatchThreadID) { output[0] = buffer[0].pNext.data; - let pData = &(buffer[0].pNext.data); + let pData = &(buffer[0].pNext->data); // operator -> is also allowed on pointer types. // CHECK: OpPtrAccessChain int* pData1 = pData + 1; *pData1 = 3; -- cgit v1.2.3