class Myst::Call

Overview

A method call. Calls are the building block of functionality. Any operation not expressed by a distinct node is considered a Call. For example, a + b is a call to the method + on a with b as an argument, obj.member is a call to the method member on obj, etc. Additionally, any identifier that is not known to be a local variable (created by a SimpleAssign or MatchAssign) is considered a Call.

[ receiver '.' ] name [ block ] | [ receiver '.' ] name '(' [ arg [ ',' arg ]* ] ')' [ block ] | expression '(' [ arg [ ',' arg ]* ] ')' [ block ] | arg operator arg

Any expression can be forced into a Call by adding parentheses as a suffix. Complex expressions will require parentheses around the expression to avoid ambiguity. This is the third form shown above.

The last form is for infix operations, such as a + b shown above, where operator would be the +.

Defined in:

myst/syntax/ast.cr

Constructors

Instance Method Summary

Instance methods inherited from class Myst::Node

accept(visitor) accept, accept_children(visitor) accept_children, at(node : Node)
at(node : Nil)
at(location : Location)
at
, at_end(node : Node)
at_end(node : Nil)
at_end(end_location : Location)
at_end
, class_desc : String class_desc, end_location : Location | Nil end_location, end_location=(end_location : Location | Nil) end_location=, location : Location | Nil location, location=(location : Location | Nil) location=

Constructor Detail

def self.new(receiver : Myst::Node | Nil, name : Myst::Node | String, args : Array(Myst::Node) = [] of Node, block : Myst::Node | Nil = nil, infix : Bool = false) #

[View source]

Instance Method Detail

def ==(other : self) #
Description copied from class Reference

Returns true if this reference is the same as other. Invokes same?.


def accept_children(visitor) #

[View source]
def args : Array(Node) #

[View source]
def args=(args : Array(Node)) #

[View source]
def block : Block | FunctionCapture | Nil #

def block=(block : Block | FunctionCapture | Nil) #

[View source]
def block? : Block | FunctionCapture | Nil | Nil #

def hash(hasher) #
Description copied from class Reference

See Object#hash(hasher)


def infix=(infix : Bool) #

[View source]
def infix? : Bool #

[View source]
def name : String | Node #

[View source]
def name=(name : String | Node) #

[View source]
def receiver : Node | Nil #

def receiver=(receiver : Node | Nil) #

[View source]
def receiver? : Node | Nil | Nil #