Class: RuboCop::Cop::VariableForce::Reference
- Inherits:
-
Object
- Object
- RuboCop::Cop::VariableForce::Reference
- Includes:
- Branchable
- Defined in:
- lib/rubocop/cop/variable_force/reference.rb
Overview
This class represents each reference of a variable.
Constant Summary collapse
- VARIABLE_REFERENCE_TYPES =
( [VARIABLE_REFERENCE_TYPE] + OPERATOR_ASSIGNMENT_TYPES + [ZERO_ARITY_SUPER_TYPE, SEND_TYPE] ).freeze
Instance Attribute Summary collapse
-
#node ⇒ Object
readonly
Returns the value of attribute node.
-
#scope ⇒ Object
readonly
Returns the value of attribute scope.
Instance Method Summary collapse
-
#explicit? ⇒ Boolean
There’s an implicit variable reference by the zero-arity ‘super`:.
-
#initialize(node, scope) ⇒ Reference
constructor
A new instance of Reference.
Methods included from Branchable
#branch, #run_exclusively_with?
Constructor Details
#initialize(node, scope) ⇒ Reference
Returns a new instance of Reference.
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/rubocop/cop/variable_force/reference.rb', line 18 def initialize(node, scope) unless VARIABLE_REFERENCE_TYPES.include?(node.type) raise ArgumentError, "Node type must be any of #{VARIABLE_REFERENCE_TYPES}, " \ "passed #{node.type}" end @node = node @scope = scope end |
Instance Attribute Details
#node ⇒ Object (readonly)
Returns the value of attribute node.
16 17 18 |
# File 'lib/rubocop/cop/variable_force/reference.rb', line 16 def node @node end |
#scope ⇒ Object (readonly)
Returns the value of attribute scope.
16 17 18 |
# File 'lib/rubocop/cop/variable_force/reference.rb', line 16 def scope @scope end |
Instance Method Details
#explicit? ⇒ Boolean
There’s an implicit variable reference by the zero-arity ‘super`:
def some_method(foo)
super
end
Another case is ‘binding`:
def some_method(foo)
do_something(binding)
end
In these cases, the variable ‘foo` is not explicitly referenced, but it can be considered used implicitly by the `super` or `binding`.
43 44 45 |
# File 'lib/rubocop/cop/variable_force/reference.rb', line 43 def explicit? ![ZERO_ARITY_SUPER_TYPE, SEND_TYPE].include?(@node.type) end |