Represents a type in the program, like Int32
or String
.
Returns true
if other is an ancestor of self
.
Returns true
if self
is the same as other or if other is an ancestor of self
.
Returns true
if self
is an ancestor of other.
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.
Returns true
if self
is abstract, otherwise false
.
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.
Returns true
if self
is a #class
, otherwise false
.
Returns the class variables of this type.
Returns a constant defined in this type.
Returns the constants and types defined by this type.
Returns true
if this type has an attribute.
Returns true
if this type has a constant.
Returns true
if this type has a method.
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.
Returns the instance variables of this type.
Returns the keys in this named tuple type.
Returns the instance methods defined by this type, without including inherited methods.
Returns true
if self
is a module
, otherwise false
.
Returns the fully qualified name of this type.
Returns true
if self
is nilable (if it has Nil
amongst its types), otherwise false
.
Determines if self
overrides any method named method from type type.
Returns self
.
Returns self
.
Returns the number of elements in this tuple type or tuple metaclass type.
Returns true
if self
is a struct
, otherwise false
.
Returns the direct subclasses of this type.
Returns the direct superclass of this type.
Returns the type variables of the generic type.
Returns true
if self
is a union type, otherwise false
.
Returns the types forming a union type, if this is a union type.
Crystal::Macros::ASTNode
Reference
Reference
Object
Object
Returns true
if other is an ancestor of self
.
Returns true
if self
is the same as other or if other is an ancestor of self
.
Returns true
if self
is an ancestor of other.
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 true
if self
is abstract, otherwise false
.
module One; end abstract struct Two; end class Three; end abstract class Four; end {{One.abstract?}} # => false {{Two.abstract?}} # => true {{Three.abstract?}} # => false {{Four.abstract?}} # => true
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 true
if self
is a #class
, otherwise false
.
module One; end class Two; end struct Three; end {{One.class?}} # => false {{Two.class?}} # => true {{Three.class?}} # => false
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 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 self
is a module
, otherwise false
.
module One; end class Two; end struct Three; end {{One.module?}} # => true {{Two.module?}} # => false {{Three.module?}} # => false
Returns the fully qualified name of this type. Optionally without generic_args if self
is a generic type; see #type_vars
.
class Foo(T); end module Bar::Baz; end {{Bar::Baz.name}} # => Bar::Baz {{Foo.name}} # => Foo(T) {{Foo.name(generic_args: false)}} # => Foo
Returns true
if self
is nilable (if it has Nil
amongst its types), otherwise false
.
{{String.nilable?}} # => false {{String?.nilable?}} # => true {{Union(String, Bool, Nil).nilable?}} # => true
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 true
if self
is a struct
, otherwise false
.
module One; end class Two; end struct Three; end {{One.struct?}} # => false {{Two.struct?}} # => false {{Three.struct?}} # => true
Returns the direct subclasses of this type.
Returns the direct superclass 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 self
is a union type, otherwise false
.
See also: #union_types
.
{{String.union?}} # => false {{String?.union?}} # => true {{Union(String, Bool).union?}} # => true
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–2020 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.35.1/Crystal/Macros/TypeNode.html