From 7fbe2ae120283e5d7ef2890f2cfd366e3ccd4282 Mon Sep 17 00:00:00 2001 From: Dorgan Date: Fri, 11 Jun 2021 16:36:15 -0300 Subject: [PATCH] Preserve user choice on parenthesis before do block (#11061) --- lib/elixir/lib/code/normalizer.ex | 2 +- .../code_normalizer/formatted_ast_test.exs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/elixir/lib/code/normalizer.ex b/lib/elixir/lib/code/normalizer.ex index 27ed95fbc3..851e7f1e35 100644 --- a/lib/elixir/lib/code/normalizer.ex +++ b/lib/elixir/lib/code/normalizer.ex @@ -284,7 +284,7 @@ defmodule Code.Normalizer do end meta = - if is_nil(meta[:no_parens]) and is_nil(meta[:closing]) and + if is_nil(meta[:no_parens]) and is_nil(meta[:closing]) and is_nil(meta[:do]) and not Code.Formatter.local_without_parens?(form, arity, state.locals_without_parens) do [closing: [line: meta[:line]]] ++ meta else diff --git a/lib/elixir/test/elixir/code_normalizer/formatted_ast_test.exs b/lib/elixir/test/elixir/code_normalizer/formatted_ast_test.exs index 178165daf1..434ac7dd90 100644 --- a/lib/elixir/test/elixir/code_normalizer/formatted_ast_test.exs +++ b/lib/elixir/test/elixir/code_normalizer/formatted_ast_test.exs @@ -344,6 +344,22 @@ defmodule Code.Normalizer.FormatterASTTest do end end + describe "preserves user choice on parenthesis" do + test "in functions with do blocks" do + assert_same(~S""" + foo Bar do + :ok + end + """) + + assert_same(~S""" + foo(Bar) do + :ok + end + """) + end + end + describe "preserves formatting for sigils" do test "without interpolation" do assert_same ~S[~s(foo)]