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.
-
#annotation(type : TypeNode) : Annotation | NilLiteral
Returns the last
Annotation
with the giventype
attached to this variable orNilLiteral
if there are none. -
#annotations(type : TypeNode) : Crystal::Macros::ArrayLiteral(Annotation)
Returns an array of annotations with the given
type
attached to this variable, or an emptyArrayLiteral
if there are none. -
#class : TypeNode
Returns the class of this type.
-
#class_vars : Crystal::Macros::ArrayLiteral(MetaVar)
Returns the class variables 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. -
#has_method?(name : StringLiteral | SymbolLiteral) : BoolLiteral
Returns
true
if this type has a method. -
#includers : Crystal::Macros::ArrayLiteral(TypeNode)
Returns all the types
self
is directly included in. -
#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.
-
#nilable? : BoolLiteral
Returns
true
if this type is nilable (if it hasNil
amongst its types). -
#overrides?(type : TypeNode, method : StringLiteral | SymbolLiteral | MacroId) : Bool
Determines if
self
overrides 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
true
if this type is a union type,false
otherwise. -
#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
! : Bool
!,
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash
hash(hasher) hash, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) 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(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io, root : String)from_json(string_or_io) from_json, from_yaml(string_or_io : String | IO) 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 the class variables of this type.
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 all the types self
is directly included in.
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") }} # => false
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 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?
.