From 64ba8aee074ea415b1a02715af2ec7ae99f3f37d Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Fri, 14 Dec 2018 20:09:15 -0800 Subject: [PATCH] Parenthesizing inline method targets when needed. --- nomsu_decompiler.lua | 6 +++++- nomsu_decompiler.moon | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/nomsu_decompiler.lua b/nomsu_decompiler.lua index 0666e00..2fe484a 100644 --- a/nomsu_decompiler.lua +++ b/nomsu_decompiler.lua @@ -85,7 +85,11 @@ tree_to_inline_nomsu = function(tree) end return nomsu elseif "MethodCall" == _exp_0 then - local nomsu = NomsuCode:from(tree.source, tree_to_inline_nomsu(tree[1]), "|") + local target_nomsu = tree_to_inline_nomsu(tree[1]) + if tree[1].type == "Action" or tree[1].type == "MethodCall" or tree[1].type == "Block" then + target_nomsu:parenthesize() + end + local nomsu = NomsuCode:from(tree.source, target_nomsu, "|") for i = 2, #tree do if i > 2 then nomsu:add("; ") diff --git a/nomsu_decompiler.moon b/nomsu_decompiler.moon index f522832..8c559b1 100644 --- a/nomsu_decompiler.moon +++ b/nomsu_decompiler.moon @@ -57,7 +57,10 @@ tree_to_inline_nomsu = (tree)-> return nomsu when "MethodCall" - nomsu = NomsuCode\from(tree.source, tree_to_inline_nomsu(tree[1]), "|") + target_nomsu = tree_to_inline_nomsu(tree[1]) + if tree[1].type == "Action" or tree[1].type == "MethodCall" or tree[1].type == "Block" + target_nomsu\parenthesize! + nomsu = NomsuCode\from(tree.source, target_nomsu, "|") for i=2,#tree nomsu\add "; " if i > 2 nomsu\add tree_to_inline_nomsu(tree[i])