class TypedRb::Model::TmRangeLiteral

range literals

Attributes

end_range[R]
start_range[R]

Public Class Methods

new(start_range, end_range, node) click to toggle source
Calls superclass method TypedRb::Model::Expr::new
# File lib/typed/model/tm_range_literal.rb, line 8
def initialize(start_range, end_range, node)
  super(node)
  @start_range = start_range
  @end_range = end_range
end

Public Instance Methods

check_type(context) click to toggle source
# File lib/typed/model/tm_range_literal.rb, line 14
def check_type(context)
  start_range_type = start_range.check_type(context)
  end_range_type = end_range.check_type(context)
  max_type = start_range_type.max(end_range_type)

  type_var = Types::Polymorphism::TypeVariable.new('Range:T',
                                                   :node => node,
                                                   :gen_name => false,
                                                   :upper_bound => max_type,
                                                   :lower_bound => max_type)
  type_var.bind(max_type)
  Types::TyGenericObject.new(Range, [type_var], node)
end