Crystal::Macros::TypeNode
class Crystal::Macros::TypeNode
Overview
Represents a type in the program, like Int32
or String
.
Defined in:
compiler/crystal/macros.crInstance Method Summary
- #<(other : TypeNode) : BoolLiteral
Returns
true
if other is an ancestor ofself
. - #<=(other : TypeNode) : BoolLiteral
Returns
true
ifself
is the same as other or if other is an ancestor ofself
. - #>(other : TypeNode) : BoolLiteral
Returns
true
ifself
is an ancestor of other. - #>=(other : TypeNode) : BoolLiteral
Returns
true
if other is the same asself
or ifself
is an ancestor of other. - #[](key : SymbolLiteral | MacroId) : TypeNode | NilLiteral
Returns the type for the given key in this named tuple type.
- #abstract? : BoolLiteral
Returns true if this type is abstract.
- #all_subclasses : Crystal::Macros::ArrayLiteral(TypeNode)
Returns all subclasses of this type.
- #ancestors : Crystal::Macros::ArrayLiteral(TypeNode)
Returns all ancestors of this type.
- #class : TypeNode
Returns the class of this type.
- #constant(name : StringLiteral | SymbolLiteral | MacroId) : ASTNode
Returns a constant defined in this type.
- #constants : Crystal::Macros::ArrayLiteral(MacroId)
Returns the constants and types defined by this type.
- #has_attribute?(name : StringLiteral | SymbolLiteral) : BoolLiteral
Returns true if this type has an attribute.
- #has_constant?(name : StringLiteral | SymbolLiteral) : BoolLiteral
Returns true if this type has a constant.
- #instance : TypeNode
Returns the instance type of this type, if it's a class type, or
self
otherwise. - #instance_vars : Crystal::Macros::ArrayLiteral(MetaVar)
Returns the instance variables of this type.
- #keys : Crystal::Macros::ArrayLiteral(MacroId)
Returns the keys in this named tuple type.
- #methods : Crystal::Macros::ArrayLiteral(Def)
Returns the instance methods defined by this type, without including inherited methods.
- #name : MacroId
Returns the fully qualified name of this type.
- #overrides?(type : TypeNode, method : StringLiteral | SymbolLiteral | MacroId) : Bool
Determines if
self
overrides any method named method from type type. - #size : NumberLiteral
Returns the number of elements in this tuple type or tuple metaclass type.
- #subclasses : Crystal::Macros::ArrayLiteral(TypeNode)
Returns the direct subclasses of this type.
- #superclass : TypeNode | NilLiteral
Returns the direct superclass of this type.
- #type_vars : Crystal::Macros::ArrayLiteral(TypeNode)
Returns the type variables of the generic type.
- #union? : BoolLiteral
Returns true if this type is a union type, false otherwise.
- #union_types : Crystal::Macros::ArrayLiteral(TypeNode)
Returns the types comforming a union type, if this is a union type.
Instance methods inherited from class Crystal::Macros::ASTNode
!=(other : ASTNode) : BoolLiteral !=, ==(other : ASTNode) : BoolLiteral ==, class_name : StringLiteral class_name, column_number : StringLiteral | NilLiteral column_number, end_column_number : StringLiteral | NilLiteral end_column_number, end_line_number : StringLiteral | NilLiteral end_line_number, filename : StringLiteral | NilLiteral filename, id : MacroId id, line_number : StringLiteral | NilLiteral line_number, raise(message) : NoReturn raise, stringify : StringLiteral stringify 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
Class 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
Class 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
def <(other : TypeNode) : BoolLiteralSource
Returns true
if other is an ancestor of self
.
def <=(other : TypeNode) : BoolLiteralSource
Returns true
if self
is the same as other or if other is an ancestor of self
.
def >(other : TypeNode) : BoolLiteralSource
Returns true
if self
is an ancestor of other.
def >=(other : TypeNode) : BoolLiteralSource
Returns true
if other is the same as self
or if self
is an ancestor of other.
def [](key : SymbolLiteral | MacroId) : TypeNode | NilLiteralSource
Returns the type for the given key in this named tuple type. Gives a compile error if this is not a named tuple type.
def abstract? : BoolLiteralSource
Returns true if this type is abstract.
def all_subclasses : Crystal::Macros::ArrayLiteral(TypeNode)Source
Returns all subclasses of this type.
def ancestors : Crystal::Macros::ArrayLiteral(TypeNode)Source
Returns all ancestors of this type.
def constant(name : StringLiteral | SymbolLiteral | MacroId) : ASTNodeSource
Returns a constant defined in this type.
If the constant is a constant (like A = 1
), then its value as an ASTNode is returned. If the constant is a type, the type is returned as a TypeNode
. Otherwise, NilLiteral
is returned.
def constants : Crystal::Macros::ArrayLiteral(MacroId)Source
Returns the constants and types defined by this type.
def has_attribute?(name : StringLiteral | SymbolLiteral) : BoolLiteralSource
Returns true if this type has an attribute. For example @[Flags]
or @[Packed]
(the name you pass to this method is "Flags" or "Packed" in these cases).
def has_constant?(name : StringLiteral | SymbolLiteral) : BoolLiteralSource
Returns true if this type has a constant. For example DEFAULT_OPTIONS
(the name you pass to this method is "DEFAULT_OPTIONS" or :DEFAULT_OPTIONS in this cases).
def instance : TypeNodeSource
Returns the instance type of this type, if it's a class type, or self
otherwise. This is the opposite of #class
.
def instance_vars : Crystal::Macros::ArrayLiteral(MetaVar)Source
Returns the instance variables of this type.
def keys : Crystal::Macros::ArrayLiteral(MacroId)Source
Returns the keys in this named tuple type. Gives a compile error if this is not a named tuple type.
def methods : Crystal::Macros::ArrayLiteral(Def)Source
Returns the instance methods defined by this type, without including inherited methods.
def overrides?(type : TypeNode, method : StringLiteral | SymbolLiteral | MacroId) : BoolSource
Determines if self
overrides any method named method from type type.
class Foo def one 1 end def two 2 end end class Bar < Foo def one 11 end end {{ Bar.overrides?(Foo, "one") }} # => true {{ Bar.overrides?(Foo, "two") }} # => false
def size : NumberLiteralSource
Returns the number of elements in this tuple type or tuple metaclass type. Gives a compile error if this is not one of those types.
def subclasses : Crystal::Macros::ArrayLiteral(TypeNode)Source
Returns the direct subclasses of this type.
def superclass : TypeNode | NilLiteralSource
Returns the direct superclass of this type.
def type_vars : Crystal::Macros::ArrayLiteral(TypeNode)Source
Returns the type variables of the generic type. If the type is not generic, an empty array is returned.
def union? : BoolLiteralSource
Returns true if this type is a union type, false otherwise.
See also: #union_types
.
def union_types : Crystal::Macros::ArrayLiteral(TypeNode)Source
Returns the types comforming a union type, if this is a union type. Gives a compile error otherwise.
See also: #union?
.
© 2012–2017 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.22.0/Crystal/Macros/TypeNode.html