| ... | @@ -1902,36 +1902,25 @@ fn addSemicolonIfNeeded(c: *Context, node: Node) !void { | ... | @@ -1902,36 +1902,25 @@ fn addSemicolonIfNeeded(c: *Context, node: Node) !void { |
| 1902 | .var_decl, .var_simple, .arg_redecl, .alias, .enum_redecl, .block, .empty_block, .block_single, .@"switch" => {}, | 1902 | .var_decl, .var_simple, .arg_redecl, .alias, .enum_redecl, .block, .empty_block, .block_single, .@"switch" => {}, |
| 1903 | .while_true => { | 1903 | .while_true => { |
| 1904 | const payload = node.castTag(.while_true).?.data; | 1904 | const payload = node.castTag(.while_true).?.data; |
| 1905 | return addSemicolonIfNotBlock(c, payload, .yes_if); | 1905 | return addSemicolonIfNotBlock(c, payload); |
| 1906 | }, | 1906 | }, |
| 1907 | .@"while" => { | 1907 | .@"while" => { |
| 1908 | const payload = node.castTag(.@"while").?.data; | 1908 | const payload = node.castTag(.@"while").?.data; |
| 1909 | return addSemicolonIfNotBlock(c, payload.body, .yes_if); | 1909 | return addSemicolonIfNotBlock(c, payload.body); |
| 1910 | }, | 1910 | }, |
| 1911 | .@"if" => { | 1911 | .@"if" => { |
| 1912 | const payload = node.castTag(.@"if").?.data; | 1912 | const payload = node.castTag(.@"if").?.data; |
| 1913 | if (payload.@"else") |some| | 1913 | if (payload.@"else") |some| |
| 1914 | return addSemicolonIfNotBlock(c, some, .no_if); | 1914 | return addSemicolonIfNeeded(c, some); |
| 1915 | return addSemicolonIfNotBlock(c, payload.then, .no_if); | 1915 | return addSemicolonIfNotBlock(c, payload.then); |
| 1916 | }, | 1916 | }, |
| 1917 | else => _ = try c.addToken(.semicolon, ";"), | 1917 | else => _ = try c.addToken(.semicolon, ";"), |
| 1918 | } | 1918 | } |
| 1919 | } | 1919 | } |
| 1920 | | 1920 | |
| 1921 | fn addSemicolonIfNotBlock(c: *Context, node: Node, if_needs_semicolon: enum{ yes_if, no_if}) !void { | 1921 | fn addSemicolonIfNotBlock(c: *Context, node: Node) !void { |
| 1922 | switch (node.tag()) { | 1922 | switch (node.tag()) { |
| 1923 | .block, .empty_block, .block_single => {}, | 1923 | .block, .empty_block, .block_single => {}, |
| 1924 | .@"if" => { | | |
| 1925 | if (if_needs_semicolon == .yes_if) { | | |
| 1926 | _ = try c.addToken(.semicolon, ";"); | | |
| 1927 | return; | | |
| 1928 | } | | |
| 1929 | | | |
| 1930 | const payload = node.castTag(.@"if").?.data; | | |
| 1931 | if (payload.@"else") |some| | | |
| 1932 | return addSemicolonIfNotBlock(c, some, .no_if); | | |
| 1933 | return addSemicolonIfNotBlock(c, payload.then, .no_if); | | |
| 1934 | }, | | |
| 1935 | else => _ = try c.addToken(.semicolon, ";"), | 1924 | else => _ = try c.addToken(.semicolon, ";"), |
| 1936 | } | 1925 | } |
| 1937 | } | 1926 | } |