diff --git a/Source/WebGPU/WGSL/Metal/MetalFunctionWriter.cpp b/Source/WebGPU/WGSL/Metal/MetalFunctionWriter.cpp index 4482dbfa845c..2e4f2cb28abd 100644 --- a/Source/WebGPU/WGSL/Metal/MetalFunctionWriter.cpp +++ b/Source/WebGPU/WGSL/Metal/MetalFunctionWriter.cpp @@ -508,6 +508,7 @@ void FunctionDefinitionWriter::visit(AST::UnaryExpression& unary) void FunctionDefinitionWriter::visit(AST::BinaryExpression& binary) { + m_stringBuilder.append("("); visit(binary.leftExpression()); switch (binary.operation()) { case AST::BinaryOperation::Add: @@ -567,6 +568,7 @@ void FunctionDefinitionWriter::visit(AST::BinaryExpression& binary) break; } visit(binary.rightExpression()); + m_stringBuilder.append(")"); } void FunctionDefinitionWriter::visit(AST::PointerDereferenceExpression& pointerDereference) diff --git a/Tools/TestWebKitAPI/Tests/WGSL/MetalGenerationTests.cpp b/Tools/TestWebKitAPI/Tests/WGSL/MetalGenerationTests.cpp index 0e5cb6bd4c7a..f3c74b36e4a2 100644 --- a/Tools/TestWebKitAPI/Tests/WGSL/MetalGenerationTests.cpp +++ b/Tools/TestWebKitAPI/Tests/WGSL/MetalGenerationTests.cpp @@ -83,7 +83,7 @@ using namespace metal; [[fragment]] void function0(unsigned parameter0 [[sample_mask]], unsigned parameter1 [[sample_id]], vec parameter2 [[position]]) { vec local0 = parameter2; - unsigned local1 = parameter1 + parameter0; + unsigned local1 = (parameter1 + parameter0); } )"_s);