summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorSwoorup Joshi <swoorupj@gmail.com>2025-06-25 17:35:12 +1000
committerGitHub <noreply@github.com>2025-06-25 07:35:12 +0000
commit7e8c85e85440c1fea42236a8ef8286e1ce1638ce (patch)
tree17a6b34dacfa3412e6a234779ea44cf1a4b59c9f /source
parent47475114d036a391bacdb53a9a1c60e5d35b61bc (diff)
Fix generation of wgsl case arms (#7374)
* Fix generation of wgsl case arms * Added test case to test generation of switch case --------- Co-authored-by: Harsh Aggarwal (NVIDIA) <haaggarwal@nvidia.com>
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-emit-wgsl.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/source/slang/slang-emit-wgsl.cpp b/source/slang/slang-emit-wgsl.cpp
index d8a243b32..61f34d408 100644
--- a/source/slang/slang-emit-wgsl.cpp
+++ b/source/slang/slang-emit-wgsl.cpp
@@ -66,16 +66,24 @@ void WGSLSourceEmitter::emitSwitchCaseSelectorsImpl(
// "case 2, 3, 4: ...;" instead of the C-like syntax
// "case 2: case 3: case 4: ...;".
- m_writer->emit("case ");
- for (auto caseVal : currentCase->values)
+ if (!isDefault)
{
- emitOperand(caseVal, getInfo(EmitOp::General));
- m_writer->emit(", ");
+ m_writer->emit("case ");
+ auto& values = currentCase->values;
+ for (Index i = 0; i < values.getCount(); ++i)
+ {
+ emitOperand(values[i], getInfo(EmitOp::General));
+ if (i < values.getCount() - 1)
+ {
+ m_writer->emit(", ");
+ }
+ }
}
- if (isDefault)
+ else
{
- m_writer->emit("default, ");
+ m_writer->emit("default ");
}
+
m_writer->emit(":\n");
}