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., = 1
^^^^^^^
begin
rescue => foo.
^^^^^^^
end
for foo. in baz do end
^^^^^^^
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Represents the name of the method being called.
-
#receiver ⇒ Object
readonly
The object that the method is being called on.
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
Represents the location of the call operator.
-
#child_nodes ⇒ Object
(also: #deconstruct)
def child_nodes: () -> Array.
-
#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 }.
-
#each_child_node {|receiver| ... } ⇒ Object
def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator.
-
#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
Represents the location of the message.
-
#safe_navigation? ⇒ Boolean
def safe_navigation?: () -> bool.
-
#save_call_operator_loc(repository) ⇒ Object
Save the call_operator_loc location using the given saved source so that it can be retrieved later.
-
#save_message_loc(repository) ⇒ Object
Save the message_loc location using the given saved source so that it can be retrieved later.
-
#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.
3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 |
# File 'lib/prism/node.rb', line 3487 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 = end |
Instance Attribute Details
#name ⇒ Object (readonly)
Represents the name of the method being called.
foo. = 1 # name `:foo`
^^^
3584 3585 3586 |
# File 'lib/prism/node.rb', line 3584 def name @name end |
#receiver ⇒ Object (readonly)
The object that the method is being called on. This can be any [non-void expression](github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression).
foo. = 1
^^^
3562 3563 3564 |
# File 'lib/prism/node.rb', line 3562 def receiver @receiver end |
Class Method Details
.type ⇒ Object
Return a symbol representation of this node type. See Node::type.
3623 3624 3625 |
# File 'lib/prism/node.rb', line 3623 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.
3629 3630 3631 3632 3633 3634 3635 3636 |
# File 'lib/prism/node.rb', line 3629 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
3499 3500 3501 |
# File 'lib/prism/node.rb', line 3499 def accept(visitor) visitor.visit_call_target_node(self) end |
#attribute_write? ⇒ Boolean
def attribute_write?: () -> bool
3549 3550 3551 |
# File 'lib/prism/node.rb', line 3549 def attribute_write? flags.anybits?(CallNodeFlags::ATTRIBUTE_WRITE) end |
#call_operator ⇒ Object
def call_operator: () -> String
3603 3604 3605 |
# File 'lib/prism/node.rb', line 3603 def call_operator call_operator_loc.slice end |
#call_operator_loc ⇒ Object
Represents the location of the call operator.
foo. = 1
^
3568 3569 3570 3571 3572 |
# File 'lib/prism/node.rb', line 3568 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
3504 3505 3506 |
# File 'lib/prism/node.rb', line 3504 def child_nodes [receiver] end |
#comment_targets ⇒ Object
def comment_targets: () -> Array[Node | Location]
3521 3522 3523 |
# File 'lib/prism/node.rb', line 3521 def comment_targets [receiver, call_operator_loc, ] #: Array[Prism::node | Location] end |
#compact_child_nodes ⇒ Object
def compact_child_nodes: () -> Array
3516 3517 3518 |
# File 'lib/prism/node.rb', line 3516 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
3526 3527 3528 |
# File 'lib/prism/node.rb', line 3526 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 }
3534 3535 3536 |
# File 'lib/prism/node.rb', line 3534 def deconstruct_keys(keys) { node_id: node_id, location: location, receiver: receiver, call_operator_loc: call_operator_loc, name: name, message_loc: } end |
#each_child_node {|receiver| ... } ⇒ Object
def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator
3509 3510 3511 3512 3513 |
# File 'lib/prism/node.rb', line 3509 def each_child_node return to_enum(:each_child_node) unless block_given? yield receiver end |
#ignore_visibility? ⇒ Boolean
def ignore_visibility?: () -> bool
3554 3555 3556 |
# File 'lib/prism/node.rb', line 3554 def ignore_visibility? flags.anybits?(CallNodeFlags::IGNORE_VISIBILITY) end |
#inspect ⇒ Object
def inspect -> String
3613 3614 3615 |
# File 'lib/prism/node.rb', line 3613 def inspect InspectVisitor.compose(self) end |
#message ⇒ Object
def message: () -> String
3608 3609 3610 |
# File 'lib/prism/node.rb', line 3608 def .slice end |
#message_loc ⇒ Object
Represents the location of the message.
foo. = 1
^^^
3590 3591 3592 3593 3594 |
# File 'lib/prism/node.rb', line 3590 def location = return location if location.is_a?(Location) = Location.new(source, location >> 32, location & 0xFFFFFFFF) end |
#safe_navigation? ⇒ Boolean
def safe_navigation?: () -> bool
3539 3540 3541 |
# File 'lib/prism/node.rb', line 3539 def flags.anybits?(CallNodeFlags::SAFE_NAVIGATION) end |
#save_call_operator_loc(repository) ⇒ Object
Save the call_operator_loc location using the given saved source so that it can be retrieved later.
3576 3577 3578 |
# File 'lib/prism/node.rb', line 3576 def save_call_operator_loc(repository) repository.enter(node_id, :call_operator_loc) end |
#save_message_loc(repository) ⇒ Object
Save the message_loc location using the given saved source so that it can be retrieved later.
3598 3599 3600 |
# File 'lib/prism/node.rb', line 3598 def (repository) repository.enter(node_id, :message_loc) end |
#type ⇒ Object
Return a symbol representation of this node type. See ‘Node#type`.
3618 3619 3620 |
# File 'lib/prism/node.rb', line 3618 def type :call_target_node end |
#variable_call? ⇒ Boolean
def variable_call?: () -> bool
3544 3545 3546 |
# File 'lib/prism/node.rb', line 3544 def variable_call? flags.anybits?(CallNodeFlags::VARIABLE_CALL) end |