-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Labels
Description
No later than June 8 rubocop Style/SafeNavigation began crashing on
@license_field = match ? match[1].downcase : nil
Fix for my application was to actually use safe navigation (which is fine, and might not even mind being told to do this, but don't expect a crash on the above in any case).
@license_field = match&.[](1)&.downcase
Expected behavior
Expect SafeNavigaiton to not do anything on this code, let alone crash.
Actual behavior
An error occurred while Style/SafeNavigation cop was inspecting /workspaces/licensee/lib/licensee/matchers/cran.rb:22:25.
/usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/corrector.rb:111:in 'RuboCop::Cop::Corrector#to_range': Expected a Parser::Source::Range, Comment or RuboCop::AST::Node, got NilClass (TypeError)
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/corrector.rb:120:in 'RuboCop::Cop::Corrector#check_range_validity'
from /usr/local/rvm/gems/ruby-3.4.1/gems/parser-3.3.9.0/lib/parser/source/tree_rewriter.rb:398:in 'Parser::Source::TreeRewriter#combine'
from /usr/local/rvm/gems/ruby-3.4.1/gems/parser-3.3.9.0/lib/parser/source/tree_rewriter.rb:207:in 'Parser::Source::TreeRewriter#wrap'
from /usr/local/rvm/gems/ruby-3.4.1/gems/parser-3.3.9.0/lib/parser/source/tree_rewriter.rb:231:in 'Parser::Source::TreeRewriter#insert_before'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/style/safe_navigation.rb:160:in 'block in RuboCop::Cop::Style::SafeNavigation#on_if'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/style/safe_navigation.rb:203:in 'block in RuboCop::Cop::Style::SafeNavigation#report_offense'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/base.rb:426:in 'RuboCop::Cop::Base#correct'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/base.rb:210:in 'RuboCop::Cop::Base#add_offense'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/style/safe_navigation.rb:195:in 'RuboCop::Cop::Style::SafeNavigation#report_offense'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/style/safe_navigation.rb:158:in 'RuboCop::Cop::Style::SafeNavigation#on_if'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:107:in 'Kernel#public_send'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:107:in 'block (2 levels) in RuboCop::Cop::Commissioner#trigger_responding_cops'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:171:in 'RuboCop::Cop::Commissioner#with_cop_error_handling'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:106:in 'block in RuboCop::Cop::Commissioner#trigger_responding_cops'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:105:in 'Array#each'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:105:in 'RuboCop::Cop::Commissioner#trigger_responding_cops'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:69:in 'RuboCop::Cop::Commissioner#on_if'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-ast-1.46.0/lib/rubocop/ast/traversal.rb:144:in 'RuboCop::AST::Traversal#on_lvasgn'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:71:in 'RuboCop::Cop::Commissioner#on_ivasgn'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-ast-1.46.0/lib/rubocop/ast/traversal.rb:146:in 'block in RuboCop::AST::Traversal#on_dstr'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-ast-1.46.0/lib/rubocop/ast/traversal.rb:146:in 'Array#each'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-ast-1.46.0/lib/rubocop/ast/traversal.rb:146:in 'RuboCop::AST::Traversal#on_dstr'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:71:in 'RuboCop::Cop::Commissioner#on_begin'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-ast-1.46.0/lib/rubocop/ast/traversal.rb:163:in 'RuboCop::AST::Traversal#on_def'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:71:in 'RuboCop::Cop::Commissioner#on_def'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-ast-1.46.0/lib/rubocop/ast/traversal.rb:146:in 'block in RuboCop::AST::Traversal#on_dstr'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-ast-1.46.0/lib/rubocop/ast/traversal.rb:146:in 'Array#each'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-ast-1.46.0/lib/rubocop/ast/traversal.rb:146:in 'RuboCop::AST::Traversal#on_dstr'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:71:in 'RuboCop::Cop::Commissioner#on_begin'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-ast-1.46.0/lib/rubocop/ast/traversal.rb:163:in 'RuboCop::AST::Traversal#on_class'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:71:in 'RuboCop::Cop::Commissioner#on_class'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-ast-1.46.0/lib/rubocop/ast/traversal.rb:147:in 'RuboCop::AST::Traversal#on_while'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:71:in 'RuboCop::Cop::Commissioner#on_module'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-ast-1.46.0/lib/rubocop/ast/traversal.rb:147:in 'RuboCop::AST::Traversal#on_while'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:71:in 'RuboCop::Cop::Commissioner#on_module'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-ast-1.46.0/lib/rubocop/ast/traversal.rb:20:in 'RuboCop::AST::Traversal#walk'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/commissioner.rb:87:in 'RuboCop::Cop::Commissioner#investigate'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/team.rb:174:in 'RuboCop::Cop::Team#investigate_partial'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cop/team.rb:108:in 'RuboCop::Cop::Team#investigate'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:348:in 'block in RuboCop::Runner#inspect_file'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:347:in 'Array#each'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:347:in 'Enumerable#flat_map'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:347:in 'RuboCop::Runner#inspect_file'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:290:in 'block in RuboCop::Runner#do_inspection_loop'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:324:in 'block in RuboCop::Runner#iterate_until_no_changes'
from <internal:kernel>:168:in 'Kernel#loop'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:317:in 'RuboCop::Runner#iterate_until_no_changes'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:286:in 'RuboCop::Runner#do_inspection_loop'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:167:in 'block in RuboCop::Runner#file_offenses'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:192:in 'RuboCop::Runner#file_offense_cache'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:166:in 'RuboCop::Runner#file_offenses'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:154:in 'RuboCop::Runner#process_file'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:135:in 'block in RuboCop::Runner#each_inspected_file'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:134:in 'Array#each'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:134:in 'Enumerable#reduce'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:134:in 'RuboCop::Runner#each_inspected_file'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:120:in 'RuboCop::Runner#inspect_files'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/runner.rb:73:in 'RuboCop::Runner#run'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cli/command/execute_runner.rb:26:in 'block in RuboCop::CLI::Command::ExecuteRunner#execute_runner'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cli/command/execute_runner.rb:52:in 'RuboCop::CLI::Command::ExecuteRunner#with_redirect'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cli/command/execute_runner.rb:25:in 'RuboCop::CLI::Command::ExecuteRunner#execute_runner'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cli/command/execute_runner.rb:17:in 'RuboCop::CLI::Command::ExecuteRunner#run'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cli/command.rb:11:in 'RuboCop::CLI::Command.run'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cli/environment.rb:18:in 'RuboCop::CLI::Environment#run'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cli.rb:128:in 'RuboCop::CLI#run_command'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cli.rb:135:in 'RuboCop::CLI#execute_runners'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cli.rb:54:in 'block in RuboCop::CLI#run'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cli.rb:87:in 'RuboCop::CLI#profile_if_needed'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/lib/rubocop/cli.rb:45:in 'RuboCop::CLI#run'
from /usr/local/rvm/gems/ruby-3.4.1/gems/rubocop-1.80.0/exe/rubocop:15:in '<top (required)>'
from /usr/local/rvm/gems/ruby-3.4.1/bin/rubocop:25:in 'Kernel#load'
from /usr/local/rvm/gems/ruby-3.4.1/bin/rubocop:25:in '<main>'
from /usr/local/rvm/gems/ruby-3.4.1/bin/ruby_executable_hooks:22:in 'Kernel#eval'
from /usr/local/rvm/gems/ruby-3.4.1/bin/ruby_executable_hooks:22:in '<main>'
Steps to reproduce the problem
See code example at top.
RuboCop version
Observed with these versions:
- 1.76.0 (using Parser 3.3.8.0, rubocop-ast 1.45.1, analyzing as Ruby 3.0, running on ruby 3.4.4) [x86_64-linux]
- 1.79.2 (using Parser 3.3.9.0, rubocop-ast 1.46.0, analyzing as Ruby 3.0, running on ruby 3.4.5) [x86_64-linux]
- 1.80.0 (using Parser 3.3.9.0, rubocop-ast 1.46.0, analyzing as Ruby 3.0, running on ruby 3.4.1) [x86_64-linux]