Class: RuboCop::AST::NodePattern::Node::Union
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
::RuboCop::AST::Node,
::RuboCop::AST::NodePattern::Macros,
Parser::AST::Node
|
|
|
Instance Chain:
|
|
| Inherits: |
RuboCop::AST::Node
|
| Defined in: | lib/rubocop/ast/node_pattern/node.rb |
Overview
Node class for { … }
Constant Summary
::RuboCop::AST::Node - Inherited
ASSIGNMENTS, BASIC_CONDITIONALS, BASIC_LITERALS, COMPARISON_OPERATORS, COMPOSITE_LITERALS, CONDITIONALS, EMPTY_CHILDREN, EMPTY_PROPERTIES, EQUALS_ASSIGNMENTS, FALSEY_LITERALS, GROUP_FOR_TYPE, IMMUTABLE_LITERALS, KEYWORDS, LITERALS, LITERAL_RECURSIVE_METHODS, LITERAL_RECURSIVE_TYPES, LOOP_TYPES, MUTABLE_LITERALS, OPERATOR_KEYWORDS, POST_CONDITION_LOOP_TYPES, REFERENCES, SHORTHAND_ASSIGNMENTS, SPECIAL_KEYWORDS, SPECIAL_KEYWORD_TYPES, TRUTHY_LITERALS, VARIABLES
Class Method Summary
::RuboCop::AST::Node - Inherited
| .new, | |
| .def_recursive_literal_predicate | Define a |
::RuboCop::AST::NodePattern::Macros - Extended
| def_node_matcher | Define a method which applies a pattern to an AST node. |
| def_node_search | Define a method which recurses over the descendants of an AST node, checking whether any of them match the provided pattern. |
Instance Attribute Summary
::RuboCop::AST::Node - Inherited
| #any_block_type?, #any_def_type?, #any_match_pattern_type?, #any_str_type?, #any_sym_type?, #argument?, #argument_type?, #assignment?, #basic_conditional?, #basic_literal?, #boolean_type?, #call_type?, #chained?, #complete?, #conditional?, #empty_source?, #equals_asgn?, #falsey_literal?, #guard_clause?, #immutable_literal?, #keyword?, #literal?, | |||
| #loop_keyword? |
|
||
| #multiline? | Predicates. |
||
| #mutable_literal?, #numeric_type?, #operator_keyword?, | |||
| #parent | Returns the parent node, or |
||
| #parent?, #parenthesized_call?, #post_condition_loop?, | |||
| #pure? | Some expressions are evaluated for their value, some for their side effects, and some for both. |
||
| #range_type?, #reference?, #root?, | |||
| #send_type? | Most nodes are of 'send' type, so this method is defined separately to make this check as fast as possible. |
||
| #shorthand_asgn?, #single_line?, #special_keyword?, #truthy_literal?, | |||
| #value_used? | Some expressions are evaluated for their value, some for their side effects, and some for both If we know that an expression is useful only for its side effects, that means we can transform it in ways which preserve the side effects, but change the return value So, does the return value of this node matter? If we changed it to |
||
| #variable?, #begin_value_used?, #case_if_value_used?, #for_value_used?, #while_until_value_used? | |||
Instance Method Summary
- #arity
- #in_sequence_head
-
#nb_captures
Each child in a union must contain the same number of captures.
::RuboCop::AST::Node - Inherited
| #ancestors | Returns an array of ancestor nodes. |
||
| #assignment_or_similar? | Some cops treat the shovel operator as a kind of assignment. |
||
| #class_constructor?, #class_definition?, #complete!, #const_name, #defined_module, #defined_module_name, | |||
| #each_ancestor | Calls the given block for each ancestor node from parent to root. |
||
| #first_line, #global_const?, #lambda?, #lambda_or_proc?, #last_line, | |||
| #left_sibling | Use is discouraged, this is a potentially slow method and can lead to even slower algorithms. |
||
| #left_siblings | Use is discouraged, this is a potentially slow method and can lead to even slower algorithms. |
||
| #line_count, | |||
| #loc? | Shortcut to safely check if a location is present. |
||
| #loc_is? | Shortcut to safely test a particular location, even if this location does not exist or is |
||
| #match_guard_clause?, #module_definition?, | |||
| #node_parts | Common destructuring method. |
||
| #nonempty_line_count, | |||
| #parent_module_name | Searching the AST. |
||
| #proc?, #receiver, #recursive_basic_literal?, #recursive_literal?, | |||
| #right_sibling | Use is discouraged, this is a potentially slow method and can lead to even slower algorithms. |
||
| #right_siblings | Use is discouraged, this is a potentially slow method and can lead to even slower algorithms. |
||
| #sibling_index | Returns the index of the receiver node in its siblings. |
||
| #source |
|
||
| #source_length, #source_range, #str_content, #struct_constructor?, | |||
| #type? | Determine if the node is one of several node types in a single query Allows specific single node types, as well as "grouped" types (e.g. |
||
| #type_in? | Non-splatting variant of |
||
| #updated | Override RuboCop::AST::Node#updated so that |
||
| #defined_module0, #new_class_or_module_block?, #parent_module_name_for_block, #parent_module_name_for_sclass, #parent_module_name_part, #visit_ancestors | |||
::RuboCop::AST::Descendence - Included
| #child_nodes | Returns an array of child nodes. |
| #descendants | Returns an array of descendant nodes. |
| #each_child_node | Calls the given block for each child node. |
| #each_descendant | Calls the given block for each descendant node with depth first order. |
| #each_node | Calls the given block for the receiver and each descendant node in depth-first order. |
::RuboCop::AST::Sexp - Included
| #s | Creates a |
Constructor Details
This class inherits a constructor from RuboCop::AST::Node
Instance Method Details
#arity
[ GitHub ]# File 'lib/rubocop/ast/node_pattern/node.rb', line 224
def arity minima, maxima = children.map { |child| child.arity_range.minmax }.transpose min = minima.min max = maxima.max min == max ? min : min..max end
#in_sequence_head
[ GitHub ]# File 'lib/rubocop/ast/node_pattern/node.rb', line 231
def in_sequence_head return unless children.any?(&:in_sequence_head) new_children = children.map do |child| next child unless (replace = child.in_sequence_head) if replace.size > 1 Subsequence.new(:subsequence, replace, loc: child.loc) else replace.first end end [with(children: new_children)] end
#nb_captures
Each child in a union must contain the same number of captures. Only one branch ends up capturing.
# File 'lib/rubocop/ast/node_pattern/node.rb', line 249
def nb_captures child.nb_captures end