Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

It appears Layout/HashAlignment don't like anonymous arguments #11730

Closed
stoivo opened this issue Mar 23, 2023 · 1 comment · Fixed by rubocop/rubocop-ast#259 or #11731
Closed

It appears Layout/HashAlignment don't like anonymous arguments #11730

stoivo opened this issue Mar 23, 2023 · 1 comment · Fixed by rubocop/rubocop-ast#259 or #11731
Labels

Comments

@stoivo
Copy link
Contributor

stoivo commented Mar 23, 2023

Anonymous arguments:
https://rubyreferences.github.io/rubychanges/3.2.html#anonymous-arguments-passing-improvements


Expected behavior

My code which looks like below caused a crash. And I didn't expect that. This is valid ruby so I rubocop should accept it too.

  def insert_invoice(*, **)
    FactoryBot.create(
      :invoice, *,
      supplier_bban: supplier1_bank_account1.bban,
      supplier_swift: "SHENOP94",
      supplier_unit: supplier_unit1,
      supplier_country_code: "NO",
      customer_unit: unit,
      payable_amount_currency: nok,
      **
    )
  end

Actual behavior

$ be rubocop --debug spec/views/payments/new_spec.rb --only Layout/HashAlignment                                                                               17:46:23
For /Users/simon/dev/work/dodo/fakturabank/repo: configuration from /Users/simon/dev/work/dodo/fakturabank/repo/.rubocop.yml
configuration from /Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-capybara-2.17.1/config/default.yml
Default configuration from /Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/config/default.yml
configuration from /Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-capybara-2.17.1/lib/../config/default.yml
configuration from /Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-rspec-2.19.0/config/default.yml
configuration from /Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-rspec-2.19.0/config/default.yml
configuration from /Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-performance-1.16.0/config/default.yml
configuration from /Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-performance-1.16.0/config/default.yml
configuration from /Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-rails-2.18.0/config/default.yml
configuration from /Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-rails-2.18.0/config/default.yml
Inheriting configuration from /Users/simon/dev/work/dodo/fakturabank/repo/.rubocop_dodo.yml
Inheriting configuration from /Users/simon/dev/work/dodo/fakturabank/repo/.rubocop_todo.yml
.rubocop.yml: Layout/LineLength:Max overrides the same parameter in .rubocop_dodo.yml
.rubocop.yml: Metrics/BlockLength:Exclude overrides the same parameter in .rubocop_dodo.yml
Use parallel by default.
Skipping parallel inspection: only a single file needs inspection
Inspecting 1 file
Scanning /Users/simon/dev/work/dodo/fakturabank/repo/spec/views/payments/new_spec.rb
An error occurred while Layout/HashAlignment cop was inspecting /Users/simon/dev/work/dodo/fakturabank/repo/spec/views/payments/new_spec.rb:74:6.
undefined method `hash_rocket?' for s(:forwarded_kwrestarg):RuboCop::AST::Node
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/layout/hash_alignment.rb:303:in `alignment_for'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/layout/hash_alignment.rb:256:in `block in check_pairs'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/layout/hash_alignment.rb:255:in `each'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/layout/hash_alignment.rb:255:in `check_pairs'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/layout/hash_alignment.rb:215:in `on_hash'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:107:in `public_send'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:107:in `block (2 levels) in trigger_responding_cops'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:171:in `with_cop_error_handling'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:106:in `block in trigger_responding_cops'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:105:in `each'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:105:in `trigger_responding_cops'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:69:in `on_hash'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:159:in `block in on_send'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:156:in `each'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:156:in `each_with_index'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:156:in `on_send'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:71:in `on_send'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:154:in `on_def'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:71:in `on_def'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:137:in `block in on_dstr'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:137:in `each'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:137:in `on_dstr'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:71:in `on_begin'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:158:in `on_block'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:71:in `on_block'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:137:in `block in on_dstr'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:137:in `each'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:137:in `on_dstr'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:71:in `on_begin'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-ast-1.27.0/lib/rubocop/ast/traversal.rb:20:in `walk'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/commissioner.rb:87:in `investigate'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/team.rb:156:in `investigate_partial'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cop/team.rb:98:in `investigate'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:345:in `block in inspect_file'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:344:in `each'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:344:in `flat_map'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:344:in `inspect_file'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:287:in `block in do_inspection_loop'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:321:in `block in iterate_until_no_changes'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:314:in `loop'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:314:in `iterate_until_no_changes'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:283:in `do_inspection_loop'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:164:in `block in file_offenses'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:189:in `file_offense_cache'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:163:in `file_offenses'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:154:in `process_file'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:135:in `block in each_inspected_file'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:134:in `each'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:134:in `reduce'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:134:in `each_inspected_file'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:120:in `inspect_files'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/runner.rb:73:in `run'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cli/command/execute_runner.rb:26:in `block in execute_runner'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cli/command/execute_runner.rb:52:in `with_redirect'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cli/command/execute_runner.rb:25:in `execute_runner'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cli/command/execute_runner.rb:17:in `run'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cli/command.rb:11:in `run'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cli/environment.rb:18:in `run'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cli.rb:118:in `run_command'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cli.rb:125:in `execute_runners'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cli.rb:51:in `block in run'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cli.rb:77:in `profile_if_needed'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/lib/rubocop/cli.rb:43:in `run'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/exe/rubocop:19:in `block in <top (required)>'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/benchmark.rb:311:in `realtime'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/rubocop-1.48.1/exe/rubocop:19:in `<top (required)>'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/bin/rubocop:25:in `load'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/bin/rubocop:25:in `<top (required)>'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/bundler/cli/exec.rb:58:in `load'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/bundler/cli/exec.rb:58:in `kernel_load'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/bundler/cli/exec.rb:23:in `run'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/bundler/cli.rb:491:in `exec'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/bundler/cli.rb:34:in `dispatch'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/bundler/cli.rb:28:in `start'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/bundler-2.4.6/libexec/bundle:45:in `block in <top (required)>'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/3.2.0/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/Users/simon/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/bundler-2.4.6/libexec/bundle:33:in `<top (required)>'
/Users/simon/.asdf/installs/ruby/3.2.1/bin/bundle:25:in `load'
/Users/simon/.asdf/installs/ruby/3.2.1/bin/bundle:25:in `<main>'
.

1 file inspected, no offenses detected

1 error occurred:
An error occurred while Layout/HashAlignment cop was inspecting /Users/simon/dev/work/dodo/fakturabank/repo/spec/views/payments/new_spec.rb:74:6.
Errors are usually caused by RuboCop bugs.
Please, report your problems to RuboCop's issue tracker.
https://github.com/rubocop/rubocop/issues

Mention the following information in the issue report:
1.48.1 (using Parser 3.2.1.1, rubocop-ast 1.27.0, running on ruby 3.2.1) [arm64-darwin22]
Finished in 0.3613330000080168 seconds

Steps to reproduce the problem

This is extremely important! Providing us with a reliable way to reproduce
a problem will expedite its solution.

RuboCop version

Include the output of rubocop -V or bundle exec rubocop -V if using Bundler.
If you see extension cop versions (e.g. rubocop-performance, rubocop-rspec, and others)
output by rubocop -V, include them as well. Here's an example:

$ be rubocop -V                                                                                                                                                                           
1.48.1 (using Parser 3.2.1.1, rubocop-ast 1.27.0, running on ruby 3.2.1) [arm64-darwin22]
  - rubocop-capybara 2.17.1
  - rubocop-performance 1.16.0
  - rubocop-rails 2.18.0
  - rubocop-rspec 2.19.0

I cloned the this project to write a test for you. but I'm not sure I have added it to the correct place. And my code works fine when I remove ** from the hash arg but my test still rails. I think this has to do ruby that this is a new ruby feature but I don't know.

diff --git a/spec/rubocop/cop/layout/hash_alignment_spec.rb b/spec/rubocop/cop/layout/hash_alignment_spec.rb
index c827b0319..54174853e 100644
--- a/spec/rubocop/cop/layout/hash_alignment_spec.rb
+++ b/spec/rubocop/cop/layout/hash_alignment_spec.rb
@@ -795,6 +795,19 @@ RSpec.describe RuboCop::Cop::Layout::HashAlignment, :config do
       RUBY
     end
 
+    it 'accepts anonymous keyword arguments as element in hash' do
+      expect_no_offenses(<<~RUBY)
+        def hey(...) = nil
+        def insert(*, **)
+          hey(
+            :invoice, *,
+            a: 1,
+            **
+          )
+        end
+      RUBY
+    end
+
     it 'accepts a symbol only hash followed by a keyword splat' do
       expect_no_offenses(<<~RUBY)
         hash = {

For next time: Is it good too include a failing spec like this in the issue?

@koic koic added the bug label Mar 23, 2023
koic added a commit to koic/rubocop-ast that referenced this issue Mar 24, 2023
This PR adds `forwarded_kwrestarg` node to `AST::Builder`.

This feature is required to resolve rubocop/rubocop#11730.

I thought about defining a class like `ForwardedKwrestargNode` for `forwarded_kwrestarg`,
but the node is actually an anonymous `KeywordSplatNode` so it's used.
koic added a commit to koic/rubocop-ast that referenced this issue Mar 24, 2023
This PR adds `forwarded_kwrestarg` node to `AST::Builder`.

This feature is required to resolve rubocop/rubocop#11730.

I thought about defining a class like `ForwardedKwrestargNode` for `forwarded_kwrestarg`,
but the node is actually an anonymous `KeywordSplatNode` so it's used.
@marcandre
Copy link
Contributor

marcandre commented Mar 24, 2023

<deleted, posted meant to post here>

koic added a commit to koic/rubocop-ast that referenced this issue Mar 24, 2023
This PR adds `forwarded_kwrestarg` node to `AST::Builder`.

This feature is required to resolve rubocop/rubocop#11730.

I thought about defining a class like `ForwardedKwrestargNode` for `forwarded_kwrestarg`,
but the node is actually an anonymous `KeywordSplatNode` so it's used.
koic added a commit to koic/rubocop-ast that referenced this issue Mar 24, 2023
This PR adds `forwarded_kwrestarg` node to `AST::Builder`.

This feature is required to resolve rubocop/rubocop#11730.

I thought about defining a class like `ForwardedKwrestargNode` for `forwarded_kwrestarg`,
but the node is actually an anonymous `KeywordSplatNode` so it's used.
koic added a commit to koic/rubocop-ast that referenced this issue Mar 24, 2023
This PR adds `forwarded_kwrestarg` node to `AST::Builder`.

This feature is required to resolve rubocop/rubocop#11730.

I thought about defining a class like `ForwardedKwrestargNode` for `forwarded_kwrestarg`,
but the node is actually an anonymous `KeywordSplatNode` so it's used.
marcandre pushed a commit to rubocop/rubocop-ast that referenced this issue Mar 24, 2023
This PR adds `forwarded_kwrestarg` node to `AST::Builder`.

This feature is required to resolve rubocop/rubocop#11730.

I thought about defining a class like `ForwardedKwrestargNode` for `forwarded_kwrestarg`,
but the node is actually an anonymous `KeywordSplatNode` so it's used.
koic added a commit to koic/rubocop that referenced this issue Mar 25, 2023
Fixes rubocop#11730.

This PR fixes an error for `Layout/HashAlignment`
when using anonymous keyword rest arguments.
koic added a commit that referenced this issue Mar 25, 2023
…nment

[Fix #11730] Fix an error for `Layout/HashAlignment`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
3 participants