Skip to content

Commit

Permalink
Change default behavior for zero arity parens
Browse files Browse the repository at this point in the history
  • Loading branch information
emkguts committed Feb 5, 2025
1 parent 74c75ae commit 016dd8c
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 8 deletions.
4 changes: 2 additions & 2 deletions lib/quokka/config.ex
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ defmodule Quokka.Config do
rewrite_multi_alias: credo_opts[:rewrite_multi_alias] || false,
single_pipe_flag: credo_opts[:single_pipe_flag] || false,
sort_order: credo_opts[:sort_order] || :alpha,
zero_arity_parens: credo_opts[:zero_arity_parens] || true
zero_arity_parens: credo_opts[:zero_arity_parens]
})
end

Expand Down Expand Up @@ -198,7 +198,7 @@ defmodule Quokka.Config do
Map.put(acc, :rewrite_multi_alias, true)

{ParenthesesOnZeroArityDefs, opts}, acc when is_list(opts) ->
Map.put(acc, :zero_arity_parens, opts[:parens])
Map.put(acc, :zero_arity_parens, opts[:parens] || false)

{PipeChainStart, opts}, acc when is_list(opts) ->
acc
Expand Down
8 changes: 4 additions & 4 deletions lib/style/single_node.ex
Original file line number Diff line number Diff line change
Expand Up @@ -172,14 +172,14 @@ defmodule Quokka.Style.SingleNode do

# Remove parens from 0 arity funs (Credo.Check.Readability.ParenthesesOnZeroArityDefs)
defp style({def, dm, [{fun, funm, []} | rest]} = node) when def in ~w(def defp)a and is_atom(fun) do
if Quokka.Config.zero_arity_parens?(),
do: node,
else: style({def, dm, [{fun, Keyword.delete(funm, :closing), nil} | rest]})
if Quokka.Config.zero_arity_parens?() == false,
do: style({def, dm, [{fun, Keyword.delete(funm, :closing), nil} | rest]}),
else: node
end

# Add parens to 0 arity funs (Credo.Check.Readability.ParenthesesOnZeroArityDefs)
defp style({def, dm, [{fun, funm, nil} | rest]} = node) when def in ~w(def defp)a and is_atom(fun) do
if Quokka.Config.zero_arity_parens?(),
if Quokka.Config.zero_arity_parens?() == true,
do: {def, dm, [{fun, Keyword.put(funm, :closing, line: funm[:line]), []} | rest]},
else: node
end
Expand Down
4 changes: 4 additions & 0 deletions test/style/blocks_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@
defmodule Quokka.Style.BlocksTest do
use Quokka.StyleCase, async: true

setup do
Quokka.Config.set_for_test!(:zero_arity_parens, true)
end

describe "with statements" do
test "replacement due to no (or all removed) arrows" do
assert_style(
Expand Down
4 changes: 4 additions & 0 deletions test/style/defs_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@
defmodule Quokka.Style.DefsTest do
use Quokka.StyleCase, async: true

setup do
Quokka.Config.set_for_test!(:zero_arity_parens, true)
end

describe "run" do
test "comments stay put when we can't shrink the head, even with blocks" do
assert_style("""
Expand Down
1 change: 1 addition & 0 deletions test/style/module_directives/alias_lifting_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do
Quokka.Config.set_for_test!(:lift_alias, true)
Quokka.Config.set_for_test!(:lift_alias_depth, 2)
Quokka.Config.set_for_test!(:lift_alias_frequency, 1)
Quokka.Config.set_for_test!(:zero_arity_parens, true)

on_exit(fn ->
Quokka.Config.set!([])
Expand Down
1 change: 1 addition & 0 deletions test/style/module_directives_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ defmodule Quokka.Style.ModuleDirectivesTest do

setup_all do
Quokka.Config.set_for_test!(:rewrite_multi_alias, true)
Quokka.Config.set_for_test!(:zero_arity_parens, true)
on_exit(fn ->
Quokka.Config.set_for_test!(:rewrite_multi_alias, false)
end)
Expand Down
6 changes: 4 additions & 2 deletions test/style/single_node_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@
defmodule Quokka.Style.SingleNodeTest do
use Quokka.StyleCase, async: true

setup do
Quokka.Config.set_for_test!(:zero_arity_parens, true)
end

test "string sigil rewrites" do
assert_style ~s|""|
assert_style ~s|"\\""|
Expand Down Expand Up @@ -174,8 +178,6 @@ defmodule Quokka.Style.SingleNodeTest do

# Regression: be wary of invocations with extra parens from metaprogramming
assert_style("def metaprogramming(foo)(), do: bar")

Quokka.Config.set_for_test!(:zero_arity_parens, true)
end

test "prefers implicit try" do
Expand Down
3 changes: 3 additions & 0 deletions test/style/styles_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ defmodule Quokka.Style.StylesTest do
A place for tests that make sure our styles play nicely with each other
"""
use Quokka.StyleCase, async: true
setup do
Quokka.Config.set_for_test!(:zero_arity_parens, true)
end

describe "pipes + defs" do
test "pipes doesnt abuse meta and break defs" do
Expand Down

0 comments on commit 016dd8c

Please sign in to comment.