Sha256: 5ab671c27cf28e13e6ec21d0fcddc6849fc47a0550bc634b0858ab9ab8710db6
Contents?: true
Size: 1.12 KB
Versions: 18
Compression:
Stored size: 1.12 KB
Contents
module Steep module AST module Types class Tuple attr_reader :types attr_reader :location def initialize(types:, location: nil) @types = types @location = location end def ==(other) other.is_a?(Tuple) && other.types == types end def hash self.class.hash ^ types.hash end alias eql? == def subst(s) self.class.new(location: location, types: types.map {|ty| ty.subst(s) }) end def to_s "[#{types.join(", ")}]" end def free_variables() @fvs ||= Set.new.tap do |set| types.each do |type| set.merge(type.free_variables) end end end include Helper::ChildrenLevel def each_child(&block) types.each(&block) end def level [0] + level_of_children(types) end def with_location(new_location) self.class.new(types: types, location: new_location) end end end end end
Version data entries
18 entries across 18 versions & 1 rubygems