class Steep::TypeInference::LocalVariableTypeEnv

def initialize(subtyping:, declared_types:, assigned_types:, self_type:)

def initialize(subtyping:, declared_types:, assigned_types:, self_type:)
  @subtyping = subtyping
  @self_type = self_type
  @declared_types = declared_types
  @assigned_types = assigned_types
  unless (intersection = Set.new(declared_types.keys) & Set.new(assigned_types.keys)).empty?
    raise "Declared types and assigned types should be disjoint: #{intersection}"
  end
end