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