W3cubDocs

/Crystal 0.31

class Crystal::Macros::TypeNode

Overview

Represents a type in the program, like Int32 or String.

Defined in:

compiler/crystal/macros.cr

Instance Method Summary

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, symbolize : SymbolLiteral symbolize

Instance methods inherited from class Reference

==(other : self)
==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==
, dup dup, hash(hasher) 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(hasher)
hash hash
, inspect(io : IO) : Nil
inspect : String 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 : String
to_s(io : IO) : Nil 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) : self
from_json(string_or_io) : self from_json
, from_yaml(string_or_io : String | 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 annotation(type : TypeNode) : Annotation | NilLiteralSource

Returns the last Annotation with the given type attached to this variable or NilLiteral if there are none.

def annotations(type : TypeNode) : Crystal::Macros::ArrayLiteral(Annotation)Source

Returns an array of annotations with the given type attached to this variable, or an empty ArrayLiteral if there are none.

def class : TypeNodeSource

Returns the class of this type. With this you can, for example, obtain class methods by invoking type.class.methods.

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 has_method?(name : StringLiteral | SymbolLiteral) : BoolLiteralSource

Returns true if this type has a method. 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 name : MacroIdSource

Returns the fully qualified name of this type.

def nilable? : BoolLiteralSource

Returns true if this type is nilable (if it has Nil amongst its types).

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 resolve : TypeNodeSource

Returns self. This method exists so you can safely call #resolve on a node and resolve it to a type, even if it's a type already.

def resolve? : TypeNodeSource

Returns self. This method exists so you can safely call #resolve on a node and resolve it to a type, even if it's a type already.

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 forming a union type, if this is a union type. Otherwise returns this single type inside an array literal (so you can safely call #union_types on any type and treat all types uniformly).

See also: #union?.

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