class Yadriggy::MethodType
Type
of methods.
Public Class Methods
new(method_def=nil, param_type_array, result_type)
click to toggle source
@param [Parameters|nil] method_def
method definition. @param [Array<Type|Module>|DynType] param_type_array parameter types.
`param_type_array` can be {DynType}.
@param [Type|Module|DynType] result_type
the result type.
# File lib/yadriggy/type.rb, line 477 def initialize(method_def=nil, param_type_array, result_type) @param_types = if param_type_array.is_a?(Array) param_type_array.map do |t| t.is_a?(Type) ? t : RubyClass[t] end else param_type_array end @result_type = if result_type.is_a?(Type) result_type else RubyClass[result_type] end @method_def = method_def end
Public Instance Methods
<=(t)
click to toggle source
@api private
# File lib/yadriggy/type.rb, line 515 def <= (t) if t.is_super_of?(self) true else mt = MethodType.role(t) !mt.nil? && @result_type <= mt.result_type && compare_params(mt.params, @param_types) end end
==(t)
click to toggle source
@api private
# File lib/yadriggy/type.rb, line 504 def == (t) mt = MethodType.role(t) !mt.nil? && @result_type == mt.result_type && @param_types == mt.params end
hash()
click to toggle source
@api private
# File lib/yadriggy/type.rb, line 510 def hash @result_type.hash + @param_types.hash end
method_def()
click to toggle source
@return [Parameters] the method definition.
# File lib/yadriggy/type.rb, line 501 def method_def() @method_def end
name()
click to toggle source
Obtains the name of this type. @return [String] the type name.
# File lib/yadriggy/type.rb, line 533 def name name = '' if @param_types.is_a?(Array) name << '(' << @param_types.map{|e| e.name }.join(',') << ')' else name << @param_types.name end name << '->' << @result_type.name name end
params()
click to toggle source
Gets an array of the parameter types. @return [Array<Type>|DynType] the parameter types.
# File lib/yadriggy/type.rb, line 495 def params() @param_types end
result()
click to toggle source
@return [ResultType] the result type. Note that a {ResultType} object
is always returned.
# File lib/yadriggy/type.rb, line 527 def result() ResultType.new(@result_type, @method_def) end
result_type()
click to toggle source
@return [Type] the result type.
# File lib/yadriggy/type.rb, line 498 def result_type() @result_type end
Private Instance Methods
compare_params(p, q)
click to toggle source
@return [Boolean] true if p <= q
# File lib/yadriggy/type.rb, line 547 def compare_params(p, q) if p.is_a?(Array) && q.is_a?(Array) p.size == q.size && (0...p.size).reduce(true) {|b,i| b && p[i] <= q[i] } else DynType == q end end