Class: Prism::CallTargetNode
- Inherits:
-
PrismNode
- Object
- PrismNode
- Prism::CallTargetNode
- Defined in:
- lib/prism/node.rb,
ext/prism/api_node.c
Overview
Represents assigning to a method call.
foo.bar, = 1
^^^^^^^
begin
rescue => foo.bar
^^^^^^^
end
for foo.bar in baz do end
^^^^^^^
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
attr_reader name: Symbol.
-
#receiver ⇒ Object
readonly
attr_reader receiver: Prism::node.
Class Method Summary collapse
-
.type ⇒ Object
Return a symbol representation of this node type.
Instance Method Summary collapse
-
#===(other) ⇒ Object
Implements case-equality for the node.
-
#accept(visitor) ⇒ Object
def accept: (Visitor visitor) -> void.
-
#attribute_write? ⇒ Boolean
def attribute_write?: () -> bool.
-
#call_operator ⇒ Object
def call_operator: () -> String.
-
#call_operator_loc ⇒ Object
attr_reader call_operator_loc: Location.
-
#child_nodes ⇒ Object
(also: #deconstruct)
def child_nodes: () -> Array[nil | Node].
-
#comment_targets ⇒ Object
def comment_targets: () -> Array[Node | Location].
-
#compact_child_nodes ⇒ Object
def compact_child_nodes: () -> Array.
-
#copy(node_id: self.node_id, location: self.location, flags: self.flags, receiver: self.receiver, call_operator_loc: self.call_operator_loc, name: self.name, message_loc: self.message_loc) ⇒ Object
def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node, ?call_operator_loc: Location, ?name: Symbol, ?message_loc: Location) -> CallTargetNode.
-
#deconstruct_keys(keys) ⇒ Object
def deconstruct_keys: (Array keys) -> { node_id: Integer, location: Location, receiver: Prism::node, call_operator_loc: Location, name: Symbol, message_loc: Location }.
-
#ignore_visibility? ⇒ Boolean
def ignore_visibility?: () -> bool.
-
#initialize(source, node_id, location, flags, receiver, call_operator_loc, name, message_loc) ⇒ CallTargetNode
constructor
Initialize a new CallTargetNode node.
-
#inspect ⇒ Object
def inspect -> String.
-
#message ⇒ Object
def message: () -> String.
-
#message_loc ⇒ Object
attr_reader message_loc: Location.
-
#safe_navigation? ⇒ Boolean
def safe_navigation?: () -> bool.
-
#type ⇒ Object
Return a symbol representation of this node type.
-
#variable_call? ⇒ Boolean
def variable_call?: () -> bool.
Constructor Details
#initialize(source, node_id, location, flags, receiver, call_operator_loc, name, message_loc) ⇒ CallTargetNode
Initialize a new CallTargetNode node.
2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 |
# File 'lib/prism/node.rb', line 2784 def initialize(source, node_id, location, flags, receiver, call_operator_loc, name, ) @source = source @node_id = node_id @location = location @flags = flags @receiver = receiver @call_operator_loc = call_operator_loc @name = name @message_loc = end |
Instance Attribute Details
#name ⇒ Object (readonly)
attr_reader name: Symbol
2859 2860 2861 |
# File 'lib/prism/node.rb', line 2859 def name @name end |
#receiver ⇒ Object (readonly)
attr_reader receiver: Prism::node
2849 2850 2851 |
# File 'lib/prism/node.rb', line 2849 def receiver @receiver end |
Class Method Details
.type ⇒ Object
Return a symbol representation of this node type. See ‘Node::type`.
2889 2890 2891 |
# File 'lib/prism/node.rb', line 2889 def self.type :call_target_node end |
Instance Method Details
#===(other) ⇒ Object
Implements case-equality for the node. This is effectively == but without comparing the value of locations. Locations are checked only for presence.
2895 2896 2897 2898 2899 2900 2901 2902 |
# File 'lib/prism/node.rb', line 2895 def ===(other) other.is_a?(CallTargetNode) && (flags === other.flags) && (receiver === other.receiver) && (call_operator_loc.nil? == other.call_operator_loc.nil?) && (name === other.name) && (.nil? == other..nil?) end |
#accept(visitor) ⇒ Object
def accept: (Visitor visitor) -> void
2796 2797 2798 |
# File 'lib/prism/node.rb', line 2796 def accept(visitor) visitor.visit_call_target_node(self) end |
#attribute_write? ⇒ Boolean
def attribute_write?: () -> bool
2839 2840 2841 |
# File 'lib/prism/node.rb', line 2839 def attribute_write? flags.anybits?(CallNodeFlags::ATTRIBUTE_WRITE) end |
#call_operator ⇒ Object
def call_operator: () -> String
2869 2870 2871 |
# File 'lib/prism/node.rb', line 2869 def call_operator call_operator_loc.slice end |
#call_operator_loc ⇒ Object
attr_reader call_operator_loc: Location
2852 2853 2854 2855 2856 |
# File 'lib/prism/node.rb', line 2852 def call_operator_loc location = @call_operator_loc return location if location.is_a?(Location) @call_operator_loc = Location.new(source, location >> 32, location & 0xFFFFFFFF) end |
#child_nodes ⇒ Object Also known as: deconstruct
def child_nodes: () -> Array[nil | Node]
2801 2802 2803 |
# File 'lib/prism/node.rb', line 2801 def child_nodes [receiver] end |
#comment_targets ⇒ Object
def comment_targets: () -> Array[Node | Location]
2811 2812 2813 |
# File 'lib/prism/node.rb', line 2811 def comment_targets [receiver, call_operator_loc, ] #: Array[Prism::node | Location] end |
#compact_child_nodes ⇒ Object
def compact_child_nodes: () -> Array
2806 2807 2808 |
# File 'lib/prism/node.rb', line 2806 def compact_child_nodes [receiver] end |
#copy(node_id: self.node_id, location: self.location, flags: self.flags, receiver: self.receiver, call_operator_loc: self.call_operator_loc, name: self.name, message_loc: self.message_loc) ⇒ Object
def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node, ?call_operator_loc: Location, ?name: Symbol, ?message_loc: Location) -> CallTargetNode
2816 2817 2818 |
# File 'lib/prism/node.rb', line 2816 def copy(node_id: self.node_id, location: self.location, flags: self.flags, receiver: self.receiver, call_operator_loc: self.call_operator_loc, name: self.name, message_loc: self.) CallTargetNode.new(source, node_id, location, flags, receiver, call_operator_loc, name, ) end |
#deconstruct_keys(keys) ⇒ Object
def deconstruct_keys: (Array keys) -> { node_id: Integer, location: Location, receiver: Prism::node, call_operator_loc: Location, name: Symbol, message_loc: Location }
2824 2825 2826 |
# File 'lib/prism/node.rb', line 2824 def deconstruct_keys(keys) { node_id: node_id, location: location, receiver: receiver, call_operator_loc: call_operator_loc, name: name, message_loc: } end |
#ignore_visibility? ⇒ Boolean
def ignore_visibility?: () -> bool
2844 2845 2846 |
# File 'lib/prism/node.rb', line 2844 def ignore_visibility? flags.anybits?(CallNodeFlags::IGNORE_VISIBILITY) end |
#inspect ⇒ Object
def inspect -> String
2879 2880 2881 |
# File 'lib/prism/node.rb', line 2879 def inspect InspectVisitor.compose(self) end |
#message ⇒ Object
def message: () -> String
2874 2875 2876 |
# File 'lib/prism/node.rb', line 2874 def .slice end |
#message_loc ⇒ Object
attr_reader message_loc: Location
2862 2863 2864 2865 2866 |
# File 'lib/prism/node.rb', line 2862 def location = @message_loc return location if location.is_a?(Location) @message_loc = Location.new(source, location >> 32, location & 0xFFFFFFFF) end |
#safe_navigation? ⇒ Boolean
def safe_navigation?: () -> bool
2829 2830 2831 |
# File 'lib/prism/node.rb', line 2829 def flags.anybits?(CallNodeFlags::SAFE_NAVIGATION) end |
#type ⇒ Object
Return a symbol representation of this node type. See ‘Node#type`.
2884 2885 2886 |
# File 'lib/prism/node.rb', line 2884 def type :call_target_node end |
#variable_call? ⇒ Boolean
def variable_call?: () -> bool
2834 2835 2836 |
# File 'lib/prism/node.rb', line 2834 def variable_call? flags.anybits?(CallNodeFlags::VARIABLE_CALL) end |