Class: RuboCop::AST::DefNode

Inherits:
Node
  • Object
show all
Includes:
MethodIdentifierPredicates, ParameterizedNode
Defined in:
lib/rubocop/ast/node/def_node.rb

Overview

A node extension for ‘def` nodes. This will be used in place of a plain node when the builder constructs the AST, making its methods available to all `def` nodes within RuboCop.

Instance Method Summary collapse

Instance Method Details

#argumentsArray<Node>

An array containing the arguments of the method definition.

Returns:

  • (Array<Node>)

    the arguments of the method definition



29
30
31
# File 'lib/rubocop/ast/node/def_node.rb', line 29

def arguments
  node_parts[1]
end

#bodyNode

Note:

this can be either a ‘begin` node, if the method body contains multiple expressions, or any other node, if it contains a single expression.

The body of the method definition.

Returns:

  • (Node)

    the body of the method definition



40
41
42
# File 'lib/rubocop/ast/node/def_node.rb', line 40

def body
  node_parts[0]
end

#method_nameSymbol

The name of the defined method as a symbol.

Returns:

  • (Symbol)

    the name of the defined method



22
23
24
# File 'lib/rubocop/ast/node/def_node.rb', line 22

def method_name
  node_parts[2]
end

#node_partsArray

Custom destructuring method. This can be used to normalize destructuring for different variations of the node.

In this case, the ‘def` node destructures into:

`method_name, arguments, body`

while the ‘defs` node destructures into:

`receiver, method_name, arguments, body`

so we reverse the destructured array to get the optional receiver at the end, where it can be discarded.

Returns:

  • (Array)

    the different parts of the ‘def` or `defs` node



66
67
68
# File 'lib/rubocop/ast/node/def_node.rb', line 66

def node_parts
  to_a.reverse
end

#receiverNode?

The receiver of the method definition, if any.

Returns:

  • (Node, nil)

    the receiver of the method definition, or ‘nil`.



47
48
49
# File 'lib/rubocop/ast/node/def_node.rb', line 47

def receiver
  node_parts[3]
end

#void_context?Boolean

Checks whether this node body is a void context.

Returns:

  • (Boolean)

    whether the ‘def` node body is a void context



15
16
17
# File 'lib/rubocop/ast/node/def_node.rb', line 15

def void_context?
  method?(:initialize) || assignment_method?
end