Skip to content
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e8159ae
Allow parsing `generate_strict` and `b_generate_strict`
paulo-ferraz-oliveira Jun 10, 2025
c52dca2
Update CI to test newer elements
paulo-ferraz-oliveira Jun 10, 2025
7943be7
Allow parsing m_generate_strict
paulo-ferraz-oliveira Jun 10, 2025
146a194
Parse zip generators
paulo-ferraz-oliveira Jun 10, 2025
d7193e6
Remove unnecessary directives, since we're targeting OTP 25+ already
paulo-ferraz-oliveira Jun 10, 2025
48fdf42
Add OTP 28 -specific test
paulo-ferraz-oliveira Jun 10, 2025
7319b51
Bump our support range's min.
paulo-ferraz-oliveira Jun 11, 2025
1567b52
ktn_dodger: pass 1
paulo-ferraz-oliveira Jun 11, 2025
ffe1990
ktn_dodger: pass 2
paulo-ferraz-oliveira Jun 11, 2025
54ed51c
ktn_dodger: pass 3
paulo-ferraz-oliveira Jun 11, 2025
78211d2
ktn_dodger: pass 4 (compiles)
paulo-ferraz-oliveira Jun 11, 2025
1573784
ktn_dodger: pass 5 (rebar3_ex_doc works on OTP 28)
paulo-ferraz-oliveira Jun 11, 2025
72a6a85
ktn_dodger: pass 6 (erlfmt + rebar3_lint)
paulo-ferraz-oliveira Jun 11, 2025
0443cc4
Prepare for erlfmt
paulo-ferraz-oliveira Jun 11, 2025
d0d06d0
ktn_dodger: pass 7 (ct passes)
paulo-ferraz-oliveira Jun 11, 2025
6249666
rebar3 test (includes fmt)
paulo-ferraz-oliveira Jun 11, 2025
c6fc3aa
Act on actionlint's results
paulo-ferraz-oliveira Jun 11, 2025
1eadcff
Don't format locally, but check in CI
paulo-ferraz-oliveira Jun 11, 2025
5b1d083
Tweak tests for known syntax changes
paulo-ferraz-oliveira Jun 11, 2025
0f09c04
Don't try to check it in CI yet
paulo-ferraz-oliveira Jun 11, 2025
c937dd4
Add some other stuff we can try to parse
paulo-ferraz-oliveira Jun 11, 2025
45abce3
Handle error, warning and eof, as per Erlang's absforms.md
paulo-ferraz-oliveira Jun 12, 2025
9ecffc6
Add another minor test element
paulo-ferraz-oliveira Jun 12, 2025
2e52e3f
Implement strangely-missing-from-otp element
paulo-ferraz-oliveira Jun 12, 2025
d7ba85b
Comment out what erlfmt doesn't like (in the tests)
paulo-ferraz-oliveira Jun 12, 2025
8bae5c4
Simplify it for what it's worth
paulo-ferraz-oliveira Jun 12, 2025
f76324a
Act on review comment: move it around
paulo-ferraz-oliveira Jun 12, 2025
ab3d8be
Prepare to not format it
paulo-ferraz-oliveira Jun 12, 2025
18d80c7
Uglify it
paulo-ferraz-oliveira Jun 12, 2025
44f7a51
Obey erlfmt
paulo-ferraz-oliveira Jun 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,31 @@ jobs:

strategy:
matrix:
otp: ['25', '26', '27']
rebar: ['3.24']
otp: ['26', '27', '28']
rebar: ['3.25']

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
id: setup-beam
with:
otp-version: ${{matrix.otp}}
rebar3-version: ${{matrix.rebar}}
- name: Restore _build
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: _build
key: _build-cache-for-os-${{runner.os}}-otp-${{steps.setup-beam.outputs.otp-version}}-rebar3-${{steps.setup-beam.outputs.rebar3-version}}-hash-${{hashFiles('rebar.lock')}}
- name: Restore rebar3's cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.cache/rebar3
key: rebar3-cache-for-os-${{runner.os}}-otp-${{steps.setup-beam.outputs.otp-version}}-rebar3-${{steps.setup-beam.outputs.rebar3-version}}-hash-${{hashFiles('rebar.lock')}}
- name: Compile
run: ERL_FLAGS="-enable-feature all" rebar3 compile
#- name: Format check
# run: ERL_FLAGS="-enable-feature all" rebar3 format --verify
# if: matrix.otp == '28'
# run: rebar3 fmt --check
- name: Run tests and verifications (features not enabled)
run: rebar3 test
- name: Run tests and verifications (features enabled)
Expand Down
30 changes: 20 additions & 10 deletions elvis.config
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
[{elvis,
[{config,
[#{dirs => ["src"],
filter => "*.erl",
ruleset => erl_files,
rules => [{elvis_style, atom_naming_convention, #{regex => "^([a-z][A-Za-z0-9]*_?)*$"}}]},
#{dirs => ["test"],
filter => "*.erl",
ruleset => erl_files,
rules => [{elvis_style, no_debug_call, disable}]}]}]}].
[
{elvis, [
{config, [
#{
dirs => ["src"],
filter => "*.erl",
ruleset => erl_files,
rules => [
{elvis_style, atom_naming_convention, #{regex => "^([a-z][A-Za-z0-9]*_?)*$"}}
]
},
#{
dirs => ["test"],
filter => "*.erl",
ruleset => erl_files,
rules => [{elvis_style, no_debug_call, disable}]
}
]}
]}
].
47 changes: 25 additions & 22 deletions rebar.config
Original file line number Diff line number Diff line change
@@ -1,45 +1,48 @@
%% == Compiler and Profiles ==

{erl_opts,
[warn_unused_import, warn_export_vars, warnings_as_errors, verbose, report, debug_info]}.
{erl_opts, [warn_unused_import, warn_export_vars, warnings_as_errors, verbose, report, debug_info]}.

{minimum_otp_vsn, "25"}.
{minimum_otp_vsn, "26"}.

{profiles,
[{test, [{cover_enabled, true}, {cover_opts, [verbose]}, {ct_opts, [{verbose, true}]}]}]}.
{profiles, [{test, [{cover_enabled, true}, {cover_opts, [verbose]}, {ct_opts, [{verbose, true}]}]}]}.

{alias, [{test, [compile, lint, xref, dialyzer, ct, cover]}]}.

%% == Dependencies and plugins ==

{project_plugins,
[{rebar3_hank, "~> 1.4.0"},
{rebar3_hex, "~> 7.0.7"},
{rebar3_format, "~> 1.3.0"},
{rebar3_lint, "~> 3.1.0"},
{rebar3_ex_doc, "~> 0.2.20"}]}.
{project_plugins, [
{rebar3_hank, "~> 1.4.0"},
{rebar3_hex, "~> 7.0.7"},
{erlfmt, "~> 1.6.2"},
{rebar3_lint, "~> 3.1.0"},
{rebar3_ex_doc, "~> 0.2.20"}
]}.

%% == Documentation ==

{ex_doc,
[{source_url, <<"https://github.com/inaka/katana-code">>},
{extras, [<<"README.md">>, <<"LICENSE">>]},
{main, <<"README.md">>},
{prefix_ref_vsn_with_v, false}]}.
{ex_doc, [
{source_url, <<"https://github.com/inaka/katana-code">>},
{extras, [<<"README.md">>, <<"LICENSE">>]},
{main, <<"README.md">>},
{prefix_ref_vsn_with_v, false}
]}.

{hex, [{doc, #{provider => ex_doc}}]}.

%% == Format ==

{format, [{options, #{unquote_atoms => false}}]}.
{erlfmt, [
write,
{files, ["src/**/*.app.src", "src/**/*.erl", "test/**/*.erl", "*.config"]}
]}.

%% == Dialyzer + XRef ==

{dialyzer,
[{warnings, [no_return, unmatched_returns, error_handling, underspecs, unknown]},
{plt_extra_apps, [syntax_tools, common_test]}]}.
{dialyzer, [
{warnings, [no_return, unmatched_returns, error_handling, underspecs, unknown]},
{plt_extra_apps, [syntax_tools, common_test]}
]}.

{xref_checks,
[undefined_function_calls, deprecated_function_calls, deprecated_functions]}.
{xref_checks, [undefined_function_calls, deprecated_function_calls, deprecated_functions]}.

{xref_extra_paths, ["test/**"]}.
20 changes: 10 additions & 10 deletions src/katana_code.app.src
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{application,
katana_code,
[{description, "Functions useful for processing Erlang code."},
{vsn, git},
{applications, [kernel, stdlib]},
{modules, []},
{registered, []},
{licenses, ["Apache 2.0"]},
{links, [{"GitHub", "https://github.com/inaka/katana-code"}]},
{build_tools, ["rebar3"]}]}.
{application, katana_code, [
{description, "Functions useful for processing Erlang code."},
{vsn, git},
{applications, [kernel, stdlib]},
{modules, []},
{registered, []},
{licenses, ["Apache 2.0"]},
{links, [{"GitHub", "https://github.com/inaka/katana-code"}]},
{build_tools, ["rebar3"]}
]}.
Loading