1 package Class::MOP::Deprecated;
7 use Scalar::Util qw( blessed );
10 $VERSION = eval $VERSION;
11 our $AUTHORITY = 'cpan:STEVAN';
15 # features deprecated before 0.93
16 'Class::MOP::HAVE_ISAREV' => 0.93,
17 'Class::MOP::subname' => 0.93,
18 'Class::MOP::in_global_destruction' => 0.93,
20 'Class::MOP::Package::get_method_map' => 0.93,
22 'Class::MOP::Class::construct_class_instance' => 0.93,
23 'Class::MOP::Class::check_metaclass_compatibility' => 0.93,
24 'Class::MOP::Class::create_meta_instance' => 0.93,
25 'Class::MOP::Class::clone_instance' => 0.93,
26 'Class::MOP::Class::alias_method' => 0.93,
27 'Class::MOP::Class::compute_all_applicable_methods' => 0.93,
28 'Class::MOP::Class::compute_all_applicable_attributes' => 0.93,
29 'Class::MOP::Class::get_attribute_map' => 0.95,
31 'Class::MOP::Instance::bless_instance_structure' => 0.93,
33 'Class::MOP::Attribute::process_accessors' => 0.93,
35 'Class::MOP::Method::Accessor::initialize_body' => 0.93,
36 'Class::MOP::Method::Accessor::generate_accessor_method' => 0.93,
37 'Class::MOP::Method::Accessor::generate_reader_method' => 0.93,
38 'Class::MOP::Method::Accessor::generate_writer_method' => 0.93,
39 'Class::MOP::Method::Accessor::generate_predicate_method' => 0.93,
40 'Class::MOP::Method::Accessor::generate_clearer_method' => 0.93,
41 'Class::MOP::Method::Accessor::generate_accessor_method_inline' => 0.93,
42 'Class::MOP::Method::Accessor::generate_reader_method_inline' => 0.93,
43 'Class::MOP::Method::Accessor::generate_writer_method_inline' => 0.93,
44 'Class::MOP::Method::Accessor::generate_clearer_method_inline' => 0.93,
45 'Class::MOP::Method::Accessor::generate_predicate_method_inline' => 0.93,
47 'Class::MOP::Method::Constructor::meta_instance' => 0.93,
48 'Class::MOP::Method::Constructor::attributes' => 0.93,
49 'Class::MOP::Method::Constructor::initialize_body' => 0.93,
50 'Class::MOP::Method::Constructor::generate_constructor_method' => 0.93,
51 'Class::MOP::Method::Constructor::generate_constructor_method_inline' =>
54 # features deprecated after 0.93
61 my ( $class, %args ) = @_;
63 if ( defined( my $compat_version = delete $args{-compatible} ) ) {
64 $Registry{ (caller) } = $compat_version;
68 my $unknowns = join q{ }, keys %args;
69 cluck "Unknown argument(s) for $class->import: $unknowns.\n";
75 my ( $package, undef, undef, $feature ) = caller(1);
78 while ( $package && !defined( $compat_version = $Registry{$package} ) ) {
79 $package =~ s/ :: \w+ \z//xms or last;
82 my $deprecated_at = $DeprecatedAt{$feature}
83 or die "Unregistered deprecated feature: $feature";
85 if ( !defined($compat_version)
86 || $compat_version >= $DeprecatedAt{$feature} ) {
95 Class::MOP::Deprecated::warn(
96 "Class::MOP::HAVE_ISAREV is deprecated and will be removed in a future release. It has always returned 1 anyway."
102 Class::MOP::Deprecated::warn(
103 "Class::MOP::subname is deprecated. Please use Sub::Name directly.");
105 goto \&Sub::Name::subname;
108 sub in_global_destruction {
109 Class::MOP::Deprecated::warn(
110 "Class::MOP::in_global_destruction is deprecated. Please use Devel::GlobalDestruction directly."
112 require Devel::GlobalDestruction;
113 goto \&Devel::GlobalDestruction::in_global_destruction;
120 Class::MOP::Deprecated::warn(
121 'The get_method_map method has been made private.'
122 . " The public version is deprecated and will be removed in a future release.\n"
126 my $map = $self->_full_method_map;
128 $map->{$_} = $self->get_method($_)
129 for grep { !blessed( $map->{$_} ) } keys %{$map};
140 sub construct_class_instance {
141 Class::MOP::Deprecated::warn(
142 'The construct_class_instance method has been made private.'
143 . " The public version is deprecated and will be removed in a future release.\n"
145 shift->_construct_class_instance(@_);
148 sub check_metaclass_compatibility {
149 Class::MOP::Deprecated::warn(
150 'The check_metaclass_compatibility method has been made private.'
151 . " The public version is deprecated and will be removed in a future release.\n"
153 shift->_check_metaclass_compatibility(@_);
156 sub construct_instance {
157 Class::MOP::Deprecated::warn(
158 'The construct_instance method has been made private.'
159 . " The public version is deprecated and will be removed in a future release.\n"
161 shift->_construct_instance(@_);
164 sub create_meta_instance {
165 Class::MOP::Deprecated::warn(
166 'The create_meta_instance method has been made private.'
167 . " The public version is deprecated and will be removed in a future release.\n"
169 shift->_create_meta_instance(@_);
173 Class::MOP::Deprecated::warn(
174 'The clone_instance method has been made private.'
175 . " The public version is deprecated and will be removed in a future release.\n"
177 shift->_clone_instance(@_);
181 Class::MOP::Deprecated::warn(
182 "The alias_method method is deprecated. Use add_method instead.\n");
184 shift->add_method(@_);
187 sub compute_all_applicable_methods {
188 Class::MOP::Deprecated::warn(
189 'The compute_all_applicable_methods method is deprecated.'
190 . " Use get_all_methods instead.\n" );
195 class => $_->package_name,
196 code => $_, # sigh, overloading
198 } shift->get_all_methods(@_);
201 sub compute_all_applicable_attributes {
202 Class::MOP::Deprecated::warn(
203 'The compute_all_applicable_attributes method has been deprecated.'
204 . " Use get_all_attributes instead.\n" );
206 shift->get_all_attributes(@_);
209 sub get_attribute_map {
210 Class::MOP::Deprecated::warn(
211 "The get_attribute_map method has been deprecated.\n");
213 shift->_attribute_map(@_);
217 Class::MOP::Instance;
219 sub bless_instance_structure {
220 Class::MOP::Deprecated::warn(
221 'The bless_instance_structure method is deprecated.'
222 . " It will be removed in a future release.\n" );
224 my ( $self, $instance_structure ) = @_;
225 bless $instance_structure, $self->_class_name;
229 Class::MOP::Attribute;
231 sub process_accessors {
232 Class::MOP::Deprecated::warn(
233 'The process_accessors method has been made private.'
234 . " The public version is deprecated and will be removed in a future release.\n"
236 shift->_process_accessors(@_);
240 Class::MOP::Method::Accessor;
242 sub initialize_body {
243 Class::MOP::Deprecated::warn(
244 'The initialize_body method has been made private.'
245 . " The public version is deprecated and will be removed in a future release.\n"
247 shift->_initialize_body;
250 sub generate_accessor_method {
251 Class::MOP::Deprecated::warn(
252 'The generate_accessor_method method has been made private.'
253 . " The public version is deprecated and will be removed in a future release.\n"
255 shift->_generate_accessor_method;
258 sub generate_reader_method {
259 Class::MOP::Deprecated::warn(
260 'The generate_reader_method method has been made private.'
261 . " The public version is deprecated and will be removed in a future release.\n"
263 shift->_generate_reader_method;
266 sub generate_writer_method {
267 Class::MOP::Deprecated::warn(
268 'The generate_writer_method method has been made private.'
269 . " The public version is deprecated and will be removed in a future release.\n"
271 shift->_generate_writer_method;
274 sub generate_predicate_method {
275 Class::MOP::Deprecated::warn(
276 'The generate_predicate_method method has been made private.'
277 . " The public version is deprecated and will be removed in a future release.\n"
279 shift->_generate_predicate_method;
282 sub generate_clearer_method {
283 Class::MOP::Deprecated::warn(
284 'The generate_clearer_method method has been made private.'
285 . " The public version is deprecated and will be removed in a future release.\n"
287 shift->_generate_clearer_method;
290 sub generate_accessor_method_inline {
291 Class::MOP::Deprecated::warn(
292 'The generate_accessor_method_inline method has been made private.'
293 . " The public version is deprecated and will be removed in a future release.\n"
295 shift->_generate_accessor_method_inline;
298 sub generate_reader_method_inline {
299 Class::MOP::Deprecated::warn(
300 'The generate_reader_method_inline method has been made private.'
301 . " The public version is deprecated and will be removed in a future release.\n"
303 shift->_generate_reader_method_inline;
306 sub generate_writer_method_inline {
307 Class::MOP::Deprecated::warn(
308 'The generate_writer_method_inline method has been made private.'
309 . " The public version is deprecated and will be removed in a future release.\n"
311 shift->_generate_writer_method_inline;
314 sub generate_predicate_method_inline {
315 Class::MOP::Deprecated::warn(
316 'The generate_predicate_method_inline method has been made private.'
317 . " The public version is deprecated and will be removed in a future release.\n"
319 shift->_generate_predicate_method_inline;
322 sub generate_clearer_method_inline {
323 Class::MOP::Deprecated::warn(
324 'The generate_clearer_method_inline method has been made private.'
325 . " The public version is deprecated and will be removed in a future release.\n"
327 shift->_generate_clearer_method_inline;
331 Class::MOP::Method::Constructor;
334 Class::MOP::Deprecated::warn(
335 'The meta_instance method has been made private.'
336 . " The public version is deprecated and will be removed in a future release.\n"
338 shift->_meta_instance;
342 Class::MOP::Deprecated::warn(
343 'The attributes method has been made private.'
344 . " The public version is deprecated and will be removed in a future release.\n"
347 return shift->_attributes;
350 sub initialize_body {
351 Class::MOP::Deprecated::warn(
352 'The initialize_body method has been made private.'
353 . " The public version is deprecated and will be removed in a future release.\n"
355 shift->_initialize_body;
358 sub generate_constructor_method {
359 Class::MOP::Deprecated::warn(
360 'The generate_constructor_method method has been made private.'
361 . " The public version is deprecated and will be removed in a future release.\n"
363 shift->_generate_constructor_method;
366 sub generate_constructor_method_inline {
367 Class::MOP::Deprecated::warn(
368 'The generate_constructor_method_inline method has been made private.'
369 . " The public version is deprecated and will be removed in a future release.\n"
371 shift->_generate_constructor_method_inline;
382 Class::MOP::Deprecated - List of deprecated methods
386 use Class::MOP::Deprecated -compatible => $version;
390 This class provides methods that have been deprecated but remain for backward
393 If you specify C<< -compatible => $version >>, you can use deprecated features
394 without warnings. Note that this special treatment is limited to the package
395 that loads C<Class::MOP::Deprecated>.
399 Goro Fuji E<lt>gfuji@cpan.orgE<gt>
401 =head1 COPYRIGHT AND LICENSE
403 Copyright 2006-2010 by Infinity Interactive, Inc.
405 L<http://www.iinteractive.com>
407 This library is free software; you can redistribute it and/or modify
408 it under the same terms as Perl itself.