struct
Crystal::DefWithMetadata
Overview
A Def with some metadata to speed up matching it against a call signature, or against other defs:
- max_size: the maximum number of arguments that can be passed to the method
- min_size: the minimum number of arguments that can be passed to the method
- yields: whether the method has a block
Defined in:
compiler/crystal/semantic/restrictions.crcompiler/crystal/types.cr
Constructors
Instance Method Summary
- #clone
-
#compare_specific_named(other : DefWithMetadata, self_arg : Arg | Nil, other_arg : Arg | Nil)
Compares two defs based on whether one def's given named parameter is more specific than the other's.
-
#compare_specific_positional(other : DefWithMetadata)
Compares two defs based on whether one def's positional parameters are more specific than the other's.
-
#compare_strictness(other : DefWithMetadata, self_owner, *, other_owner = self_owner)
Compares two defs based on overload order.
- #compare_strictness_old(other : DefWithMetadata, self_owner, *, other_owner = self_owner)
- #copy_with(min_size _min_size = @min_size, max_size _max_size = @max_size, yields _yields = @yields, def _def = @def)
- #def : Def
-
#each_corresponding_param(other : DefWithMetadata, self_named_args, other_named_args, &)
Yields each pair of corresponding parameters between
selfand other. - #max_size : Int32
- #min_size : Int32
- #named_arguments
-
#old_min_args_size
this is part of
Crystal::Def#min_max_args_sizesbefore #10711, provided that-Dpreview_overload_orderis not in effect TODO: figure out if this can be derived fromself.min_size - #old_restriction_of?(other : DefWithMetadata, owner)
- #required_named_arguments
- #stricter_pair_to_num(self_stricter, other_stricter)
- #yields : Bool
Instance methods inherited from struct Struct
==(other : YAML::Any)==(other) : Bool ==, hash(hasher) hash, inspect(io : IO) : Nil inspect, pretty_print(pp) : Nil pretty_print, to_s(io : IO) : Nil to_s
Class methods inherited from struct Struct
pre_initialize(address : Pointer) : Nil
pre_initialize
Instance methods inherited from struct Value
==(other : Log::Metadata::Value)==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==, dup dup
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(hasher)
hash hash, in?(collection : Object) : Bool
in?(*values : Object) : Bool in?, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
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) : Nil
to_json : String to_json, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json, to_s(io : IO) : Nil
to_s : String to_s, to_yaml(io : IO) : Nil
to_yaml : String to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io : String | IO, root : String)from_json(string_or_io : String | IO) from_json, from_yaml(string_or_io : String | IO) from_yaml
Macros inherited from class Object
class_getter(*names, &block)
class_getter,
class_getter!(*names)
class_getter!,
class_getter?(*names, &block)
class_getter?,
class_property(*names, &block)
class_property,
class_property!(*names)
class_property!,
class_property?(*names, &block)
class_property?,
class_setter(*names)
class_setter,
def_clone
def_clone,
def_equals(*fields)
def_equals,
def_equals_and_hash(*fields)
def_equals_and_hash,
def_hash(*fields)
def_hash,
delegate(*methods, to object)
delegate,
forward_missing_to(delegate)
forward_missing_to,
getter(*names, &block)
getter,
getter!(*names)
getter!,
getter?(*names, &block)
getter?,
property(*names, &block)
property,
property!(*names)
property!,
property?(*names, &block)
property?,
setter(*names)
setter
Constructor Detail
Instance Method Detail
Compares two defs based on whether one def's given named parameter is more specific than the other's.
Compares two defs based on whether one def's positional parameters are more specific than the other's.
Required parameters are more specific than optional parameters, and single splat parameters are the least specific.
Compares two defs based on overload order. Has a return value similar to
Comparable; that is, self.compare_strictness(other) returns:
-1ifselfis a stricter def than other;1if other is a stricter def thanself;0ifselfand other are equivalent defs;nilif neither def is stricter than the other.
Yields each pair of corresponding parameters between self and other.
this is part of Crystal::Def#min_max_args_sizes before #10711, provided
that -Dpreview_overload_order is not in effect
TODO figure out if this can be derived from self.min_size