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 the other node.
- 
        #==(other : ASTNode) : BoolLiteral
        
          Returns trueif this node's textual representation is the same as the other node.
- 
        #class_name : StringLiteral
        
          Returns a StringLiteralthat contains this node's name.
- 
        #column_number : StringLiteral | NilLiteral
        
          Returns the column number where 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 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.
- 
        #is_a?(type : TypeNode) : BoolLiteral
        
          Returns trueif this node's type is the given type or any of its subclasses.
- 
        #line_number : StringLiteral | NilLiteral
        
          Returns the line number where this node begins. 
- 
        #nil? : BoolLiteral
        
          Returns trueif this node is aNilLiteralorNop.
- 
        #raise(message) : NoReturn
        
          Gives a compile-time error with the given message. 
- 
        #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-time warning with the given message. 
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 StringLiteralReturns 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 a StringLiteral that contains the documentation comments attached to this node, or an empty string if there are none.
WARNING  The return value will be an empty string when executed outside of the crystal docs command.
Returns a MacroId that contains the documentation comments attached to this node, or an empty MacroId if there are none.
Each line is prefixed with a # character to allow the output to be used directly within another node's documentation comment.
A common use case is combining this method with the @caller macro instance variable in order to allow merging macro expansion and call comments.
WARNING  The return value will be empty when executed outside of the crystal docs command.
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 3Returns true if this node's type is the given type 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) }}         # => falseNOTE This is a pseudo-method provided directly by the Crystal compiler. It cannot be redefined nor overridden.
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.
Returns true if this node is a NilLiteral or Nop.
NOTE This is a pseudo-method provided directly by the Crystal compiler. It cannot be redefined nor overridden.
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)Returns a SymbolLiteral that contains this node's textual representation.
{{ "foo".id.symbolize }} # => :fooEmits a compile-time warning with the given message. This will highlight this node in the warning message.