[wgsl-in] Rework Load Rule handling and indirection.
Make the parser code more closely follow the spec's grammar around `unary_expression`, `postfix_expression`, and `singular_expression`. Change the handling of postfix expressions (indexing, member/component access, and swizzling) to apply the indirection at the appropriate time, resulting in code improvements on all output formats. For example, where we used to generate the following MSL: metal::float4 _e13 = bar.matrix[3]; float b = _e13.x; we now generate, simply: float b = bar.matrix[3].x; Propagate WGSL reference types correctly, so that parenthesizing expressions no longer causes the Load Rule to be applied. Together with #1332 (already landed), this is a replacement for #1312, and unblocks #1352. Fixes #1351.
parent
db80ed4f
Please register or sign in to comment