Sha256: c2529cb1b1027193865a4edc63ff25f9090b7863f09cdf3261826050c58dff2c
Contents?: true
Size: 1.09 KB
Versions: 38
Compression:
Stored size: 1.09 KB
Contents
module Steep module Subtyping class VariableOccurence attr_reader :params attr_reader :returns def initialize @params = Set.new @returns = Set.new end def add_method_type(method_type) method_type.params.each_type do |type| each_var(type) do |var| params << var end end each_var(method_type.return_type) do |var| returns << var end method_type.block&.yield_self do |block| block.type.params.each_type do |type| each_var(type) do |var| params << var end end each_var(block.type.return_type) do |var| returns << var end end end def each_var(type, &block) type.free_variables.each(&block) end def strictly_return?(var) !params.member?(var) && returns.member?(var) end def self.from_method_type(method_type) self.new.tap do |occurence| occurence.add_method_type(method_type) end end end end end
Version data entries
38 entries across 38 versions & 1 rubygems