W3cubDocs

/Crystal

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

Defined in:

compiler/crystal/macros.cr

Instance Method Summary

Instance Method Detail

def !=(other : ASTNode) : BoolLiteralSource

Returns true if this node's textual representation is not the same as the other node.

def ==(other : ASTNode) : BoolLiteralSource

Returns true if this node's textual representation is the same as the other node.

def class_name : StringLiteralSource

Returns a StringLiteral that contains this node's name.

macro test
  {{ "foo".class_name }}
end

puts test # => prints StringLiteral

def column_number : StringLiteral | NilLiteralSource

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.

def end_column_number : StringLiteral | NilLiteralSource

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.

def end_line_number : StringLiteral | NilLiteralSource

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.

def filename : StringLiteral | NilLiteralSource

Returns the filename where this node is located. Might return nil if the location is not known.

def id : MacroIdSource

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

def line_number : StringLiteral | NilLiteralSource

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.

def raise(message) : NoReturnSource

Gives a compile-time error with the given message. This will highlight this node in the error message.

def stringify : StringLiteralSource

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)

def symbolize : SymbolLiteralSource

Returns a SymbolLiteral that contains this node's textual representation.

{{ "foo".id.symbolize }} # => :foo

© 2012–2020 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.35.1/Crystal/Macros/ASTNode.html