diff --git a/src/translate_c/ast.zig b/src/translate_c/ast.zig index 4be0fead973faed99b06dc794d44a9e17da079b8..dfc72b2a69ca499723d22c107c4ab950ed79dbf3 100644 --- a/src/translate_c/ast.zig +++ b/src/translate_c/ast.zig @@ -1665,7 +1665,7 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex { }, .array_access => { const payload = node.castTag(.array_access).?.data; - const lhs = try renderNode(c, payload.lhs); + const lhs = try renderNodeGrouped(c, payload.lhs); const l_bracket = try c.addToken(.l_bracket, "["); const index_expr = try renderNode(c, payload.rhs); _ = try c.addToken(.r_bracket, "]"); diff --git a/test/run_translated_c.zig b/test/run_translated_c.zig index 35686c11f9aff4c01df953e83adaf86c14bc88e2..314ef2889de25335c72e6dd917b4484aaf104231 100644 --- a/test/run_translated_c.zig +++ b/test/run_translated_c.zig @@ -1467,4 +1467,13 @@ pub fn addCases(cases: *tests.RunTranslatedCContext) void { \\ return 0; \\} , ""); + + cases.add("Render array LHS as grouped node if necessary", + \\#include + \\int main(void) { + \\ int arr[] = {40, 41, 42, 43}; + \\ if ((arr + 1)[1] != 42) abort(); + \\ return 0; + \\} + , ""); }