class
Bindgen::Processor::BlockOverloads
- Bindgen::Processor::BlockOverloads
- Bindgen::Processor::Base
- Reference
- Object
Overview
Generates overloads for methods that accept a block argument, and are told apart by it alone. Those methods are ambiguous because Crystal does not permit overloading through different type restrictions on the block; this processor rectifies this by requiring each overload to also specify the types of the block parameters. For example, the following code
def f(& : Int32 ->)
end
def f(& : Bool ->)
end
def f(& : Int32, Bool ->)
end
is transformed into
def f(_type1_ : Int32.class, & : Int32 ->)
end
def f(_type1_ : Bool.class, & : Bool ->)
end
def f(_type1_ : Int32.class, _type2_ : Bool.class, & : Int32, Bool ->)
end
The type arguments go before any other arguments, which the overloads
share: on_changed(_type1_ : Int32.class, type : ConnectionType, &).
Unambiguous methods that accept block arguments are unaffected, and so
are overloads differing in the other arguments.
Defined in:
bindgen/processor/block_overloads.crConstant Summary
-
Log =
::Log.for(self) -
Generates overloads for methods that accept a block argument, and are told apart by it alone. Those methods are ambiguous because Crystal does not permit overloading through different type restrictions on the block; this processor rectifies this by requiring each overload to also specify the types of the block parameters. For example, the following code
def f(& : Int32 ->) end def f(& : Bool ->) end def f(& : Int32, Bool ->) endis transformed into
def f(_type1_ : Int32.class, & : Int32 ->) end def f(_type1_ : Bool.class, & : Bool ->) end def f(_type1_ : Int32.class, _type2_ : Bool.class, & : Int32, Bool ->) endThe type arguments go before any other arguments, which the overloads share:
on_changed(_type1_ : Int32.class, type : ConnectionType, &). Unambiguous methods that accept block arguments are unaffected, and so are overloads differing in the other arguments. -
PLATFORM =
Graph::Platform::Crystal
Instance Method Summary
-
#visit_class(klass)
Visits a
Graph::Class. -
#visit_platform_specific(specific)
Visits a
Graph::PlatformSpecific.
Instance methods inherited from class Bindgen::Processor::Base
inherited_rules(class_name : String, & : TypeDatabase::TypeConfig -> TypeDatabase::KeepAlive) : TypeDatabase::KeepAlive
inherited_rules,
process(graph : Graph::Container, doc : Parser::Document)
process,
unmatched_patterns(klass : Graph::Class, rules : TypeDatabase::KeepAlive) : Array(Regex)
unmatched_patterns
Constructor methods inherited from class Bindgen::Processor::Base
new(config : Configuration, db : TypeDatabase)
new
Instance methods inherited from module Bindgen::Graph::Visitor
visit_alias(alias_name)
visit_alias,
visit_children(container : Container)
visit_children,
visit_class(klass)
visit_class,
visit_constant(constant)
visit_constant,
visit_enum(enumeration)
visit_enum,
visit_library(library)
visit_library,
visit_method(method)
visit_method,
visit_namespace(ns)
visit_namespace,
visit_node(node : Node)
visit_node,
visit_node?(node : Node)
visit_node?,
visit_platform_specific(specific)
visit_platform_specific,
visit_struct(structure)
visit_struct,
visit_union(structure)
visit_union
Instance Method Detail
Visits a Graph::Class. The default implementation calls
#visit_children to visit all child nodes.
Visits a Graph::PlatformSpecific.