From 2a508dac56fce3a6d4dead106bebeba5cd469b89 Mon Sep 17 00:00:00 2001 From: Frank Hunleth Date: Fri, 5 Jan 2018 12:14:29 -0500 Subject: [PATCH] Fix inspect for non-decimal negative integers Before: iex> inspect(-1, base: :hex) "0x-1" After: iex> inspect(-1, base: :hex) "-0x1" This change also applies to the octal and binary base options. --- lib/elixir/lib/inspect.ex | 4 ++++ lib/elixir/test/elixir/inspect_test.exs | 3 +++ 2 files changed, 7 insertions(+) diff --git a/lib/elixir/lib/inspect.ex b/lib/elixir/lib/inspect.ex index f88d82992cd..0841b38466d 100644 --- a/lib/elixir/lib/inspect.ex +++ b/lib/elixir/lib/inspect.ex @@ -262,6 +262,10 @@ defimpl Inspect, for: Integer do defp prepend_prefix(value, :decimal), do: value + defp prepend_prefix(<>, base) do + "-" <> prepend_prefix(value, base) + end + defp prepend_prefix(value, base) do prefix = case base do diff --git a/lib/elixir/test/elixir/inspect_test.exs b/lib/elixir/test/elixir/inspect_test.exs index 86e48c4484e..cb9d75644b6 100644 --- a/lib/elixir/test/elixir/inspect_test.exs +++ b/lib/elixir/test/elixir/inspect_test.exs @@ -194,14 +194,17 @@ defmodule Inspect.NumberTest do test "hex" do assert inspect(100, base: :hex) == "0x64" + assert inspect(-100, base: :hex) == "-0x64" end test "octal" do assert inspect(100, base: :octal) == "0o144" + assert inspect(-100, base: :octal) == "-0o144" end test "binary" do assert inspect(86, base: :binary) == "0b1010110" + assert inspect(-86, base: :binary) == "-0b1010110" end test "float" do