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::ClassDef
- Crystal::Macros::ClassVar
- Crystal::Macros::Def
- Crystal::Macros::Expressions
- Crystal::Macros::Generic
- Crystal::Macros::Global
- Crystal::Macros::HashLiteral
- Crystal::Macros::If
- Crystal::Macros::ImplicitObj
- Crystal::Macros::InstanceVar
- Crystal::Macros::IsA
- Crystal::Macros::Macro
- Crystal::Macros::MacroId
- Crystal::Macros::MetaVar
- Crystal::Macros::MultiAssign
- Crystal::Macros::NamedArgument
- Crystal::Macros::NamedTupleLiteral
- Crystal::Macros::NilableCast
- Crystal::Macros::NilLiteral
- Crystal::Macros::Nop
- Crystal::Macros::NumberLiteral
- Crystal::Macros::Path
- Crystal::Macros::RangeLiteral
- Crystal::Macros::ReadInstanceVar
- Crystal::Macros::RegexLiteral
- Crystal::Macros::Require
- Crystal::Macros::RespondsTo
- Crystal::Macros::Splat
- Crystal::Macros::StringInterpolation
- Crystal::Macros::StringLiteral
- Crystal::Macros::SymbolLiteral
- Crystal::Macros::TupleLiteral
- Crystal::Macros::TypeDeclaration
- Crystal::Macros::TypeNode
- Crystal::Macros::UnaryExpression
- Crystal::Macros::UninitializedVar
- Crystal::Macros::Union
- Crystal::Macros::Var
- Crystal::Macros::VisibilityModifier
- Crystal::Macros::When
- Crystal::Macros::While
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. -
#column_number : StringLiteral | NilLiteral
Returns the column number where this node begins.
-
#end_column_number : StringLiteral | NilLiteral
Returns the column number where this node ends.
-
#end_line_number : StringLiteral | NilLiteral
Returns the line number where this node ends.
-
#filename : StringLiteral | NilLiteral
Returns the filename where this node is located.
-
#id : MacroId
Returns this node as a
MacroId
. -
#line_number : StringLiteral | NilLiteral
Returns the line number where this node begins.
-
#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 : self)==(other) ==, dup dup, hash hash, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference)
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Constructor methods inherited from class Reference
new
new
Instance methods inherited from class Object
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, class class, dup dup, hash hash, inspect(io : IO)
inspect inspect, itself itself, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, tap(&block) tap, to_json(io : IO)
to_json to_json, to_pretty_json(indent : String = " ")
to_pretty_json(io : IO, indent : String = " ") to_pretty_json, to_s
to_s(io : IO) to_s, to_yaml(io : IO)
to_yaml to_yaml, try(&block) try, unsafe_as(type : T.class) forall T unsafe_as
Constructor methods inherited from class Object
from_json(string_or_io, root : String) : selffrom_json(string_or_io) : self from_json, from_yaml(string_or_io) : self from_yaml
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 the column number where this node begins.
Might return nil
if the location is not known.
The first column number in a line is 1
.
Returns the column number where this node ends.
Might return nil
if the location is not known.
The first column number in a line is 1
.
Returns the line number where this node ends.
Might return nil
if the location is not known.
The first line number in a file is 1
.
Returns the filename where this node is located.
Might return nil
if the location is not known.
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
Returns the line number where this node begins.
Might return nil
if the location is not known.
The first line number in a file is 1.
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)