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
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[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
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.
3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 |
# File 'lib/prism/node.rb', line 3266 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)
Represents the name of the method being called.
foo.bar = 1 # name `:foo`
^^^
3356 3357 3358 |
# File 'lib/prism/node.rb', line 3356 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.bar = 1
^^^
3334 3335 3336 |
# File 'lib/prism/node.rb', line 3334 def receiver @receiver end |
Class Method Details
.type ⇒ Object
Return a symbol representation of this node type. See ‘Node::type`.
3395 3396 3397 |
# File 'lib/prism/node.rb', line 3395 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.
3401 3402 3403 3404 3405 3406 3407 3408 |
# File 'lib/prism/node.rb', line 3401 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
3278 3279 3280 |
# File 'lib/prism/node.rb', line 3278 def accept(visitor) visitor.visit_call_target_node(self) end |
#attribute_write? ⇒ Boolean
def attribute_write?: () -> bool
3321 3322 3323 |
# File 'lib/prism/node.rb', line 3321 def attribute_write? flags.anybits?(CallNodeFlags::ATTRIBUTE_WRITE) end |
#call_operator ⇒ Object
def call_operator: () -> String
3375 3376 3377 |
# File 'lib/prism/node.rb', line 3375 def call_operator call_operator_loc.slice end |
#call_operator_loc ⇒ Object
Represents the location of the call operator.
foo.bar = 1
^
3340 3341 3342 3343 3344 |
# File 'lib/prism/node.rb', line 3340 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]
3283 3284 3285 |
# File 'lib/prism/node.rb', line 3283 def child_nodes [receiver] end |
#comment_targets ⇒ Object
def comment_targets: () -> Array[Node | Location]
3293 3294 3295 |
# File 'lib/prism/node.rb', line 3293 def comment_targets [receiver, call_operator_loc, ] #: Array[Prism::node | Location] end |
#compact_child_nodes ⇒ Object
def compact_child_nodes: () -> Array
3288 3289 3290 |
# File 'lib/prism/node.rb', line 3288 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
3298 3299 3300 |
# File 'lib/prism/node.rb', line 3298 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 }
3306 3307 3308 |
# File 'lib/prism/node.rb', line 3306 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
3326 3327 3328 |
# File 'lib/prism/node.rb', line 3326 def ignore_visibility? flags.anybits?(CallNodeFlags::IGNORE_VISIBILITY) end |
#inspect ⇒ Object
def inspect -> String
3385 3386 3387 |
# File 'lib/prism/node.rb', line 3385 def inspect InspectVisitor.compose(self) end |
#message ⇒ Object
def message: () -> String
3380 3381 3382 |
# File 'lib/prism/node.rb', line 3380 def .slice end |
#message_loc ⇒ Object
Represents the location of the message.
foo.bar = 1
^^^
3362 3363 3364 3365 3366 |
# File 'lib/prism/node.rb', line 3362 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
3311 3312 3313 |
# File 'lib/prism/node.rb', line 3311 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.
3348 3349 3350 |
# File 'lib/prism/node.rb', line 3348 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.
3370 3371 3372 |
# File 'lib/prism/node.rb', line 3370 def (repository) repository.enter(node_id, :message_loc) end |
#type ⇒ Object
Return a symbol representation of this node type. See ‘Node#type`.
3390 3391 3392 |
# File 'lib/prism/node.rb', line 3390 def type :call_target_node end |
#variable_call? ⇒ Boolean
def variable_call?: () -> bool
3316 3317 3318 |
# File 'lib/prism/node.rb', line 3316 def variable_call? flags.anybits?(CallNodeFlags::VARIABLE_CALL) end |