summaryrefslogtreecommitdiff
path: root/lib/test/unit/deprecate.rb
blob: 60f0a52d3e44098adcb27f393240d1b5fd9a9fe7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
############################################################
# This file is imported from a different project.
# DO NOT make modifications in this repo.
# File a patch instead and assign it to Ryan Davis
############################################################

class Module # define deprecation api
  DEPS = Hash.new { |h,k| h[k] = {} }

  def tu_deprecation_warning old, new = nil, kaller = nil
    kaller ||= caller[1]
    unless DEPS[old][kaller] then
      msg = "#{self}##{old} deprecated. "
      msg += new ? "Use ##{new}" : "No replacement is provided"
      msg += ". From #{kaller}."
      warn msg
    end
    DEPS[old][kaller] = true
  end

  def tu_deprecate old, new
    class_eval <<-EOM
      def #{old} *args, &block
        cls, clr = self.class, caller.first
        self.class.tu_deprecation_warning #{old.inspect}, #{new.inspect}, clr
        #{new}(*args, &block)
      end
    EOM
  end
end