Prep for removing deprecated features or making them throw an error.
[gitmo/Moose.git] / lib / Class / MOP / Deprecated.pm
1 package Class::MOP::Deprecated;
2
3 use strict;
4 use warnings;
5
6 use Package::DeprecationManager -deprecations => {
7     'Class::MOP::HAVE_ISAREV'           => '0.93',
8     'Class::MOP::subname'               => '0.93',
9     'Class::MOP::in_global_destruction' => '0.93',
10
11     'Class::MOP::Package::get_method_map' => '0.93',
12
13     'Class::MOP::Class::construct_class_instance'          => '0.93',
14     'Class::MOP::Class::check_metaclass_compatibility'     => '0.93',
15     'Class::MOP::Class::create_meta_instance'              => '0.93',
16     'Class::MOP::Class::clone_instance'                    => '0.93',
17     'Class::MOP::Class::alias_method'                      => '0.93',
18     'Class::MOP::Class::compute_all_applicable_methods'    => '0.93',
19     'Class::MOP::Class::compute_all_applicable_attributes' => '0.93',
20     'Class::MOP::Class::get_attribute_map'                 => '0.95',
21
22     'Class::MOP::Instance::bless_instance_structure' => '0.93',
23
24     'Class::MOP::Attribute::process_accessors' => '0.93',
25
26     'Class::MOP::Method::Accessor::initialize_body'                 => '0.93',
27     'Class::MOP::Method::Accessor::generate_accessor_method'        => '0.93',
28     'Class::MOP::Method::Accessor::generate_reader_method'          => '0.93',
29     'Class::MOP::Method::Accessor::generate_writer_method'          => '0.93',
30     'Class::MOP::Method::Accessor::generate_predicate_method'       => '0.93',
31     'Class::MOP::Method::Accessor::generate_clearer_method'         => '0.93',
32     'Class::MOP::Method::Accessor::generate_accessor_method_inline' => '0.93',
33     'Class::MOP::Method::Accessor::generate_reader_method_inline'   => '0.93',
34     'Class::MOP::Method::Accessor::generate_writer_method_inline'   => '0.93',
35     'Class::MOP::Method::Accessor::generate_clearer_method_inline'  => '0.93',
36     'Class::MOP::Method::Accessor::generate_predicate_method_inline' =>
37         '0.93',
38
39     'Class::MOP::Method::Constructor::meta_instance'               => '0.93',
40     'Class::MOP::Method::Constructor::attributes'                  => '0.93',
41     'Class::MOP::Method::Constructor::initialize_body'             => '0.93',
42     'Class::MOP::Method::Constructor::generate_constructor_method' => '0.93',
43     'Class::MOP::Method::Constructor::generate_constructor_method_inline' =>
44         '0.93',
45 };
46
47
48 package
49     Class::MOP;
50
51 sub HAVE_ISAREV () {
52     Class::MOP::Deprecated::deprecated(
53         "Class::MOP::HAVE_ISAREV is deprecated and will be removed in a future release. It has always returned 1 anyway. This function will be removed in the Moose 2.0200 release."
54     );
55     return 1;
56 }
57
58 sub subname {
59     Class::MOP::Deprecated::deprecated(
60         "Class::MOP::subname is deprecated. Please use Sub::Name directly. This function will be removed in the Moose 2.0200 release.");
61     require Sub::Name;
62     goto \&Sub::Name::subname;
63 }
64
65 sub in_global_destruction {
66     Class::MOP::Deprecated::deprecated(
67         "Class::MOP::in_global_destruction is deprecated. Please use Devel::GlobalDestruction directly. This function will be removed in the Moose 2.0200 release."
68     );
69     require Devel::GlobalDestruction;
70     goto \&Devel::GlobalDestruction::in_global_destruction;
71 }
72
73 package
74     Class::MOP::Package;
75
76 use Scalar::Util qw( blessed );
77
78 sub get_method_map {
79     Class::MOP::Deprecated::deprecated(
80               'The get_method_map method has been made private.'
81             . ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
82     );
83     my $self = shift;
84
85     return { map { $_->name => $_ } $self->_get_local_methods };
86 }
87
88 package
89     Class::MOP::Module;
90
91 package
92     Class::MOP::Class;
93
94 sub construct_class_instance {
95     Class::MOP::Deprecated::deprecated(
96               'The construct_class_instance method has been made private.'
97             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
98     );
99     shift->_construct_class_instance(@_);
100 }
101
102 sub check_metaclass_compatibility {
103     Class::MOP::Deprecated::deprecated(
104         'The check_metaclass_compatibility method has been made private.'
105             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
106     );
107     shift->_check_metaclass_compatibility(@_);
108 }
109
110 sub construct_instance {
111     Class::MOP::Deprecated::deprecated(
112               'The construct_instance method has been made private.'
113             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
114     );
115     shift->_construct_instance(@_);
116 }
117
118 sub create_meta_instance {
119     Class::MOP::Deprecated::deprecated(
120               'The create_meta_instance method has been made private.'
121             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
122     );
123     shift->_create_meta_instance(@_);
124 }
125
126 sub clone_instance {
127     Class::MOP::Deprecated::deprecated(
128               'The clone_instance method has been made private.'
129             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
130     );
131     shift->_clone_instance(@_);
132 }
133
134 sub alias_method {
135     Class::MOP::Deprecated::deprecated(
136         'The alias_method method is deprecated. Use add_method instead. This method will be removed in the Moose 2.0200 release.');
137
138     shift->add_method(@_);
139 }
140
141 sub compute_all_applicable_methods {
142     Class::MOP::Deprecated::deprecated(
143               'The compute_all_applicable_methods method is deprecated.'
144             . ' Use get_all_methods instead. This method will be removed in the Moose 2.0200 release.' );
145
146     return map {
147         {
148             name  => $_->name,
149             class => $_->package_name,
150             code  => $_,                 # sigh, overloading
151         },
152     } shift->get_all_methods(@_);
153 }
154
155 sub compute_all_applicable_attributes {
156     Class::MOP::Deprecated::deprecated(
157         'The compute_all_applicable_attributes method has been deprecated.'
158             . ' Use get_all_attributes instead. This method will be removed in the Moose 2.0200 release.' );
159
160     shift->get_all_attributes(@_);
161 }
162
163 sub get_attribute_map {
164     Class::MOP::Deprecated::deprecated(
165         'The get_attribute_map method has been deprecated. This method will be removed in the Moose 2.0200 release.');
166
167     shift->_attribute_map(@_);
168 }
169
170 package
171     Class::MOP::Instance;
172
173 sub bless_instance_structure {
174     Class::MOP::Deprecated::deprecated(
175               'The bless_instance_structure method is deprecated.'
176             . ' This method will be removed in the Moose 2.0200 release.' );
177
178     my ( $self, $instance_structure ) = @_;
179     bless $instance_structure, $self->_class_name;
180 }
181
182 package
183     Class::MOP::Attribute;
184
185 sub process_accessors {
186     Class::MOP::Deprecated::deprecated(
187               'The process_accessors method has been made private.'
188             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
189     );
190     shift->_process_accessors(@_);
191 }
192
193 package
194     Class::MOP::Method::Accessor;
195
196 sub initialize_body {
197     Class::MOP::Deprecated::deprecated(
198               'The initialize_body method has been made private.'
199             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
200     );
201     shift->_initialize_body;
202 }
203
204 sub generate_accessor_method {
205     Class::MOP::Deprecated::deprecated(
206               'The generate_accessor_method method has been made private.'
207             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
208     );
209     shift->_generate_accessor_method;
210 }
211
212 sub generate_reader_method {
213     Class::MOP::Deprecated::deprecated(
214               'The generate_reader_method method has been made private.'
215             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
216     );
217     shift->_generate_reader_method;
218 }
219
220 sub generate_writer_method {
221     Class::MOP::Deprecated::deprecated(
222               'The generate_writer_method method has been made private.'
223             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
224     );
225     shift->_generate_writer_method;
226 }
227
228 sub generate_predicate_method {
229     Class::MOP::Deprecated::deprecated(
230               'The generate_predicate_method method has been made private.'
231             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
232     );
233     shift->_generate_predicate_method;
234 }
235
236 sub generate_clearer_method {
237     Class::MOP::Deprecated::deprecated(
238               'The generate_clearer_method method has been made private.'
239             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
240     );
241     shift->_generate_clearer_method;
242 }
243
244 sub generate_accessor_method_inline {
245     Class::MOP::Deprecated::deprecated(
246         'The generate_accessor_method_inline method has been made private.'
247             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
248     );
249     shift->_generate_accessor_method_inline;
250 }
251
252 sub generate_reader_method_inline {
253     Class::MOP::Deprecated::deprecated(
254         'The generate_reader_method_inline method has been made private.'
255             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
256     );
257     shift->_generate_reader_method_inline;
258 }
259
260 sub generate_writer_method_inline {
261     Class::MOP::Deprecated::deprecated(
262         'The generate_writer_method_inline method has been made private.'
263             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
264     );
265     shift->_generate_writer_method_inline;
266 }
267
268 sub generate_predicate_method_inline {
269     Class::MOP::Deprecated::deprecated(
270         'The generate_predicate_method_inline method has been made private.'
271             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
272     );
273     shift->_generate_predicate_method_inline;
274 }
275
276 sub generate_clearer_method_inline {
277     Class::MOP::Deprecated::deprecated(
278         'The generate_clearer_method_inline method has been made private.'
279             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
280     );
281     shift->_generate_clearer_method_inline;
282 }
283
284 package
285     Class::MOP::Method::Constructor;
286
287 sub meta_instance {
288     Class::MOP::Deprecated::deprecated(
289               'The meta_instance method has been made private.'
290             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
291     );
292     shift->_meta_instance;
293 }
294
295 sub attributes {
296     Class::MOP::Deprecated::deprecated(
297               'The attributes method has been made private.'
298             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
299     );
300
301     return shift->_attributes;
302 }
303
304 sub initialize_body {
305     Class::MOP::Deprecated::deprecated(
306               'The initialize_body method has been made private.'
307             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
308     );
309     shift->_initialize_body;
310 }
311
312 sub generate_constructor_method {
313     Class::MOP::Deprecated::deprecated(
314               'The generate_constructor_method method has been made private.'
315             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
316     );
317     shift->_generate_constructor_method;
318 }
319
320 sub generate_constructor_method_inline {
321     Class::MOP::Deprecated::deprecated(
322         'The generate_constructor_method_inline method has been made private.'
323             .  ' The public version is deprecated. This method will be removed in the Moose 2.0200 release.'
324     );
325     shift->_generate_constructor_method_inline;
326 }
327
328 1;
329
330 __END__
331
332 =pod
333
334 =head1 NAME 
335
336 Class::MOP::Deprecated - Manages deprecation warnings for Class::MOP
337
338 =head1 DESCRIPTION
339
340     use Class::MOP::Deprecated -api_version => $version;
341
342 =head1 FUNCTIONS
343
344 This module manages deprecation warnings for features that have been
345 deprecated in Class::MOP.
346
347 If you specify C<< -api_version => $version >>, you can use deprecated features
348 without warnings. Note that this special treatment is limited to the package
349 that loads C<Class::MOP::Deprecated>.
350
351 =cut