abstract class
Crystal::Macros::ASTNode
Overview
This is the base class of all AST nodes. This methods are available to all AST nodes.
Direct Known Subclasses
- Crystal::Macros::Alias
- Crystal::Macros::Annotation
- Crystal::Macros::AnnotationDef
- Crystal::Macros::Arg
- Crystal::Macros::ArrayLiteral
- Crystal::Macros::Asm
- Crystal::Macros::AsmOperand
- Crystal::Macros::Assign
- Crystal::Macros::BinaryOp
- Crystal::Macros::Block
- Crystal::Macros::BoolLiteral
- Crystal::Macros::Call
- Crystal::Macros::Case
- Crystal::Macros::Cast
- Crystal::Macros::CharLiteral
- Crystal::Macros::ClassDef
- Crystal::Macros::ClassVar
- Crystal::Macros::ControlExpression
- Crystal::Macros::CStructOrUnionDef
- Crystal::Macros::Def
- Crystal::Macros::EnumDef
- Crystal::Macros::ExceptionHandler
- Crystal::Macros::Expressions
- Crystal::Macros::Extend
- Crystal::Macros::ExternalVar
- Crystal::Macros::FunDef
- Crystal::Macros::Generic
- Crystal::Macros::Global
- Crystal::Macros::HashLiteral
- Crystal::Macros::If
- Crystal::Macros::ImplicitObj
- Crystal::Macros::Include
- Crystal::Macros::InstanceVar
- Crystal::Macros::IsA
- Crystal::Macros::LibDef
- Crystal::Macros::Macro
- Crystal::Macros::MacroExpression
- Crystal::Macros::MacroFor
- Crystal::Macros::MacroId
- Crystal::Macros::MacroIf
- Crystal::Macros::MacroLiteral
- Crystal::Macros::MacroVar
- Crystal::Macros::MagicConstant
- Crystal::Macros::Metaclass
- Crystal::Macros::MetaVar
- Crystal::Macros::ModuleDef
- Crystal::Macros::MultiAssign
- Crystal::Macros::NamedArgument
- Crystal::Macros::NamedTupleLiteral
- Crystal::Macros::NilableCast
- Crystal::Macros::NilLiteral
- Crystal::Macros::Nop
- Crystal::Macros::NumberLiteral
- Crystal::Macros::OffsetOf
- Crystal::Macros::Path
- Crystal::Macros::Primitive
- Crystal::Macros::ProcLiteral
- Crystal::Macros::ProcNotation
- Crystal::Macros::ProcPointer
- Crystal::Macros::RangeLiteral
- Crystal::Macros::ReadInstanceVar
- Crystal::Macros::RegexLiteral
- Crystal::Macros::Require
- Crystal::Macros::Rescue
- Crystal::Macros::RespondsTo
- Crystal::Macros::Select
- Crystal::Macros::Self
- Crystal::Macros::StringInterpolation
- Crystal::Macros::StringLiteral
- Crystal::Macros::SymbolLiteral
- Crystal::Macros::TupleLiteral
- Crystal::Macros::TypeDeclaration
- Crystal::Macros::TypeDef
- Crystal::Macros::TypeNode
- Crystal::Macros::TypeOf
- Crystal::Macros::UnaryExpression
- Crystal::Macros::Underscore
- Crystal::Macros::UninitializedVar
- Crystal::Macros::Union
- Crystal::Macros::Var
- Crystal::Macros::VisibilityModifier
- Crystal::Macros::When
- Crystal::Macros::While
- Crystal::Macros::Yield
Defined in:
compiler/crystal/macros.crInstance Method Summary
-
#!=(other : ASTNode) : BoolLiteral
Returns
trueif this node's textual representation is not the same as theother node. -
#==(other : ASTNode) : BoolLiteral
Returns
trueif this node's textual representation is the same as theother node. -
#class_name : StringLiteral
Returns a
StringLiteralthat contains this node's name. -
#column_number : StringLiteral | NilLiteral
Returns the column numberwhere this node begins.
-
#doc : StringLiteral
Returns a
StringLiteralthat contains the documentation comments attached to this node, or an empty string if there are none. - #doc_comment : MacroId
-
#end_column_number : StringLiteral | NilLiteral
Returns the column numberwhere this node ends.
-
#end_line_number : StringLiteral | NilLiteral
Returns the line numberwhere this node ends.
-
#filename : StringLiteral | NilLiteral
Returns the filenamewhere this node is located.
-
#id : MacroId
Returns this node as a
MacroId. -
#is_a?(type : TypeNode) : BoolLiteral
Returns
trueif this node's type is the giventype or any of its subclasses. -
#line_number : StringLiteral | NilLiteral
Returns the line numberwhere this node begins.
-
#nil? : BoolLiteral
Returns
trueif this node is aNilLiteralorNop. -
#raise(message) : NoReturn
Gives a compile-time errorwith the givenmessage.
-
#stringify : StringLiteral
Returns a
StringLiteralthat contains this node's textual representation. -
#symbolize : SymbolLiteral
Returns a
SymbolLiteralthat contains this node's textual representation. -
#warning(message : StringLiteral) : NilLiteral
Emits a compile-timewarningwith the givenmessage.
Instance Method Detail
Returnstrue if this node's textual representation is not the same as
theother node.
Returnstrue if this node's textual representation is the same as
theother node.
Returns aStringLiteral that contains this node's name.
macro test
{{ "foo".class_name }}
end
puts test # => prints StringLiteral
Returns the column numberwhere this node begins.
Might returnnil if the location is not known.
The first column number in a line is1.
Returns aStringLiteral that contains the documentation comments attached to this node, or an empty string if there are none.
WARNING The return valuewill be an empty stringwhen executed outside of thecrystal docs command.
Returns aMacroId that contains the documentation comments attached to this node, or an emptyMacroId if there are none.
Each line is prefixedwith a# character to allow the output to be used directlywithin another node's documentation comment.
A common use case is combining this methodwith the@caller macro instance variable in order to allowmerging macro expansion and call comments.
WARNING The return valuewill be emptywhen executed outside of thecrystal docs command.
Returns the column numberwhere this node ends.
Might returnnil if the location is not known.
The first column number in a line is1.
Returns the line numberwhere this node ends.
Might returnnil if the location is not known.
The first line number in a file is1.
Returns the filenamewhere this node is located.
Might returnnil if the location is not known.
Returns this node as aMacroId. Usefulwhen you need an identifier
out of aStringLiteral,SymbolLiteral,Var orCall.
macro define_method(name, content)
def {{name.id}}
{{content}}
end
end
define_method :foo, 1
define_method "bar", 2
define_method baz, 3
puts foo # => prints 1
puts bar # => prints 2
puts baz # => prints 3
Returnstrue if this node's type is the giventype or any of its
subclasses.
type always refers to an AST node type, never a type in the program.
{{ 1.is_a?(NumberLiteral) }} # => true
{{ 1.is_a?(BoolLiteral) }} # => false
{{ 1.is_a?(ASTNode) }} # => true
{{ 1.is_a?(Int32) }} # => false
NOTE This is a pseudo-method provided directly by the Crystal compiler. It cannot be redefined nor overridden.
Returns the line numberwhere this node begins.
Might returnnil if the location is not known.
The first line number in a file is 1.
Returnstrue if this node is aNilLiteral orNop.
NOTE This is a pseudo-method provided directly by the Crystal compiler. It cannot be redefined nor overridden.
Gives a compile-time errorwith the givenmessage. Thiswill highlight this node in the error message.
Returns aStringLiteral that contains this node's textual representation.
Note that invoking stringify on a string literalwill return aStringLiteral
that contains a string literal.
macro test
{{ "foo".stringify }}
end
puts test # prints "foo" (including the double quotes)
Returns aSymbolLiteral that contains this node's textual representation.
{{ "foo".id.symbolize }} # => :foo
Emits a compile-timewarningwith the givenmessage. Thiswill highlight this node in thewarning message.