class Myst::Def

Overview

A method definition. Parameters for methods must be wrapped in parentheses. If the method does not accept parameters, the parentheses may be omitted. In the context of a type definition, methods can also be defined as "static" - or related to the type, rather than instances of the type - using the alternate keyword defstatic.

For any definition, the return type can be specified as a type restriction on the method itself using the : Type syntax, similar to the parameters.

[ 'def' | 'defstatic' ] name '(' [ param [ ',' param ]* ] ')' [ ':' return_type ] body 'end' | [ 'def' | 'defstatic' ] name [ ':' return_type ] body 'end'

Direct Known Subclasses

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(name : String, params : Array(Myst::Param) = [] of Param, body : Myst::Node = Nop.new, *, return_type : Myst::Node | Nil = nil, block_param : Nil | Myst::Param = nil, splat_index : Int32 | Nil = nil, static : 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 block_param : Param | Nil #

def block_param=(block_param : Param | Nil) #

[View source]
def block_param? : Param | Nil | Nil #

def body : Node #

[View source]
def body=(body : Node) #

[View source]
def hash(hasher) #
Description copied from class Reference

See Object#hash(hasher)


def name : String #

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

[View source]
def params : Array(Param) #

[View source]
def params=(params : Array(Param)) #

[View source]
def return_type : Node | Nil #

def return_type=(return_type : Node | Nil) #

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

def splat_index : Int32 | Nil #

def splat_index=(splat_index : Int32 | Nil) #

[View source]
def splat_index? : Int32 | Nil | Nil #

def static=(static : Bool) #

[View source]
def static? : Bool #

[View source]