rubocop 1.12.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -2
  3. data/config/default.yml +77 -8
  4. data/exe/rubocop +1 -3
  5. data/lib/rubocop.rb +10 -1
  6. data/lib/rubocop/cached_data.rb +1 -3
  7. data/lib/rubocop/cli.rb +4 -6
  8. data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
  9. data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
  10. data/lib/rubocop/cli/command/show_cops.rb +1 -4
  11. data/lib/rubocop/comment_config.rb +2 -7
  12. data/lib/rubocop/config.rb +11 -26
  13. data/lib/rubocop/config_loader.rb +5 -11
  14. data/lib/rubocop/config_loader_resolver.rb +22 -14
  15. data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
  16. data/lib/rubocop/config_store.rb +1 -2
  17. data/lib/rubocop/config_validator.rb +5 -10
  18. data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
  19. data/lib/rubocop/cop/badge.rb +1 -2
  20. data/lib/rubocop/cop/base.rb +8 -6
  21. data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -2
  22. data/lib/rubocop/cop/bundler/gem_comment.rb +43 -11
  23. data/lib/rubocop/cop/bundler/gem_version.rb +99 -0
  24. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -4
  25. data/lib/rubocop/cop/commissioner.rb +2 -8
  26. data/lib/rubocop/cop/cop.rb +4 -18
  27. data/lib/rubocop/cop/corrector.rb +1 -4
  28. data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -6
  29. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
  30. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
  31. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
  32. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
  33. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
  34. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
  35. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -2
  36. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -4
  37. data/lib/rubocop/cop/generator.rb +1 -4
  38. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
  39. data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
  40. data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -5
  41. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +2 -5
  42. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -3
  43. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -3
  44. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -2
  45. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +1 -2
  46. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -3
  47. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -2
  48. data/lib/rubocop/cop/layout/argument_alignment.rb +30 -14
  49. data/lib/rubocop/cop/layout/assignment_indentation.rb +2 -4
  50. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
  51. data/lib/rubocop/cop/layout/block_alignment.rb +7 -19
  52. data/lib/rubocop/cop/layout/case_indentation.rb +57 -11
  53. data/lib/rubocop/cop/layout/class_structure.rb +4 -10
  54. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -15
  55. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -5
  56. data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
  57. data/lib/rubocop/cop/layout/dot_position.rb +1 -3
  58. data/lib/rubocop/cop/layout/else_alignment.rb +1 -3
  59. data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
  60. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
  61. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
  62. data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
  63. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
  64. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
  65. data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
  66. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  67. data/lib/rubocop/cop/layout/extra_spacing.rb +3 -7
  68. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -2
  69. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
  70. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +14 -5
  71. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
  72. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
  73. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
  74. data/lib/rubocop/cop/layout/hash_alignment.rb +35 -15
  75. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
  76. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
  77. data/lib/rubocop/cop/layout/indentation_style.rb +1 -3
  78. data/lib/rubocop/cop/layout/indentation_width.rb +6 -4
  79. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
  80. data/lib/rubocop/cop/layout/line_length.rb +4 -15
  81. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
  82. data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
  83. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
  84. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
  85. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +16 -10
  86. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +4 -0
  87. data/lib/rubocop/cop/layout/redundant_line_break.rb +137 -0
  88. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  89. data/lib/rubocop/cop/layout/single_line_block_chain.rb +53 -0
  90. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
  91. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
  92. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
  93. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
  94. data/lib/rubocop/cop/layout/space_around_keyword.rb +19 -6
  95. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
  96. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -2
  97. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
  98. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  99. data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
  100. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
  101. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
  102. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
  103. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -10
  104. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
  105. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  106. data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
  107. data/lib/rubocop/cop/legacy/corrector.rb +1 -3
  108. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
  109. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
  110. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -2
  111. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -2
  112. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +83 -41
  113. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  114. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -5
  115. data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -2
  116. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
  117. data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -7
  118. data/lib/rubocop/cop/lint/else_layout.rb +1 -3
  119. data/lib/rubocop/cop/lint/empty_block.rb +18 -2
  120. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
  121. data/lib/rubocop/cop/lint/empty_file.rb +1 -3
  122. data/lib/rubocop/cop/lint/empty_in_pattern.rb +62 -0
  123. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
  124. data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
  125. data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
  126. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
  127. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -6
  128. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
  129. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
  130. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -7
  131. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -2
  132. data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
  133. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
  134. data/lib/rubocop/cop/lint/loop.rb +1 -2
  135. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
  136. data/lib/rubocop/cop/lint/missing_super.rb +1 -2
  137. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
  138. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -2
  139. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
  140. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -3
  141. data/lib/rubocop/cop/lint/number_conversion.rb +4 -5
  142. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
  143. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
  144. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
  145. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
  146. data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
  147. data/lib/rubocop/cop/lint/rand_one.rb +1 -2
  148. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +18 -27
  149. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
  150. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
  151. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
  152. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
  153. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
  154. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
  155. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
  156. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
  157. data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
  158. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
  159. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
  160. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
  161. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
  162. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
  163. data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
  164. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
  165. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
  166. data/lib/rubocop/cop/lint/symbol_conversion.rb +4 -16
  167. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  168. data/lib/rubocop/cop/lint/to_json.rb +1 -2
  169. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
  170. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
  171. data/lib/rubocop/cop/lint/unreachable_code.rb +2 -5
  172. data/lib/rubocop/cop/lint/unreachable_loop.rb +14 -7
  173. data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
  174. data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -2
  175. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -4
  176. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  177. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -3
  178. data/lib/rubocop/cop/lint/void.rb +5 -12
  179. data/lib/rubocop/cop/message_annotator.rb +1 -3
  180. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
  181. data/lib/rubocop/cop/metrics/class_length.rb +1 -3
  182. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
  183. data/lib/rubocop/cop/metrics/module_length.rb +2 -6
  184. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -5
  185. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
  186. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
  187. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -7
  188. data/lib/rubocop/cop/migration/department_name.rb +3 -7
  189. data/lib/rubocop/cop/mixin/alignment.rb +2 -4
  190. data/lib/rubocop/cop/mixin/check_line_breakable.rb +20 -4
  191. data/lib/rubocop/cop/mixin/code_length.rb +1 -3
  192. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
  193. data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
  194. data/lib/rubocop/cop/mixin/def_node.rb +2 -5
  195. data/lib/rubocop/cop/mixin/documentation_comment.rb +2 -5
  196. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
  197. data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
  198. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
  199. data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
  200. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
  201. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +7 -7
  202. data/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
  203. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +17 -9
  204. data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
  205. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  206. data/lib/rubocop/cop/mixin/line_length_help.rb +2 -4
  207. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  208. data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
  209. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  210. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -2
  211. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  212. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -37
  213. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  214. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
  215. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  216. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  217. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  218. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  219. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +3 -6
  220. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  221. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  222. data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
  223. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  224. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  225. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  226. data/lib/rubocop/cop/mixin/string_literals_help.rb +3 -5
  227. data/lib/rubocop/cop/mixin/symbol_help.rb +13 -0
  228. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  229. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  230. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +3 -7
  231. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  232. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  233. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
  234. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  235. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -3
  236. data/lib/rubocop/cop/naming/method_name.rb +1 -2
  237. data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
  238. data/lib/rubocop/cop/offense.rb +3 -8
  239. data/lib/rubocop/cop/registry.rb +3 -11
  240. data/lib/rubocop/cop/style/access_modifier_declarations.rb +2 -4
  241. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  242. data/lib/rubocop/cop/style/alias.rb +5 -12
  243. data/lib/rubocop/cop/style/and_or.rb +3 -1
  244. data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
  245. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  246. data/lib/rubocop/cop/style/attr.rb +1 -3
  247. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  248. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -3
  249. data/lib/rubocop/cop/style/case_like_if.rb +1 -2
  250. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  251. data/lib/rubocop/cop/style/class_and_module_children.rb +19 -10
  252. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  253. data/lib/rubocop/cop/style/collection_compact.rb +1 -3
  254. data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
  255. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  256. data/lib/rubocop/cop/style/command_literal.rb +3 -8
  257. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  258. data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
  259. data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
  260. data/lib/rubocop/cop/style/copyright.rb +3 -6
  261. data/lib/rubocop/cop/style/date_time.rb +2 -5
  262. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  263. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
  264. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  265. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  266. data/lib/rubocop/cop/style/empty_literal.rb +12 -9
  267. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  268. data/lib/rubocop/cop/style/end_block.rb +1 -2
  269. data/lib/rubocop/cop/style/endless_method.rb +1 -3
  270. data/lib/rubocop/cop/style/eval_with_location.rb +2 -4
  271. data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
  272. data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
  273. data/lib/rubocop/cop/style/format_string_token.rb +1 -4
  274. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
  275. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  276. data/lib/rubocop/cop/style/hash_conversion.rb +31 -3
  277. data/lib/rubocop/cop/style/hash_each_methods.rb +19 -3
  278. data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
  279. data/lib/rubocop/cop/style/hash_syntax.rb +4 -9
  280. data/lib/rubocop/cop/style/identical_conditional_branches.rb +27 -8
  281. data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
  282. data/lib/rubocop/cop/style/in_pattern_then.rb +56 -0
  283. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  284. data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
  285. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  286. data/lib/rubocop/cop/style/lambda.rb +2 -4
  287. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  288. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  289. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -3
  290. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +10 -18
  291. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  292. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  293. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  294. data/lib/rubocop/cop/style/min_max.rb +1 -2
  295. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  296. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  297. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  298. data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
  299. data/lib/rubocop/cop/style/module_function.rb +3 -6
  300. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  301. data/lib/rubocop/cop/style/multiline_in_pattern_then.rb +62 -0
  302. data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
  303. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  304. data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
  305. data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
  306. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  307. data/lib/rubocop/cop/style/negated_if_else_condition.rb +17 -9
  308. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  309. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  310. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  311. data/lib/rubocop/cop/style/next.rb +4 -9
  312. data/lib/rubocop/cop/style/nil_lambda.rb +29 -12
  313. data/lib/rubocop/cop/style/non_nil_check.rb +2 -5
  314. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  315. data/lib/rubocop/cop/style/numeric_predicate.rb +2 -7
  316. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  317. data/lib/rubocop/cop/style/option_hash.rb +1 -3
  318. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  319. data/lib/rubocop/cop/style/or_assignment.rb +2 -6
  320. data/lib/rubocop/cop/style/parallel_assignment.rb +6 -9
  321. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  322. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  323. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  324. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  325. data/lib/rubocop/cop/style/proc.rb +1 -2
  326. data/lib/rubocop/cop/style/quoted_symbols.rb +105 -0
  327. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  328. data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
  329. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  330. data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
  331. data/lib/rubocop/cop/style/redundant_begin.rb +15 -4
  332. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  333. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  334. data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
  335. data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
  336. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  337. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
  338. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  339. data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
  340. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  341. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  342. data/lib/rubocop/cop/style/redundant_return.rb +3 -5
  343. data/lib/rubocop/cop/style/redundant_self.rb +2 -6
  344. data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
  345. data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
  346. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  347. data/lib/rubocop/cop/style/rescue_modifier.rb +4 -0
  348. data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
  349. data/lib/rubocop/cop/style/return_nil.rb +1 -2
  350. data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
  351. data/lib/rubocop/cop/style/send.rb +1 -2
  352. data/lib/rubocop/cop/style/signal_exception.rb +3 -7
  353. data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
  354. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  355. data/lib/rubocop/cop/style/single_line_methods.rb +21 -4
  356. data/lib/rubocop/cop/style/sole_nested_conditional.rb +15 -7
  357. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  358. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  359. data/lib/rubocop/cop/style/stderr_puts.rb +2 -6
  360. data/lib/rubocop/cop/style/string_chars.rb +2 -1
  361. data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
  362. data/lib/rubocop/cop/style/string_literals.rb +3 -5
  363. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +1 -0
  364. data/lib/rubocop/cop/style/struct_inheritance.rb +9 -1
  365. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  366. data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
  367. data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
  368. data/lib/rubocop/cop/style/top_level_method_definition.rb +83 -0
  369. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -2
  370. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  371. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
  372. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  373. data/lib/rubocop/cop/style/trivial_accessors.rb +67 -4
  374. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  375. data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -2
  376. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  377. data/lib/rubocop/cop/style/when_then.rb +4 -2
  378. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  379. data/lib/rubocop/cop/style/word_array.rb +1 -2
  380. data/lib/rubocop/cop/style/yoda_condition.rb +3 -11
  381. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -2
  382. data/lib/rubocop/cop/team.rb +2 -5
  383. data/lib/rubocop/cop/util.rb +8 -11
  384. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  385. data/lib/rubocop/cop/variable_force.rb +6 -15
  386. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  387. data/lib/rubocop/cop/variable_force/branch.rb +16 -2
  388. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  389. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  390. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  391. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  392. data/lib/rubocop/directive_comment.rb +10 -1
  393. data/lib/rubocop/file_finder.rb +1 -3
  394. data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
  395. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  396. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  397. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  398. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  399. data/lib/rubocop/formatter/junit_formatter.rb +23 -14
  400. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  401. data/lib/rubocop/formatter/tap_formatter.rb +4 -2
  402. data/lib/rubocop/options.rb +30 -50
  403. data/lib/rubocop/path_util.rb +1 -3
  404. data/lib/rubocop/rake_task.rb +3 -0
  405. data/lib/rubocop/remote_config.rb +4 -7
  406. data/lib/rubocop/result_cache.rb +5 -12
  407. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  408. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  409. data/lib/rubocop/rspec/shared_contexts.rb +8 -15
  410. data/lib/rubocop/runner.rb +7 -14
  411. data/lib/rubocop/target_finder.rb +18 -16
  412. data/lib/rubocop/target_ruby.rb +4 -8
  413. data/lib/rubocop/version.rb +1 -1
  414. metadata +16 -7
  415. data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -16,8 +16,7 @@ module RuboCop
16
16
  include RangeHelp
17
17
  extend AutoCorrector
18
18
 
19
- MSG = 'Use `method?(%<method_name>s)` instead of ' \
20
- '`method_name == %<method_name>s`.'
19
+ MSG = 'Use `method?(%<method_name>s)` instead of `method_name == %<method_name>s`.'
21
20
  RESTRICT_ON_SEND = %i[==].freeze
22
21
 
23
22
  # @!method method_name?(node)
@@ -43,9 +42,7 @@ module RuboCop
43
42
  private
44
43
 
45
44
  def range(method_name_node, node)
46
- range_between(
47
- method_name_node.loc.selector.begin_pos, node.source_range.end_pos
48
- )
45
+ range_between(method_name_node.loc.selector.begin_pos, node.source_range.end_pos)
49
46
  end
50
47
  end
51
48
  end
@@ -30,9 +30,7 @@ module RuboCop
30
30
  PATTERN
31
31
 
32
32
  def on_masgn(node)
33
- node_destructuring?(node) do
34
- add_offense(node)
35
- end
33
+ node_destructuring?(node) { add_offense(node) }
36
34
  end
37
35
 
38
36
  private
@@ -30,9 +30,7 @@ module RuboCop
30
30
 
31
31
  message = format(MSG, type: node_type)
32
32
  add_offense(node, message: message) do |corrector|
33
- range = node.loc.expression.with(
34
- begin_pos: receiver.loc.expression.end_pos + 1
35
- )
33
+ range = node.loc.expression.with(begin_pos: receiver.loc.expression.end_pos + 1)
36
34
  corrector.replace(range, "#{node_type}_type?")
37
35
  end
38
36
  end
@@ -16,8 +16,7 @@ module RuboCop
16
16
  class OffenseLocationKeyword < Base
17
17
  extend AutoCorrector
18
18
 
19
- MSG = 'Use `:%<keyword>s` as the location argument to ' \
20
- '`#add_offense`.'
19
+ MSG = 'Use `:%<keyword>s` as the location argument to `#add_offense`.'
21
20
  RESTRICT_ON_SEND = %i[add_offense].freeze
22
21
 
23
22
  def on_send(node)
@@ -58,8 +58,7 @@ module RuboCop
58
58
  MSG_FOR_NEGATIVE_WITHOUT_POSITIVE =
59
59
  'negative `*_style_detected` methods called without ' \
60
60
  'calling `correct_style_detected` method.'
61
- MSG_FOR_CONDITIONAL_USE =
62
- '`*_style_detected` method called in conditional.'
61
+ MSG_FOR_CONDITIONAL_USE = '`*_style_detected` method called in conditional.'
63
62
  RESTRICT_ON_SEND = %i[
64
63
  correct_style_detected opposite_style_detected
65
64
  unexpected_style_detected ambiguous_style_detected
@@ -27,9 +27,7 @@ module RuboCop
27
27
  PATTERN
28
28
 
29
29
  def on_new_investigation
30
- assertions_using_described_class_msg.each do |node|
31
- add_offense(node)
32
- end
30
+ assertions_using_described_class_msg.each { |node| add_offense(node) }
33
31
  end
34
32
 
35
33
  private
@@ -56,8 +56,7 @@ module RuboCop
56
56
  end
57
57
 
58
58
  def check_body(body, node)
59
- modifiers = body.each_child_node(:send)
60
- .select(&:bare_access_modifier?)
59
+ modifiers = body.each_child_node(:send).select(&:bare_access_modifier?)
61
60
  end_range = node.loc.end
62
61
 
63
62
  modifiers.each { |modifier| check_modifier(modifier, end_range) }
@@ -10,53 +10,69 @@ module RuboCop
10
10
  # # good
11
11
  #
12
12
  # foo :bar,
13
- # :baz
13
+ # :baz,
14
+ # key: value
14
15
  #
15
16
  # foo(
16
17
  # :bar,
17
- # :baz
18
+ # :baz,
19
+ # key: value
18
20
  # )
19
21
  #
20
22
  # # bad
21
23
  #
22
24
  # foo :bar,
23
- # :baz
25
+ # :baz,
26
+ # key: value
24
27
  #
25
28
  # foo(
26
29
  # :bar,
27
- # :baz
30
+ # :baz,
31
+ # key: value
28
32
  # )
29
33
  #
30
34
  # @example EnforcedStyle: with_fixed_indentation
31
35
  # # good
32
36
  #
33
37
  # foo :bar,
34
- # :baz
38
+ # :baz,
39
+ # key: value
35
40
  #
36
41
  # # bad
37
42
  #
38
43
  # foo :bar,
39
- # :baz
44
+ # :baz,
45
+ # key: value
40
46
  class ArgumentAlignment < Base
41
47
  include Alignment
42
48
  extend AutoCorrector
43
49
 
44
- ALIGN_PARAMS_MSG = 'Align the arguments of a method call if ' \
45
- 'they span more than one line.'
50
+ ALIGN_PARAMS_MSG = 'Align the arguments of a method call if they span more than one line.'
46
51
 
47
52
  FIXED_INDENT_MSG = 'Use one level of indentation for arguments ' \
48
53
  'following the first line of a multi-line method call.'
49
54
 
50
55
  def on_send(node)
51
- return if node.arguments.size < 2 ||
52
- node.send_type? && node.method?(:[]=)
56
+ first_arg = node.first_argument
57
+ return if !multiple_arguments?(node, first_arg) || node.send_type? && node.method?(:[]=)
53
58
 
54
- check_alignment(node.arguments, base_column(node, node.arguments))
59
+ if first_arg.hash_type? && !first_arg.braces?
60
+ pairs = first_arg.pairs
61
+ check_alignment(pairs, base_column(node, pairs.first))
62
+ else
63
+ check_alignment(node.arguments, base_column(node, first_arg))
64
+ end
55
65
  end
56
66
  alias on_csend on_send
57
67
 
58
68
  private
59
69
 
70
+ def multiple_arguments?(node, first_argument)
71
+ return true if node.arguments.size >= 2
72
+
73
+ first_argument&.hash_type? && first_argument.pairs.count >= 2
74
+ end
75
+
60
76
  def autocorrect(corrector, node)
61
77
  AlignmentCorrector.correct(corrector, processed_source, node, column_delta)
62
78
  end
@@ -69,14 +85,14 @@ module RuboCop
69
85
  cop_config['EnforcedStyle'] == 'with_fixed_indentation'
70
86
  end
71
87
 
72
- def base_column(node, args)
73
- if fixed_indentation?
88
+ def base_column(node, first_argument)
89
+ if fixed_indentation? || first_argument.nil?
74
90
  lineno = target_method_lineno(node)
75
91
  line = node.source_range.source_buffer.source_line(lineno)
76
92
  indentation_of_line = /\S.*/.match(line).begin(0)
77
93
  indentation_of_line + configured_indentation_width
78
94
  else
79
- display_column(args.first.source_range)
95
+ display_column(first_argument.source_range)
80
96
  end
81
97
  end
82
98
 
@@ -26,8 +26,7 @@ module RuboCop
26
26
  include Alignment
27
27
  extend AutoCorrector
28
28
 
29
- MSG = 'Indent the first line of the right-hand-side of a ' \
30
- 'multi-line assignment.'
29
+ MSG = 'Indent the first line of the right-hand-side of a multi-line assignment.'
31
30
 
32
31
  private
33
32
 
@@ -45,8 +44,7 @@ module RuboCop
45
44
  end
46
45
 
47
46
  def leftmost_multiple_assignment(node)
48
- return node unless same_line?(node, node.parent) &&
49
- node.parent.assignment?
47
+ return node unless same_line?(node, node.parent) && node.parent.assignment?
50
48
 
51
49
  leftmost_multiple_assignment(node.parent)
52
50
 
@@ -52,10 +52,7 @@ module RuboCop
52
52
  private
53
53
 
54
54
  def check_begin_alignment(node)
55
- align_with = {
56
- begin: node.loc.begin,
57
- start_of_line: start_line_range(node)
58
- }
55
+ align_with = { begin: node.loc.begin, start_of_line: start_line_range(node) }
59
56
  check_end_kw_alignment(node, align_with)
60
57
  end
61
58
 
@@ -109,13 +109,11 @@ module RuboCop
109
109
  end
110
110
 
111
111
  def end_align_target?(node, parent)
112
- disqualified_parent?(parent, node) ||
113
- !block_end_align_target?(parent, node)
112
+ disqualified_parent?(parent, node) || !block_end_align_target?(parent, node)
114
113
  end
115
114
 
116
115
  def disqualified_parent?(parent, node)
117
- parent&.loc && parent.first_line != node.first_line &&
118
- !parent.masgn_type?
116
+ parent&.loc && parent.first_line != node.first_line && !parent.masgn_type?
119
117
  end
120
118
 
121
119
  def check_block_alignment(start_node, block_node)
@@ -123,19 +121,12 @@ module RuboCop
123
121
  return unless begins_its_line?(end_loc)
124
122
 
125
123
  start_loc = start_node.source_range
126
- return unless start_loc.column != end_loc.column ||
127
- style == :start_of_block
124
+ return unless start_loc.column != end_loc.column || style == :start_of_block
128
125
 
129
- do_source_line_column =
130
- compute_do_source_line_column(block_node, end_loc)
126
+ do_source_line_column = compute_do_source_line_column(block_node, end_loc)
131
127
  return unless do_source_line_column
132
128
 
133
- register_offense(
134
- block_node,
135
- start_loc,
136
- end_loc,
137
- do_source_line_column
138
- )
129
+ register_offense(block_node, start_loc, end_loc, do_source_line_column)
139
130
  end
140
131
 
141
132
  def register_offense(block_node,
@@ -174,9 +165,7 @@ module RuboCop
174
165
  error_source_line_column)
175
166
  format(
176
167
  MSG,
177
- current: format_source_line_column(
178
- loc_to_source_line_column(end_loc)
179
- ),
168
+ current: format_source_line_column(loc_to_source_line_column(end_loc)),
180
169
  prefer: format_source_line_column(error_source_line_column),
181
170
  alt_prefer: alt_start_msg(start_loc, do_source_line_column)
182
171
  )
@@ -192,8 +181,7 @@ module RuboCop
192
181
  # blocks.
193
182
  match = /\S.*/.match(do_loc.source_line)
194
183
  indentation_of_do_line = match.begin(0)
195
- return unless end_loc.column != indentation_of_do_line ||
196
- style == :start_of_line
184
+ return unless end_loc.column != indentation_of_do_line || style == :start_of_line
197
185
 
198
186
  {
199
187
  source: match[0],
@@ -3,10 +3,10 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Layout
6
- # This cop checks how the ``when``s of a `case` expression
6
+ # This cop checks how the `when` and `in`s of a `case` expression
7
7
  # are indented in relation to its `case` or `end` keyword.
8
8
  #
9
- # It will register a separate offense for each misaligned `when`.
9
+ # It will register a separate offense for each misaligned `when` and `in`.
10
10
  #
11
11
  # @example
12
12
  # # If Layout/EndAlignment is set to keyword style (default)
@@ -22,6 +22,13 @@ module RuboCop
22
22
  # y / 3
23
23
  # end
24
24
  #
25
+ # case n
26
+ # in pattern
27
+ # x * 2
28
+ # else
29
+ # y / 3
30
+ # end
31
+ #
25
32
  # # good for all styles
26
33
  # case n
27
34
  # when 0
@@ -30,6 +37,13 @@ module RuboCop
30
37
  # y / 3
31
38
  # end
32
39
  #
40
+ # case n
41
+ # in pattern
42
+ # x * 2
43
+ # else
44
+ # y / 3
45
+ # end
46
+ #
33
47
  # @example EnforcedStyle: case (default)
34
48
  # # if EndAlignment is set to other style such as
35
49
  # # start_of_line (as shown below), then *when* alignment
@@ -43,6 +57,13 @@ module RuboCop
43
57
  # y / 3
44
58
  # end
45
59
  #
60
+ # a = case n
61
+ # in pattern
62
+ # x * 2
63
+ # else
64
+ # y / 3
65
+ # end
66
+ #
46
67
  # # good
47
68
  # a = case n
48
69
  # when 0
@@ -51,6 +72,13 @@ module RuboCop
51
72
  # y / 3
52
73
  # end
53
74
  #
75
+ # a = case n
76
+ # in pattern
77
+ # x * 2
78
+ # else
79
+ # y / 3
80
+ # end
81
+ #
54
82
  # @example EnforcedStyle: end
55
83
  # # bad
56
84
  # a = case n
@@ -60,6 +88,13 @@ module RuboCop
60
88
  # y / 3
61
89
  # end
62
90
  #
91
+ # a = case n
92
+ # in pattern
93
+ # x * 2
94
+ # else
95
+ # y / 3
96
+ # end
97
+ #
63
98
  # # good
64
99
  # a = case n
65
100
  # when 0
@@ -67,32 +102,43 @@ module RuboCop
67
102
  # else
68
103
  # y / 3
69
104
  # end
105
+ #
106
+ # a = case n
107
+ # in pattern
108
+ # x * 2
109
+ # else
110
+ # y / 3
111
+ # end
70
112
  class CaseIndentation < Base
71
113
  include Alignment
72
114
  include ConfigurableEnforcedStyle
73
115
  include RangeHelp
74
116
  extend AutoCorrector
75
117
 
76
- MSG = 'Indent `when` %<depth>s `%<base>s`.'
118
+ MSG = 'Indent `%<branch_type>s` %<depth>s `%<base>s`.'
77
119
 
78
120
  def on_case(case_node)
79
121
  return if case_node.single_line?
80
122
 
81
- case_node.each_when do |when_node|
82
- check_when(when_node)
83
- end
123
+ case_node.each_when { |when_node| check_when(when_node, 'when') }
124
+ end
125
+
126
+ def on_case_match(case_match_node)
127
+ return if case_match_node.single_line?
128
+
129
+ case_match_node.each_in_pattern { |in_pattern_node| check_when(in_pattern_node, 'in') }
84
130
  end
85
131
 
86
132
  private
87
133
 
88
- def check_when(when_node)
134
+ def check_when(when_node, branch_type)
89
135
  when_column = when_node.loc.keyword.column
90
136
  base_column = base_column(when_node.parent, style)
91
137
 
92
138
  if when_column == base_column + indentation_width
93
139
  correct_style_detected
94
140
  else
95
- incorrect_style(when_node)
141
+ incorrect_style(when_node, branch_type)
96
142
  end
97
143
  end
98
144
 
@@ -104,9 +150,9 @@ module RuboCop
104
150
  indent_one_step? ? configured_indentation_width : 0
105
151
  end
106
152
 
107
- def incorrect_style(when_node)
153
+ def incorrect_style(when_node, branch_type)
108
154
  depth = indent_one_step? ? 'one step more than' : 'as deep as'
109
- message = format(MSG, depth: depth, base: style)
155
+ message = format(MSG, branch_type: branch_type, depth: depth, base: style)
110
156
 
111
157
  add_offense(when_node.loc.keyword, message: message) do |corrector|
112
158
  detect_incorrect_style(when_node)
@@ -143,7 +189,7 @@ module RuboCop
143
189
  end
144
190
 
145
191
  def replacement(node)
146
- case_node = node.each_ancestor(:case).first
192
+ case_node = node.each_ancestor(:case, :case_match).first
147
193
  base_type = cop_config[style_parameter_name] == 'end' ? :end : :case
148
194
 
149
195
  column = base_column(case_node, base_type)
@@ -144,8 +144,7 @@ module RuboCop
144
144
  sclass: :class_singleton
145
145
  }.freeze
146
146
 
147
- MSG = '`%<category>s` is supposed to appear before ' \
148
- '`%<previous>s`.'
147
+ MSG = '`%<category>s` is supposed to appear before `%<previous>s`.'
149
148
 
150
149
  # @!method dynamic_constant?(node)
151
150
  def_node_matcher :dynamic_constant?, <<~PATTERN
@@ -159,11 +158,8 @@ module RuboCop
159
158
  walk_over_nested_class_definition(class_node) do |node, category|
160
159
  index = expected_order.index(category)
161
160
  if index < previous
162
- message = format(MSG, category: category,
163
- previous: expected_order[previous])
164
- add_offense(node, message: message) do |corrector|
165
- autocorrect(corrector, node)
166
- end
161
+ message = format(MSG, category: category, previous: expected_order[previous])
162
+ add_offense(node, message: message) { |corrector| autocorrect(corrector, node) }
167
163
  end
168
164
  previous = index
169
165
  end
@@ -254,9 +250,7 @@ module RuboCop
254
250
  classification = classify(node)
255
251
  sibling_class = classify(sibling)
256
252
 
257
- ignore?(sibling_class) ||
258
- classification == sibling_class ||
259
- dynamic_constant?(node)
253
+ ignore?(sibling_class) || classification == sibling_class || dynamic_constant?(node)
260
254
  end
261
255
 
262
256
  def humanize_node(node)