struct Crystal::DefWithMetadata

Overview

A Def with some metadata to speed up matching it against a call signature, or against other defs:

Defined in:

compiler/crystal/semantic/restrictions.cr
compiler/crystal/types.cr

Constructors

Instance Method Summary

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

def self.new(min_size : Int32, max_size : Int32, yields : Bool, def __arg0 : Def) #

[View source]
def self.new(a_def : Def) #

[View source]

Instance Method Detail

def clone #

[View source]
def 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.


[View source]
def compare_specific_positional(other : DefWithMetadata) #

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.


[View source]
def compare_strictness(other : DefWithMetadata, self_owner, *, other_owner = self_owner) #

Compares two defs based on overload order. Has a return value similar to Comparable; that is, self.compare_strictness(other) returns:

  • -1 if self is a stricter def than other;
  • 1 if other is a stricter def than self;
  • 0 if self and other are equivalent defs;
  • nil if neither def is stricter than the other.

[View source]
def compare_strictness_old(other : DefWithMetadata, self_owner, *, other_owner = self_owner) #

[View source]
def copy_with(min_size _min_size = @min_size, max_size _max_size = @max_size, yields _yields = @yields, def _def = @def) #

[View source]
def def : Def #

def each_corresponding_param(other : DefWithMetadata, self_named_args, other_named_args, &) #

Yields each pair of corresponding parameters between self and other.


[View source]
def max_size : Int32 #

def min_size : Int32 #

def named_arguments #

[View source]
def old_min_args_size #

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


[View source]
def old_restriction_of?(other : DefWithMetadata, owner) #

[View source]
def required_named_arguments #

[View source]
def stricter_pair_to_num(self_stricter, other_stricter) #

[View source]
def yields : Bool #