Class: Rubocop::Cop::Lint::ParenthesesAsGroupedExpression
- Defined in:
- lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb
Overview
Checks for space between a the name of a called method and a left parenthesis.
puts (x + y)
Constant Summary collapse
- MSG =
'(...) interpreted as grouped expression.'
Constants inherited from Cop
Instance Attribute Summary
Attributes inherited from Cop
#config, #corrections, #offences, #processed_source
Instance Method Summary collapse
Methods inherited from Cop
#add_offence, all, #autocorrect?, #autocorrect_action, #convention, #cop_config, #cop_name, cop_name, cop_type, #debug?, #ignore_node, inherited, #initialize, lint?, #message, rails?, style?, #warning
Constructor Details
This class inherits a constructor from Rubocop::Cop::Cop
Instance Method Details
#on_send(node) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb', line 15 def on_send(node) receiver, method_name, args = *node if OPERATOR_METHODS.include?(method_name) || method_name.to_s.end_with?('=') return end if args && args.loc.expression.source.start_with?('(') receiver_length = if receiver receiver.loc.expression.source.length else 0 end without_receiver = node.loc.expression.source[receiver_length..-1] # Escape question mark if any. method_regexp = Regexp.escape(method_name) if (match = without_receiver.match(/^\s*\.?\s*#{method_regexp}(\s+)\(/)) expr = args.loc.expression space_length = match.captures[0].length space_range = Parser::Source::Range.new(expr.source_buffer, expr.begin_pos - space_length, expr.begin_pos) warning(nil, space_range) end end end |