Skip to content

Commit

Permalink
Merge branch 'PragTob-explicit-steps'
Browse files Browse the repository at this point in the history
  • Loading branch information
rrrene committed Nov 13, 2023
2 parents 66602af + f5c7932 commit c5fbc8a
Show file tree
Hide file tree
Showing 9 changed files with 37 additions and 12 deletions.
2 changes: 1 addition & 1 deletion .tool-versions
@@ -1,2 +1,2 @@
erlang 26.0
elixir 1.15.6
elixir 1.16.0-rc.0
25 changes: 25 additions & 0 deletions lib/credo/backports.ex
@@ -0,0 +1,25 @@
defmodule Credo.Backports do
defmodule Enum do
if Version.match?(System.version(), ">= 1.12.0-rc") do
def slice(a, x..y) do
Elixir.Enum.slice(a, x..y//1)

Check warning on line 5 in lib/credo/backports.ex

View workflow job for this annotation

GitHub Actions / [24.2/1.11.4] CI Tests on Credo [OTP/Elixir]

There are spaces around operators most of the time, but not here.

Check warning on line 5 in lib/credo/backports.ex

View workflow job for this annotation

GitHub Actions / [23.3/1.11.4] CI Tests on Credo [OTP/Elixir]

There are spaces around operators most of the time, but not here.
end
end

def slice(a, b) do
Elixir.Enum.slice(a, b)
end
end

defmodule String do
if Version.match?(System.version(), ">= 1.12.0-rc") do
def slice(a, x..y) do
Elixir.String.slice(a, x..y//1)

Check warning on line 17 in lib/credo/backports.ex

View workflow job for this annotation

GitHub Actions / [24.2/1.11.4] CI Tests on Credo [OTP/Elixir]

There are spaces around operators most of the time, but not here.

Check warning on line 17 in lib/credo/backports.ex

View workflow job for this annotation

GitHub Actions / [23.3/1.11.4] CI Tests on Credo [OTP/Elixir]

There are spaces around operators most of the time, but not here.
end
end

def slice(a, b) do
Elixir.String.slice(a, b)
end
end
end
Expand Up @@ -24,7 +24,7 @@ defmodule Credo.Check.Consistency.MultiAliasImportRequireUse.Collector do
aliases =
case arguments do
[{:__aliases__, _, nested_modules}] when length(nested_modules) > 1 ->
base_name = Enum.slice(nested_modules, 0..-2)
base_name = Credo.Backports.Enum.slice(nested_modules, 0..-2)
{:single, base_name}

[{{:., _, [{:__aliases__, _, _namespaces}, :{}]}, _, _nested_aliases}] ->
Expand Down
6 changes: 3 additions & 3 deletions lib/credo/check/consistency/space_around_operators.ex
Expand Up @@ -144,7 +144,7 @@ defmodule Credo.Check.Consistency.SpaceAroundOperators do

defp number_in_range?(line, column) do
line
|> String.slice(column..-1)
|> Credo.Backports.String.slice(column..-1)
|> String.match?(~r/^\d+\.\./)
end

Expand All @@ -171,13 +171,13 @@ defmodule Credo.Check.Consistency.SpaceAroundOperators do
# -1 because we need to subtract the operator
binary_pattern_end_after? =
line
|> String.slice(column..-1)
|> Credo.Backports.String.slice(column..-1)
|> String.match?(~r/\>\>/)

# -1 because we need to subtract the operator
typed_after? =
line
|> String.slice(column..-1)
|> Credo.Backports.String.slice(column..-1)
|> String.match?(~r/^\s*(integer|native|signed|unsigned|binary|size|little|float)/)

# -2 because we need to subtract the operator
Expand Down
6 changes: 3 additions & 3 deletions lib/credo/check/readability/large_numbers.ex
Expand Up @@ -182,12 +182,12 @@ defmodule Credo.Check.Readability.LargeNumbers do
Enum.map(allowed_trailing_digits, fn trailing_digits ->
if String.length(string) > trailing_digits do
base =
String.slice(string, 0..(-1 * trailing_digits - 1))
Credo.Backports.String.slice(string, 0..(-1 * trailing_digits - 1))
|> String.reverse()
|> String.replace(~r/(\d{3})(?=\d)/, "\\1_")
|> String.reverse()

trailing = String.slice(string, (-1 * trailing_digits)..-1)
trailing = Credo.Backports.String.slice(string, (-1 * trailing_digits)..-1)

"#{base}_#{trailing}"
end
Expand Down Expand Up @@ -237,7 +237,7 @@ defmodule Credo.Check.Readability.LargeNumbers do

ending_of_number =
~r/^([0-9_\.]+)/
|> Regex.run(String.slice(line, (column1 + 1)..-1))
|> Regex.run(Credo.Backports.String.slice(line, (column1 + 1)..-1))
|> List.wrap()
|> List.last()
|> to_string()
Expand Down
Expand Up @@ -90,7 +90,7 @@ defmodule Credo.Check.Readability.ParenthesesOnZeroArityDefs do
name_size = text |> to_string |> String.length()
skip = (SourceFile.column(source_file, line_no, text) || -1) + name_size - 1

String.slice(line, skip..-1)
Credo.Backports.String.slice(line, skip..-1)
end

defp issue_for(issue_meta, line_no, kind) do
Expand Down
2 changes: 1 addition & 1 deletion lib/credo/check/warning/unused_function_return_helper.ex
Expand Up @@ -132,7 +132,7 @@ defmodule Credo.Check.Warning.UnusedFunctionReturnHelper do
when is_list(arguments) do
# IO.inspect(ast, label: "#{unquote(op)} (#{Macro.to_string(candidate)} #{acc})")

head_expression = Enum.slice(arguments, 0..-2)
head_expression = Credo.Backports.Enum.slice(arguments, 0..-2)

if Credo.Code.contains_child?(head_expression, candidate) do
{nil, :VERIFIED}
Expand Down
2 changes: 1 addition & 1 deletion lib/credo/cli/command/diff/task/get_git_diff.ex
Expand Up @@ -104,7 +104,7 @@ defmodule Credo.CLI.Command.Diff.Task.GetGitDiff do
defp run_credo_on_dir(exec, dirname, previous_git_ref, given_ref) do
{previous_argv, _last_arg} =
exec.argv
|> Enum.slice(1..-1)
|> Credo.Backports.Enum.slice(1..-1)
|> Enum.reduce({[], nil}, fn
_, {argv, "--working-dir"} -> {Enum.slice(argv, 1..-2), nil}
_, {argv, "--from-git-merge-base"} -> {Enum.slice(argv, 1..-2), nil}
Expand Down
2 changes: 1 addition & 1 deletion lib/credo/code/interpolation_helper.ex
Expand Up @@ -58,7 +58,7 @@ defmodule Credo.Code.InterpolationHelper do
line = String.to_charlist(line)
part1 = Enum.slice(line, 0, col_start - 1)
part2 = String.to_charlist(String.duplicate(char, length))
part3 = Enum.slice(line, (col_end - 1)..-1)
part3 = Credo.Backports.Enum.slice(line, (col_end - 1)..-1)
List.to_string(part1 ++ part2 ++ part3)
end

Expand Down

0 comments on commit c5fbc8a

Please sign in to comment.