Sha256: 6b1d663cb9a3fe2cf6d67a0af0ff395cb4a8442f9390db855e575467e34c05e5
Contents?: true
Size: 1.52 KB
Versions: 19
Compression:
Stored size: 1.52 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Style # This cop checks uses of the `then` keyword in multi-line `in` statement. # # @example # # bad # case expression # in pattern then # end # # # good # case expression # in pattern # end # # # good # case expression # in pattern then do_something # end # # # good # case expression # in pattern then do_something(arg1, # arg2) # end # class MultilineInPatternThen < Base include RangeHelp extend AutoCorrector extend TargetRubyVersion minimum_target_ruby_version 2.7 MSG = 'Do not use `then` for multiline `in` statement.' def on_in_pattern(node) return if !node.then? || require_then?(node) range = node.loc.begin add_offense(range) do |corrector| corrector.remove( range_with_surrounding_space(range: range, side: :left, newlines: false) ) end end private # Requires `then` for write `in` and its body on the same line. def require_then?(in_pattern_node) return true if in_pattern_node.pattern.first_line != in_pattern_node.pattern.last_line return false unless in_pattern_node.body same_line?(in_pattern_node, in_pattern_node.body) end end end end end
Version data entries
19 entries across 19 versions & 4 rubygems