diff --git a/lib/elixir/lib/inspect.ex b/lib/elixir/lib/inspect.ex index 7b30699f8d..99e8a29118 100644 --- a/lib/elixir/lib/inspect.ex +++ b/lib/elixir/lib/inspect.ex @@ -541,8 +541,7 @@ defimpl Inspect, for: Any do _ -> Inspect.Map.inspect(map, opts) else dunder -> - is_struct = :maps.keys(dunder) == :maps.keys(map) - if is_struct do + if :maps.keys(dunder) == :maps.keys(map) do pruned = :maps.remove(:__exception__, :maps.remove(:__struct__, map)) colorless_opts = %{opts | syntax_colors: []} Inspect.Map.inspect(pruned, Inspect.Atom.inspect(struct, colorless_opts), opts) diff --git a/lib/elixir/lib/inspect/algebra.ex b/lib/elixir/lib/inspect/algebra.ex index facf0df2a7..0646774a7f 100644 --- a/lib/elixir/lib/inspect/algebra.ex +++ b/lib/elixir/lib/inspect/algebra.ex @@ -61,6 +61,8 @@ defmodule Inspect.Opts do safe: true, syntax_colors: [] + @type color_key :: atom + # TODO: Deprecate char_lists key and :as_char_lists value by v1.5 @type t :: %__MODULE__{ structs: boolean, @@ -72,8 +74,8 @@ defmodule Inspect.Opts do base: :decimal | :binary | :hex | :octal, pretty: boolean, safe: boolean, - syntax_colors: [{atom, IO.ANSI.ansidata}] - } + syntax_colors: [{color_key, IO.ANSI.ansidata}] + } end defmodule Inspect.Error do @@ -163,8 +165,6 @@ defmodule Inspect.Algebra do @type t :: :doc_nil | :doc_line | doc_cons | doc_nest | doc_break | doc_group | doc_color | binary - @type color_identifier :: atom - @typep doc_cons :: {:doc_cons, t, t} defmacrop doc_cons(left, right) do quote do: {:doc_cons, unquote(left), unquote(right)} @@ -308,22 +308,18 @@ defmodule Inspect.Algebra do end @doc """ - Colors a document if a the identifier has a color in the options. + Colors a document if the `color_key` has a color in the options. """ - @spec color(t, color_identifier, Inspect.Opts.t) :: doc_color - def color(doc, identifier, %Inspect.Opts{syntax_colors: syntax_colors}) when is_doc(doc) do - precolor = Keyword.get(syntax_colors, identifier) - if precolor do + @spec color(t, Inspect.Opts.color_key, Inspect.Opts.t) :: doc_color + def color(doc, color_key, %Inspect.Opts{syntax_colors: syntax_colors}) when is_doc(doc) do + if precolor = Keyword.get(syntax_colors, color_key) do postcolor = Keyword.get(syntax_colors, :reset, :reset) - concat( - doc_color(doc, List.wrap(precolor)), - doc_color(empty(), List.wrap(postcolor))) + concat(doc_color(doc, precolor), doc_color(empty(), postcolor)) else doc end end - @doc ~S""" Nests the given document at the given `level`. diff --git a/lib/elixir/test/elixir/inspect/algebra_test.exs b/lib/elixir/test/elixir/inspect/algebra_test.exs index b477ed3e1d..e5ca781785 100644 --- a/lib/elixir/test/elixir/inspect/algebra_test.exs +++ b/lib/elixir/test/elixir/inspect/algebra_test.exs @@ -29,7 +29,7 @@ defmodule Inspect.AlgebraTest do # Consistent with definitions assert empty() == :doc_nil - # Consistent of corresponding sdoc + # Consistent with corresponding sdoc assert sdoc(empty()) == [] # Consistent formatting @@ -102,19 +102,17 @@ defmodule Inspect.AlgebraTest do assert color(empty(), :atom, opts) == empty() opts = %Inspect.Opts{syntax_colors: [atom: :red]} - assert color("Hi", :atom, opts) == concat( - {:doc_color, "Hi", [:red]}, - {:doc_color, empty(), [:reset]} - ) + doc1 = {:doc_color, "Hi", :red} + doc2 = {:doc_color, empty(), :reset} + assert color("Hi", :atom, opts) == concat(doc1, doc2) opts = %Inspect.Opts{syntax_colors: [reset: :red]} assert color(empty(), :atom, opts) == empty() opts = %Inspect.Opts{syntax_colors: [number: :cyan, reset: :red]} - assert color("123", :number, opts) == concat( - {:doc_color, "123", [:cyan]}, - {:doc_color, empty(), [:red]} - ) + doc1 = {:doc_color, "123", :cyan} + doc2 = {:doc_color, empty(), :red} + assert color("123", :number, opts) == concat(doc1, doc2) # Consistent formatting opts = %Inspect.Opts{syntax_colors: [atom: :cyan]} diff --git a/lib/elixir/test/elixir/inspect_test.exs b/lib/elixir/test/elixir/inspect_test.exs index fbd53cd56a..c4b4c05859 100644 --- a/lib/elixir/test/elixir/inspect_test.exs +++ b/lib/elixir/test/elixir/inspect_test.exs @@ -203,21 +203,21 @@ defmodule Inspect.TupleTest do opts = [syntax_colors: [reset: :cyan]] assert inspect({}, opts) == "{}" - assert inspect({:X, :Y}, opts) == "{:X, :Y}" + assert inspect({:x, :y}, opts) == "{:x, :y}" opts = [syntax_colors: [reset: :cyan, atom: :red]] assert inspect({}, opts) == "{}" - assert inspect({:X, :Y}, opts) == - "{\e[31m:X\e[36m, \e[31m:Y\e[36m}" + assert inspect({:x, :y}, opts) == + "{\e[31m:x\e[36m, \e[31m:y\e[36m}" opts = [syntax_colors: [tuple: :green, reset: :cyan, atom: :red]] assert inspect({}, opts) == "\e[32m{\e[36m\e[32m}\e[36m" - assert inspect({:X, :Y}, opts) == - "\e[32m{\e[36m" <> - "\e[31m:X\e[36m" <> - "\e[32m,\e[36m " <> - "\e[31m:Y\e[36m" <> - "\e[32m}\e[36m" + assert inspect({:x, :y}, opts) == + "\e[32m{\e[36m" <> + "\e[31m:x\e[36m" <> + "\e[32m,\e[36m " <> + "\e[31m:y\e[36m" <> + "\e[32m}\e[36m" end end @@ -296,51 +296,51 @@ defmodule Inspect.ListTest do opts = [syntax_colors: [reset: :cyan]] assert inspect([], opts) == "[]" - assert inspect([:X, :Y], opts) == - "[:X, :Y]" + assert inspect([:x, :y], opts) == + "[:x, :y]" opts = [syntax_colors: [reset: :cyan, atom: :red]] assert inspect([], opts) == "[]" - assert inspect([:X, :Y], opts) == - "[\e[31m:X\e[36m, \e[31m:Y\e[36m]" + assert inspect([:x, :y], opts) == + "[\e[31m:x\e[36m, \e[31m:y\e[36m]" opts = [syntax_colors: [reset: :cyan, atom: :red, list: :green]] assert inspect([], opts) == "\e[32m[]\e[36m" - assert inspect([:X, :Y], opts) == - "\e[32m[\e[36m" <> - "\e[31m:X\e[36m" <> - "\e[32m,\e[36m " <> - "\e[31m:Y\e[36m" <> - "\e[32m]\e[36m" + assert inspect([:x, :y], opts) == + "\e[32m[\e[36m" <> + "\e[31m:x\e[36m" <> + "\e[32m,\e[36m " <> + "\e[31m:y\e[36m" <> + "\e[32m]\e[36m" end test "keyword with colors" do opts = [syntax_colors: [reset: :cyan, list: :green, number: :blue]] assert inspect([], opts) == "\e[32m[]\e[36m" assert inspect([a: 9999], opts) == - "\e[32m[\e[36m" <> - "a: " <> - "\e[34m9999\e[36m" <> - "\e[32m]\e[36m" + "\e[32m[\e[36m" <> + "a: " <> + "\e[34m9999\e[36m" <> + "\e[32m]\e[36m" opts = [syntax_colors: [reset: :cyan, atom: :red, list: :green, number: :blue]] assert inspect([], opts) == "\e[32m[]\e[36m" assert inspect([a: 9999], opts) == - "\e[32m[\e[36m" <> - "\e[31ma: \e[36m" <> - "\e[34m9999\e[36m" <> - "\e[32m]\e[36m" + "\e[32m[\e[36m" <> + "\e[31ma: \e[36m" <> + "\e[34m9999\e[36m" <> + "\e[32m]\e[36m" end test "limit with colors" do opts = [limit: 1, syntax_colors: [reset: :cyan, list: :green, atom: :red]] assert inspect([], opts) == "\e[32m[]\e[36m" - assert inspect([:X, :Y], opts) == - "\e[32m[\e[36m" <> - "\e[31m:X\e[36m" <> - "\e[32m,\e[36m " <> - "..." <> - "\e[32m]\e[36m" + assert inspect([:x, :y], opts) == + "\e[32m[\e[36m" <> + "\e[31m:x\e[36m" <> + "\e[32m,\e[36m " <> + "..." <> + "\e[32m]\e[36m" end end @@ -422,20 +422,20 @@ defmodule Inspect.MapTest do test "colors" do opts = [syntax_colors: [reset: :cyan, atom: :red, number: :magenta]] assert inspect(%{1 => 2}, opts) == - "%{\e[35m1\e[36m => \e[35m2\e[36m}" + "%{\e[35m1\e[36m => \e[35m2\e[36m}" assert inspect(%{a: 1}, opts) == - "%{\e[31ma: \e[36m\e[35m1\e[36m}" + "%{\e[31ma: \e[36m\e[35m1\e[36m}" assert inspect(%Public{key: 1}, opts) == - "%Inspect.MapTest.Public{\e[31mkey: \e[36m\e[35m1\e[36m}" + "%Inspect.MapTest.Public{\e[31mkey: \e[36m\e[35m1\e[36m}" opts = [syntax_colors: [reset: :cyan, atom: :red, map: :green, number: :blue]] assert inspect(%{a: 9999}, opts) == - "\e[32m%{\e[36m" <> - "\e[31ma: \e[36m" <> - "\e[34m9999\e[36m" <> - "\e[32m}\e[36m" + "\e[32m%{\e[36m" <> + "\e[31ma: \e[36m" <> + "\e[34m9999\e[36m" <> + "\e[32m}\e[36m" end end @@ -485,8 +485,8 @@ defmodule Inspect.OthersTest do opts = [syntax_colors: []] assert "#Function<" <> _ = inspect(fun(), opts) opts = [syntax_colors: [reset: :red]] - assert "#Function<" <> _ = inspect(fun(), opts) - assert String.ends_with?(inspect(fun(), opts), ">") + assert "#Function<" <> rest = inspect(fun(), opts) + assert String.ends_with?(rest, ">") end test "map set" do @@ -498,8 +498,8 @@ defmodule Inspect.OthersTest do opts = [syntax_colors: []] assert "#PID<" <> _ = inspect(self(), opts) opts = [syntax_colors: [reset: :cyan]] - assert "#PID" <> _ = inspect(self(), opts) - assert String.ends_with?(inspect(self(), opts), ">") + assert "#PID<" <> rest = inspect(self(), opts) + assert String.ends_with?(rest, ">") end test "references" do @@ -509,11 +509,11 @@ defmodule Inspect.OthersTest do test "regex" do assert inspect(~r(foo)m) == "~r/foo/m" assert inspect(Regex.compile!("\a\b\d\e\f\n\r\s\t\v/")) == - "~r/\\a\\x08\\x7F\\x1B\\f\\n\\r \\t\\v\\//" + "~r/\\a\\x08\\x7F\\x1B\\f\\n\\r \\t\\v\\//" assert inspect(~r<\a\b\d\e\f\n\r\s\t\v/>) == - "~r/\\a\\b\\d\\e\\f\\n\\r\\s\\t\\v\\//" + "~r/\\a\\b\\d\\e\\f\\n\\r\\s\\t\\v\\//" opts = [syntax_colors: [regex: :red]] assert inspect(~r/hi/, opts) == - "\e[31m~r/hi/\e[0m" + "\e[31m~r/hi/\e[0m" end end diff --git a/lib/iex/lib/iex/config.ex b/lib/iex/lib/iex/config.ex index fe5a494759..19214e2a5f 100644 --- a/lib/iex/lib/iex/config.ex +++ b/lib/iex/lib/iex/config.ex @@ -175,7 +175,7 @@ defmodule IEx.Config do defp merge_option(:default_prompt, _old, new) when is_binary(new), do: new defp merge_option(:alive_prompt, _old, new) when is_binary(new), do: new defp merge_option(:width, _old, new) when is_integer(new), do: new - defp merge_option(k, _old, new) do - raise ArgumentError, "invalid configuration or value for pair #{inspect k} - #{inspect new}" + defp merge_option(key, _old, new) do + raise ArgumentError, "invalid configuration or value for pair #{inspect key} - #{inspect new}" end end