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 trueif other is an ancestor ofself.
- 
        #<=(other : TypeNode) : BoolLiteral
        
          Returns trueifselfis the same as other or if other is an ancestor ofself.
- 
        #>(other : TypeNode) : BoolLiteral
        
          Returns trueifselfis an ancestor of other.
- 
        #>=(other : TypeNode) : BoolLiteral
        
          Returns trueif other is the same asselfor ifselfis an ancestor of other.
- 
        #[](key : SymbolLiteral | MacroId) : TypeNode | NilLiteral
        
          Returns the type for the given key in this named tuple type. 
- 
        #abstract? : BoolLiteral
        
          Returns trueif 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. 
- 
        #annotation(type : TypeNode) : Annotation | NilLiteral
        
          Returns the last Annotationwith the giventypeattached to this variable orNilLiteralif there are none.
- 
        #annotations(type : TypeNode) : Crystal::Macros::ArrayLiteral(Annotation)
        
          Returns an array of annotations with the given typeattached to this variable, or an emptyArrayLiteralif there are none.
- 
        #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 trueif this type has an attribute.
- 
        #has_constant?(name : StringLiteral | SymbolLiteral) : BoolLiteral
        
          Returns trueif this type has a constant.
- 
        #has_method?(name : StringLiteral | SymbolLiteral) : BoolLiteral
        
          Returns trueif this type has a method.
- 
        #instance : TypeNode
        
          Returns the instance type of this type, if it's a class type, or selfotherwise.
- 
        #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. 
- 
        #nilable? : BoolLiteral
        
          Returns trueif this type is nilable (if it hasNilamongst its types).
- 
        #overrides?(type : TypeNode, method : StringLiteral | SymbolLiteral | MacroId) : Bool
        
          Determines if selfoverrides any method named method from type type.
- 
        #resolve : TypeNode
        
          Returns self.
- 
        #resolve? : TypeNode
        
          Returns self.
- 
        #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 trueif this type is a union type,falseotherwise.
- 
        #union_types : Crystal::Macros::ArrayLiteral(TypeNode)
        
          Returns the types forming 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, 
    
  
    
      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) : selffrom_json(string_or_io) : self from_json, from_yaml(string_or_io : String | IO) : self from_yaml
Instance Method Detail
Returns true if self is the same as other or if
other is an ancestor of self.
Returns true if other is the same as self or if
self is an ancestor of other.
Returns the type for the given key in this named tuple type. Gives a compile error if this is not a named tuple type.
Returns all subclasses of this type.
Returns all ancestors of this type.
Returns the last Annotation with the given type
attached to this variable or NilLiteral if there are none.
Returns an array of annotations with the given type
attached to this variable, or an empty ArrayLiteral if there are none.
Returns the class of this type. With this you can, for example, obtain class
methods by invoking type.class.methods.
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.
Returns the constants and types defined by this type.
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).
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).
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).
Returns the instance type of this type, if it's a class type,
or self otherwise. This is the opposite of #class.
Returns the instance variables of this type.
Returns the keys in this named tuple type. Gives a compile error if this is not a named tuple type.
Returns the instance methods defined by this type, without including inherited methods.
Returns true if this type is nilable (if it has Nil amongst its types).
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") }} # => falseReturns 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.
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.
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.
Returns the direct subclasses of this type.
Returns the type variables of the generic type. If the type is not generic, an empty array is returned.
Returns true if this type is a union type, false otherwise.
See also: #union_types.
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?.