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::Arg
- Crystal::Macros::ArrayLiteral
- 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::Def
- Crystal::Macros::Expressions
- Crystal::Macros::HashLiteral
- Crystal::Macros::MacroId
- Crystal::Macros::MetaVar
- Crystal::Macros::NamedArgument
- Crystal::Macros::NamedTupleLiteral
- Crystal::Macros::NilLiteral
- Crystal::Macros::Nop
- Crystal::Macros::NumberLiteral
- Crystal::Macros::Path
- Crystal::Macros::RangeLiteral
- Crystal::Macros::RegexLiteral
- Crystal::Macros::Splat
- Crystal::Macros::StringLiteral
- Crystal::Macros::SymbolLiteral
- Crystal::Macros::TupleLiteral
- Crystal::Macros::TypeDeclaration
- Crystal::Macros::TypeNode
- Crystal::Macros::Var
- Crystal::Macros::When
Defined in:
compiler/crystal/macros.crInstance Method Summary
-
#!=(other : ASTNode) : BoolLiteral
Returns true if this node's textual representation is not the same as the other node.
-
#==(other : ASTNode) : BoolLiteral
Returns true if this node's textual representation is the same as the other node.
-
#class_name : StringLiteral
Returns a
StringLiteral
that contains this node's name. -
#id : MacroId
Returns this node as a
MacroId
. -
#raise(message) : NoReturn
Gives a compile-time error with the given message.
-
#stringify : StringLiteral
Returns a
StringLiteral
that contains this node's textual representation.
Instance methods inherited from class Reference
==(other)==(other : self) ==, hash hash, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, same?(other : Reference)
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Instance methods inherited from class Object
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other)===(other : YAML::Any)
===(other : JSON::Any) ===, =~(other) =~, class class, clone clone, crystal_type_id crystal_type_id, dup dup, hash hash, inspect
inspect(io : IO) inspect, itself itself, not_nil! not_nil!, tap(&block) tap, to_json to_json, to_pretty_json(io : IO)
to_pretty_json to_pretty_json, to_s
to_s(io : IO) to_s, to_yaml(io : IO)
to_yaml to_yaml, try(&block) try
Class methods inherited from class Object
==(other : Class)
==,
===(other)
===,
cast(other) : self
cast,
from_json(string_or_io) : self
from_json,
from_yaml(string : String) : self
from_yaml,
hash
hash,
inspect(io)
inspect,
name : String
name,
to_s(io)
to_s,
|(other : U.class)
|
Instance Method Detail
Returns true if this node's textual representation is not the same as the other node.
Returns true if this node's textual representation is the same as the other node.
Returns a StringLiteral
that contains this node's name.
macro test
{{ "foo".class_name }}
end
puts test # => prints StringLiteral
Returns this node as a MacroId
. Useful when you need an identifier
out of a StringLiteral
, SymbolLiteral
, Var
or Call
.
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
Gives a compile-time error with the given message. This will highlight this node in the error message.
Returns a StringLiteral
that contains this node's textual representation.
Note that invoking stringify on a string literal will return a StringLiteral
that contains a string literal.
macro test
{{ "foo".stringify }}
end
puts test # prints "foo" (including the double quotes)