File Coverage

blib/lib/Sub/HandlesVia/CodeGenerator.pm.mite.pm
Criterion Covered Total %
statement 147 183 80.3
branch 55 132 41.6
condition 16 36 44.4
subroutine 14 15 93.3
pod 2 5 40.0
total 234 371 63.0


line stmt bran cond sub pod time code
1             {
2              
3             use strict;
4 92     92   746 use warnings;
  92         259  
  92         2819  
5 92     92   665 no warnings qw( once void );
  92         261  
  92         2755  
6 92     92   558  
  92         278  
  92         13819  
7             our $USES_MITE = "Mite::Class";
8             our $MITE_SHIM = "Sub::HandlesVia::Mite";
9             our $MITE_VERSION = "0.010008";
10              
11             # Mite keywords
12             BEGIN {
13             my ( $SHIM, $CALLER ) =
14 92     92   573 ( "Sub::HandlesVia::Mite", "Sub::HandlesVia::CodeGenerator" );
15             (
16             *after, *around, *before, *extends, *field,
17             *has, *param, *signature_for, *with
18             )
19             = do {
20 92         293  
21             no warnings 'redefine';
22             (
23 92     92   737 sub { $SHIM->HANDLE_after( $CALLER, "class", @_ ) },
  92         308  
  92         23447  
24             sub { $SHIM->HANDLE_around( $CALLER, "class", @_ ) },
25 0         0 sub { $SHIM->HANDLE_before( $CALLER, "class", @_ ) },
26 0         0 sub { },
27 0         0 sub { $SHIM->HANDLE_has( $CALLER, field => @_ ) },
28             sub { $SHIM->HANDLE_has( $CALLER, has => @_ ) },
29 0         0 sub { $SHIM->HANDLE_has( $CALLER, param => @_ ) },
30 2208         5900 sub { $SHIM->HANDLE_signature_for( $CALLER, "class", @_ ) },
31 0         0 sub { $SHIM->HANDLE_with( $CALLER, @_ ) },
32 0         0 );
33 0         0 }
34 92         18632  
35             # Mite imports
36             BEGIN {
37             require Scalar::Util;
38             *STRICT = \&Sub::HandlesVia::Mite::STRICT;
39             *bare = \&Sub::HandlesVia::Mite::bare;
40 92     92   737 *blessed = \&Scalar::Util::blessed;
41 92         414 *carp = \&Sub::HandlesVia::Mite::carp;
42 92         311 *confess = \&Sub::HandlesVia::Mite::confess;
43 92         316 *croak = \&Sub::HandlesVia::Mite::croak;
44 92         322 *false = \&Sub::HandlesVia::Mite::false;
45 92         274 *guard = \&Sub::HandlesVia::Mite::guard;
46 92         260 *lazy = \&Sub::HandlesVia::Mite::lazy;
47 92         278 *ro = \&Sub::HandlesVia::Mite::ro;
48 92         326 *rw = \&Sub::HandlesVia::Mite::rw;
49 92         266 *rwp = \&Sub::HandlesVia::Mite::rwp;
50 92         212 *true = \&Sub::HandlesVia::Mite::true;
51 92         262 }
52 92         283  
53 92         3522 # Gather metadata for constructor and destructor
54             no strict 'refs';
55             my $class = shift;
56             $class = ref($class) || $class;
57             my $linear_isa = mro::get_linear_isa($class);
58 92     92   689 return {
  92         301  
  92         185896  
59 92     92   231 BUILD => [
60 92   33     514 map { ( *{$_}{CODE} ) ? ( *{$_}{CODE} ) : () }
61 92         589 map { "$_\::BUILD" } reverse @$linear_isa
62             ],
63             DEMOLISH => [
64 92 50       218 map { ( *{$_}{CODE} ) ? ( *{$_}{CODE} ) : () }
  92         748  
  0         0  
65 92         410 map { "$_\::DEMOLISH" } @$linear_isa
66             ],
67             HAS_BUILDARGS => $class->can('BUILDARGS'),
68 92 50       214 HAS_FOREIGNBUILDARGS => $class->can('FOREIGNBUILDARGS'),
  92         1827  
  0         0  
69 92         314 };
  92         329  
70             }
71              
72             # Standard Moose/Moo-style constructor
73             my $class = ref( $_[0] ) ? ref(shift) : shift;
74             my $meta = ( $Mite::META{$class} ||= $class->__META__ );
75             my $self = bless {}, $class;
76             my $args =
77             $meta->{HAS_BUILDARGS}
78 342 50   342 1 53376 ? $class->BUILDARGS(@_)
79 342   66     1921 : { ( @_ == 1 ) ? %{ $_[0] } : @_ };
80 342         1176 my $no_build = delete $args->{__no_BUILD__};
81              
82             # Attribute toolkit
83             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 12
84 342 50       5336 if ( exists $args->{"toolkit"} ) {
  0 50       0  
85 342         1018 $self->{"toolkit"} = $args->{"toolkit"};
86             }
87              
88             # Attribute target
89 342 50       1212 # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 16
90 342         1356 if ( exists $args->{"target"} ) {
91             $self->{"target"} = $args->{"target"};
92             }
93              
94             # Attribute attribute
95 342 50       1190 # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 20
96 342         1022 if ( exists $args->{"attribute"} ) {
97             $self->{"attribute"} = $args->{"attribute"};
98             }
99              
100             # Attribute attribute_spec (type: HashRef)
101 342 50       1155 # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 24
102 342         1071 if ( exists $args->{"attribute_spec"} ) {
103             do {
104              
105             ref( $args->{"attribute_spec"} ) eq 'HASH';
106             or croak "Type check failed in constructor: %s should be %s",
107 342 100       1150 "attribute_spec", "HashRef";
108 325 50       684 $self->{"attribute_spec"} = $args->{"attribute_spec"};
109             }
110              
111 325         1543 # Attribute isa
112             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 29
113             if ( exists $args->{"isa"} ) { $self->{"isa"} = $args->{"isa"}; }
114              
115 325         990 # Attribute coerce (type: Bool)
116             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 33
117             if ( exists $args->{"coerce"} ) {
118             do {
119              
120 342 100       1198 !ref $args->{"coerce"}
  335         893  
121             and (!defined $args->{"coerce"}
122             or $args->{"coerce"} eq q()
123             or $args->{"coerce"} eq '0'
124 342 50       1276 or $args->{"coerce"} eq '1' );
125 342 50       716 or croak "Type check failed in constructor: %s should be %s",
126             "coerce", "Bool";
127             $self->{"coerce"} = $args->{"coerce"};
128             }
129              
130             # Attribute env (type: HashRef)
131             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 38
132 342 50 100     4205 do {
      66        
      66        
133             my $value = exists( $args->{"env"} )
134             ? (
135             (
136 342         1138 do {
137              
138             ref( $args->{"env"} ) eq 'HASH';
139             ) ? $args->{"env"} : croak(
140             "Type check failed in constructor: %s should be %s",
141 342         704 "env", "HashRef"
142             )
143             )
144             : {};
145             $self->{"env"} = $value;
146             };
147              
148 342         1424 # Attribute sandboxing_package (type: Str|Undef)
149             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 45
150 342 50       1084 do {
    50          
151             my $value = exists( $args->{"sandboxing_package"} )
152             ? (
153             (
154             do {
155              
156 342         1010 (
157             do {
158              
159             defined( $args->{"sandboxing_package"} )
160             and do {
161 342         741 ref( \$args->{"sandboxing_package"} ) eq
162             'SCALAR'
163             or ref(
164             \(
165             my $val =
166             $args->{"sandboxing_package"}
167             )
168             ) eq 'SCALAR';
169             }
170             }
171             or do {
172              
173 0 0       0 !defined( $args->{"sandboxing_package"} );
174             }
175             );
176             ) ? $args->{"sandboxing_package"} : croak(
177             "Type check failed in constructor: %s should be %s",
178             "sandboxing_package", "Str|Undef"
179 0 0       0 )
180             )
181             : "Sub::HandlesVia::CodeGenerator::__SANDBOX__";
182             $self->{"sandboxing_package"} = $value;
183             };
184 0 0       0  
185             # Attribute generator_for_slot (type: CodeRef)
186             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 52
187 0         0 if ( exists $args->{"generator_for_slot"} ) {
188             do {
189              
190             ref( $args->{"generator_for_slot"} ) eq 'CODE';
191 342 0       1560 or croak "Type check failed in constructor: %s should be %s",
    50          
192             "generator_for_slot", "CodeRef";
193             $self->{"generator_for_slot"} = $args->{"generator_for_slot"};
194             }
195              
196             # Attribute generator_for_get (type: CodeRef)
197 342         1249 # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 52
198             if ( exists $args->{"generator_for_get"} ) {
199             do {
200              
201             ref( $args->{"generator_for_get"} ) eq 'CODE';
202 342 100       1248 or croak "Type check failed in constructor: %s should be %s",
203 340 50       699 "generator_for_get", "CodeRef";
204             $self->{"generator_for_get"} = $args->{"generator_for_get"};
205             }
206 340         1489  
207             # Attribute generator_for_set (type: CodeRef)
208             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 52
209             if ( exists $args->{"generator_for_set"} ) {
210 340         1033 do {
211              
212             ref( $args->{"generator_for_set"} ) eq 'CODE';
213             or croak "Type check failed in constructor: %s should be %s",
214             "generator_for_set", "CodeRef";
215 342 50       1166 $self->{"generator_for_set"} = $args->{"generator_for_set"};
216 342 50       749 }
217              
218             # Attribute generator_for_default (type: CodeRef)
219 342         1361 # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 52
220             if ( exists $args->{"generator_for_default"} ) {
221             do {
222              
223 342         898 ref( $args->{"generator_for_default"} ) eq 'CODE';
224             or croak "Type check failed in constructor: %s should be %s",
225             "generator_for_default", "CodeRef";
226             $self->{"generator_for_default"} = $args->{"generator_for_default"};
227             }
228 342 50       1190  
229 342 50       686 # Attribute generator_for_args (type: CodeRef)
230             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 65
231             do {
232 342         1372 my $value = exists( $args->{"generator_for_args"} )
233             ? (
234             (
235             do {
236 342         937  
237             ref( $args->{"generator_for_args"} ) eq 'CODE';
238             ) ? $args->{"generator_for_args"} : croak(
239             "Type check failed in constructor: %s should be %s",
240             "generator_for_args", "CodeRef"
241 342 50       1066 )
242 342 50       668 )
243             : $self->_build_generator_for_args;
244             $self->{"generator_for_args"} = $value;
245 342         1310 };
246              
247             # Attribute generator_for_arg (type: CodeRef)
248             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 78
249 342         960 do {
250             my $value = exists( $args->{"generator_for_arg"} )
251             ? (
252             (
253             do {
254 342         702  
255             ref( $args->{"generator_for_arg"} ) eq 'CODE';
256             ) ? $args->{"generator_for_arg"} : croak(
257             "Type check failed in constructor: %s should be %s",
258             "generator_for_arg", "CodeRef"
259             )
260             )
261 0         0 : $self->_build_generator_for_arg;
262             $self->{"generator_for_arg"} = $value;
263 342 0       2456 };
    50          
264              
265             # Attribute generator_for_argc (type: CodeRef)
266             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 89
267             do {
268             my $value = exists( $args->{"generator_for_argc"} )
269 342         1064 ? (
270             (
271             do {
272              
273             ref( $args->{"generator_for_argc"} ) eq 'CODE';
274 342         754 ) ? $args->{"generator_for_argc"} : croak(
275             "Type check failed in constructor: %s should be %s",
276             "generator_for_argc", "CodeRef"
277             )
278             )
279             : $self->_build_generator_for_argc;
280             $self->{"generator_for_argc"} = $value;
281 0         0 };
282              
283 342 0       1863 # Attribute generator_for_currying (type: CodeRef)
    50          
284             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 102
285             do {
286             my $value = exists( $args->{"generator_for_currying"} )
287             ? (
288             (
289 342         1071 do {
290              
291             ref( $args->{"generator_for_currying"} ) eq 'CODE';
292             ) ? $args->{"generator_for_currying"} : croak(
293             "Type check failed in constructor: %s should be %s",
294 342         705 "generator_for_currying", "CodeRef"
295             )
296             )
297             : $self->_build_generator_for_currying;
298             $self->{"generator_for_currying"} = $value;
299             };
300              
301 0         0 # Attribute generator_for_usage_string (type: CodeRef)
302             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 117
303 342 0       1758 do {
    50          
304             my $value = exists( $args->{"generator_for_usage_string"} )
305             ? (
306             (
307             do {
308              
309 342         1017 ref( $args->{"generator_for_usage_string"} ) eq 'CODE';
310             ) ? $args->{"generator_for_usage_string"} : croak(
311             "Type check failed in constructor: %s should be %s",
312             "generator_for_usage_string", "CodeRef"
313             )
314 342         725 )
315             : $self->_build_generator_for_usage_string;
316             $self->{"generator_for_usage_string"} = $value;
317             };
318              
319             # Attribute generator_for_self (type: CodeRef)
320             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 128
321 0         0 do {
322             my $value = exists( $args->{"generator_for_self"} )
323 342 0       1844 ? (
    50          
324             (
325             do {
326              
327             ref( $args->{"generator_for_self"} ) eq 'CODE';
328             ) ? $args->{"generator_for_self"} : croak(
329 342         1431 "Type check failed in constructor: %s should be %s",
330             "generator_for_self", "CodeRef"
331             )
332             )
333             : $self->_build_generator_for_self;
334 342         759 $self->{"generator_for_self"} = $value;
335             };
336              
337             # Attribute generator_for_type_assertion (type: CodeRef)
338             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 155
339             do {
340             my $value = exists( $args->{"generator_for_type_assertion"} )
341 0         0 ? (
342             (
343 342 0       1823 do {
    50          
344              
345             ref( $args->{"generator_for_type_assertion"} ) eq 'CODE';
346             ) ? $args->{"generator_for_type_assertion"} : croak(
347             "Type check failed in constructor: %s should be %s",
348             "generator_for_type_assertion",
349 342         1066 "CodeRef"
350             )
351             )
352             : $self->_build_generator_for_type_assertion;
353             $self->{"generator_for_type_assertion"} = $value;
354 342         713 };
355              
356             # Attribute generator_for_error (type: CodeRef)
357             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 167
358             do {
359             my $value = exists( $args->{"generator_for_error"} )
360             ? (
361 0         0 (
362             do {
363 342 0       1789  
    50          
364             ref( $args->{"generator_for_error"} ) eq 'CODE';
365             ) ? $args->{"generator_for_error"} : croak(
366             "Type check failed in constructor: %s should be %s",
367             "generator_for_error", "CodeRef"
368             )
369 342         979 )
370             : $self->_build_generator_for_error;
371             $self->{"generator_for_error"} = $value;
372             };
373              
374 342         734 # Attribute generator_for_prelude (type: CodeRef)
375             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 176
376             do {
377             my $value = exists( $args->{"generator_for_prelude"} )
378             ? (
379             (
380             do {
381 0         0  
382             ref( $args->{"generator_for_prelude"} ) eq 'CODE';
383 342 0       1828 ) ? $args->{"generator_for_prelude"} : croak(
    50          
384             "Type check failed in constructor: %s should be %s",
385             "generator_for_prelude", "CodeRef"
386             )
387             )
388             : $self->_build_generator_for_prelude;
389             $self->{"generator_for_prelude"} = $value;
390 342         1021 };
391              
392             # Attribute method_installer (type: CodeRef)
393             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 179
394             if ( exists $args->{"method_installer"} ) {
395 342         691 do {
396              
397             ref( $args->{"method_installer"} ) eq 'CODE';
398             or croak "Type check failed in constructor: %s should be %s",
399             "method_installer", "CodeRef";
400             $self->{"method_installer"} = $args->{"method_installer"};
401             }
402 0         0  
403             # Attribute is_method
404 342 0       2111 # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 189
    50          
405             $self->{"is_method"} =
406             ( exists( $args->{"is_method"} ) ? $args->{"is_method"} : "1" );
407              
408             # Attribute get_is_lvalue
409             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 194
410 342         1054 $self->{"get_is_lvalue"} = (
411             exists( $args->{"get_is_lvalue"} )
412             ? $args->{"get_is_lvalue"}
413             : "" );
414              
415 342         723 # Attribute set_checks_isa
416             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 199
417             $self->{"set_checks_isa"} = (
418             exists( $args->{"set_checks_isa"} )
419             ? $args->{"set_checks_isa"}
420             : "" );
421              
422 1         11 # Attribute set_strictly
423             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 204
424 342 50       1747 $self->{"set_strictly"} =
    100          
425             ( exists( $args->{"set_strictly"} ) ? $args->{"set_strictly"} : "1" );
426              
427             # Call BUILD methods
428             $self->BUILDALL($args) if ( !$no_build and @{ $meta->{BUILD} || [] } );
429              
430 342         1010 # Unrecognized parameters
431             my @unknown = grep not(
432             /\A(?:attribute(?:_spec)?|coerce|env|ge(?:nerator_for_(?:arg[cs]?|currying|default|error|get|prelude|s(?:e(?:lf|t)|lot)|type_assertion|usage_string)|t_is_lvalue)|is(?:_method|a)|method_installer|s(?:andboxing_package|et_(?:checks_isa|strictly))|t(?:arget|oolkit))\z/
433             ), keys %{$args};
434             @unknown
435 342 100       1212 and croak(
436 208 50       395 "Unexpected keys in constructor: " . join( q[, ], sort @unknown ) );
437              
438             return $self;
439 208         899 }
440              
441             # Used by constructor to call BUILD methods
442             my $class = ref( $_[0] );
443 208         603 my $meta = ( $Mite::META{$class} ||= $class->__META__ );
444             $_->(@_) for @{ $meta->{BUILD} || [] };
445             }
446              
447             # Destructor should call DEMOLISH methods
448             my $self = shift;
449 342 50       1427 my $class = ref($self) || $self;
450             my $meta = ( $Mite::META{$class} ||= $class->__META__ );
451             my $in_global_destruction =
452             defined ${^GLOBAL_PHASE}
453             ? ${^GLOBAL_PHASE} eq 'DESTRUCT'
454             : Devel::GlobalDestruction::in_global_destruction();
455 342 50       1254 for my $demolisher ( @{ $meta->{DEMOLISH} || [] } ) {
456             my $e = do {
457             local ( $?, $@ );
458             eval { $demolisher->( $self, $in_global_destruction ) };
459             $@;
460             };
461             no warnings 'misc'; # avoid (in cleanup) warnings
462 342 50       1363 die $e if $e; # rethrow
463             }
464             return;
465             }
466              
467             my $__XS = !$ENV{PERL_ONLY}
468 342 50       1228 && eval { require Class::XSAccessor; Class::XSAccessor->VERSION("1.19") };
469              
470             # Accessors for _override
471 342 50 33     1459 # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 184
  342 50       2114  
472             if ($__XS) {
473             Class::XSAccessor->import(
474             chained => 1,
475             "accessors" => { "_override" => "_override" },
476 342         874 );
  342         8868  
477             }
478 342 50       1644 else {
479             *_override = sub {
480             @_ > 1
481 342         2816 ? do { $_[0]{"_override"} = $_[1]; $_[0]; }
482             : ( $_[0]{"_override"} );
483             };
484             }
485              
486 0     0 0 0 # Accessors for attribute
487 0   0     0 # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 20
488 0 0       0 if ($__XS) {
  0         0  
489             Class::XSAccessor->import(
490             chained => 1,
491             "getters" => { "attribute" => "attribute" },
492             );
493 342     342   907 }
494 342   33     1386 else {
495 342   33     1339 *attribute = sub {
496 342 50       1443 @_ == 1 or croak('Reader "attribute" usage: $self->attribute()');
497             $_[0]{"attribute"};
498             };
499             }
500 342 50       716  
  342         1506  
501 0         0 # Accessors for attribute_spec
502 0         0 # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 24
503 0         0 if ($__XS) {
  0         0  
504 0         0 Class::XSAccessor->import(
505             chained => 1,
506 92     92   905 "getters" => { "attribute_spec" => "attribute_spec" },
  92         304  
  92         205351  
507 0 0       0 );
508             }
509 342         15130 else {
510             *attribute_spec = sub {
511             @_ == 1
512             or
513             croak('Reader "attribute_spec" usage: $self->attribute_spec()');
514             $_[0]{"attribute_spec"};
515             };
516             }
517              
518             # Accessors for coerce
519             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 33
520             if ($__XS) {
521             Class::XSAccessor->import(
522             chained => 1,
523             "getters" => { "coerce" => "coerce" },
524             );
525             }
526             else {
527             *coerce = sub {
528             @_ == 1 or croak('Reader "coerce" usage: $self->coerce()');
529             $_[0]{"coerce"};
530             };
531             }
532              
533             # Accessors for env
534             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 38
535             if ($__XS) {
536             Class::XSAccessor->import(
537             chained => 1,
538             "getters" => { "env" => "env" },
539             );
540             }
541             else {
542             *env = sub {
543             @_ == 1 or croak('Reader "env" usage: $self->env()');
544             $_[0]{"env"};
545             };
546             }
547              
548             # Accessors for generator_for_arg
549             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 78
550             if ($__XS) {
551             Class::XSAccessor->import(
552             chained => 1,
553             "getters" => { "generator_for_arg" => "generator_for_arg" },
554             );
555             }
556             else {
557             *generator_for_arg = sub {
558             @_ == 1
559             or croak(
560             'Reader "generator_for_arg" usage: $self->generator_for_arg()');
561             $_[0]{"generator_for_arg"};
562             };
563             }
564              
565             # Accessors for generator_for_argc
566             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 89
567             if ($__XS) {
568             Class::XSAccessor->import(
569             chained => 1,
570             "getters" => { "generator_for_argc" => "generator_for_argc" },
571             );
572             }
573             else {
574             *generator_for_argc = sub {
575             @_ == 1
576             or croak(
577             'Reader "generator_for_argc" usage: $self->generator_for_argc()'
578             );
579             $_[0]{"generator_for_argc"};
580             };
581             }
582              
583             # Accessors for generator_for_args
584             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 65
585             if ($__XS) {
586             Class::XSAccessor->import(
587             chained => 1,
588             "getters" => { "generator_for_args" => "generator_for_args" },
589             );
590             }
591             else {
592             *generator_for_args = sub {
593             @_ == 1
594             or croak(
595             'Reader "generator_for_args" usage: $self->generator_for_args()'
596             );
597             $_[0]{"generator_for_args"};
598             };
599             }
600              
601             # Accessors for generator_for_currying
602             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 102
603             if ($__XS) {
604             Class::XSAccessor->import(
605             chained => 1,
606             "getters" =>
607             { "generator_for_currying" => "generator_for_currying" },
608             );
609             }
610             else {
611             *generator_for_currying = sub {
612             @_ == 1
613             or croak(
614             'Reader "generator_for_currying" usage: $self->generator_for_currying()'
615             );
616             $_[0]{"generator_for_currying"};
617             };
618             }
619              
620             # Accessors for generator_for_default
621             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 52
622             if ($__XS) {
623             Class::XSAccessor->import(
624             chained => 1,
625             "getters" => { "generator_for_default" => "generator_for_default" },
626             );
627             }
628             else {
629             *generator_for_default = sub {
630             @_ == 1
631             or croak(
632             'Reader "generator_for_default" usage: $self->generator_for_default()'
633             );
634             $_[0]{"generator_for_default"};
635             };
636             }
637              
638             # Accessors for generator_for_error
639             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 167
640             if ($__XS) {
641             Class::XSAccessor->import(
642             chained => 1,
643             "getters" => { "generator_for_error" => "generator_for_error" },
644             );
645             }
646             else {
647             *generator_for_error = sub {
648             @_ == 1
649             or croak(
650             'Reader "generator_for_error" usage: $self->generator_for_error()'
651             );
652             $_[0]{"generator_for_error"};
653             };
654             }
655              
656             # Accessors for generator_for_get
657             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 52
658             if ($__XS) {
659             Class::XSAccessor->import(
660             chained => 1,
661             "getters" => { "generator_for_get" => "generator_for_get" },
662             );
663             }
664             else {
665             *generator_for_get = sub {
666             @_ == 1
667             or croak(
668             'Reader "generator_for_get" usage: $self->generator_for_get()');
669             $_[0]{"generator_for_get"};
670             };
671             }
672              
673             # Accessors for generator_for_prelude
674             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 176
675             if ($__XS) {
676             Class::XSAccessor->import(
677             chained => 1,
678             "getters" => { "generator_for_prelude" => "generator_for_prelude" },
679             );
680             }
681             else {
682             *generator_for_prelude = sub {
683             @_ == 1
684             or croak(
685             'Reader "generator_for_prelude" usage: $self->generator_for_prelude()'
686             );
687             $_[0]{"generator_for_prelude"};
688             };
689             }
690              
691             # Accessors for generator_for_self
692             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 128
693             if ($__XS) {
694             Class::XSAccessor->import(
695             chained => 1,
696             "getters" => { "generator_for_self" => "generator_for_self" },
697             );
698             }
699             else {
700             *generator_for_self = sub {
701             @_ == 1
702             or croak(
703             'Reader "generator_for_self" usage: $self->generator_for_self()'
704             );
705             $_[0]{"generator_for_self"};
706             };
707             }
708              
709             # Accessors for generator_for_set
710             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 52
711             if ($__XS) {
712             Class::XSAccessor->import(
713             chained => 1,
714             "getters" => { "generator_for_set" => "generator_for_set" },
715             );
716             }
717             else {
718             *generator_for_set = sub {
719             @_ == 1
720             or croak(
721             'Reader "generator_for_set" usage: $self->generator_for_set()');
722             $_[0]{"generator_for_set"};
723             };
724             }
725              
726             # Accessors for generator_for_slot
727             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 52
728             if ($__XS) {
729             Class::XSAccessor->import(
730             chained => 1,
731             "getters" => { "generator_for_slot" => "generator_for_slot" },
732             );
733             }
734             else {
735             *generator_for_slot = sub {
736             @_ == 1
737             or croak(
738             'Reader "generator_for_slot" usage: $self->generator_for_slot()'
739             );
740             $_[0]{"generator_for_slot"};
741             };
742             }
743              
744             # Accessors for generator_for_type_assertion
745             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 155
746             if ($__XS) {
747             Class::XSAccessor->import(
748             chained => 1,
749             "getters" => {
750             "generator_for_type_assertion" => "generator_for_type_assertion"
751             },
752             );
753             }
754             else {
755             *generator_for_type_assertion = sub {
756             @_ == 1
757             or croak(
758             'Reader "generator_for_type_assertion" usage: $self->generator_for_type_assertion()'
759             );
760             $_[0]{"generator_for_type_assertion"};
761             };
762             }
763              
764             # Accessors for generator_for_usage_string
765             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 117
766             if ($__XS) {
767             Class::XSAccessor->import(
768             chained => 1,
769             "getters" =>
770             { "generator_for_usage_string" => "generator_for_usage_string" },
771             );
772             }
773             else {
774             *generator_for_usage_string = sub {
775             @_ == 1
776             or croak(
777             'Reader "generator_for_usage_string" usage: $self->generator_for_usage_string()'
778             );
779             $_[0]{"generator_for_usage_string"};
780             };
781             }
782              
783             # Accessors for get_is_lvalue
784             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 194
785             if ($__XS) {
786             Class::XSAccessor->import(
787             chained => 1,
788             "getters" => { "get_is_lvalue" => "get_is_lvalue" },
789             );
790             }
791             else {
792             *get_is_lvalue = sub {
793             @_ == 1
794             or croak('Reader "get_is_lvalue" usage: $self->get_is_lvalue()');
795             $_[0]{"get_is_lvalue"};
796             };
797             }
798              
799             # Accessors for is_method
800             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 189
801             if ($__XS) {
802             Class::XSAccessor->import(
803             chained => 1,
804             "getters" => { "is_method" => "is_method" },
805             );
806             }
807             else {
808             *is_method = sub {
809             @_ == 1 or croak('Reader "is_method" usage: $self->is_method()');
810             $_[0]{"is_method"};
811             };
812             }
813              
814             # Accessors for isa
815             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 29
816             if ($__XS) {
817             Class::XSAccessor->import(
818             chained => 1,
819             "getters" => { "isa" => "isa" },
820             );
821             }
822             else {
823             *isa = sub {
824             @_ == 1 or croak('Reader "isa" usage: $self->isa()');
825             $_[0]{"isa"};
826             };
827             }
828              
829             # Accessors for method_installer
830             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 179
831             @_ > 1
832             ? do {
833             ( ref( $_[1] ) eq 'CODE' )
834             or croak( "Type check failed in %s: value should be %s",
835             "accessor", "CodeRef" );
836             $_[0]{"method_installer"} = $_[1];
837             $_[0];
838             }
839             : ( $_[0]{"method_installer"} );
840             }
841              
842             # Accessors for sandboxing_package
843             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 45
844             if ($__XS) {
845             Class::XSAccessor->import(
846             chained => 1,
847             "getters" => { "sandboxing_package" => "sandboxing_package" },
848             );
849             }
850             else {
851             *sandboxing_package = sub {
852             @_ == 1
853             or croak(
854             'Reader "sandboxing_package" usage: $self->sandboxing_package()'
855             );
856             $_[0]{"sandboxing_package"};
857             };
858             }
859              
860             # Accessors for set_checks_isa
861             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 199
862             if ($__XS) {
863             Class::XSAccessor->import(
864             chained => 1,
865             "getters" => { "set_checks_isa" => "set_checks_isa" },
866             );
867             }
868             else {
869             *set_checks_isa = sub {
870             @_ == 1
871             or
872             croak('Reader "set_checks_isa" usage: $self->set_checks_isa()');
873             $_[0]{"set_checks_isa"};
874             };
875             }
876              
877             # Accessors for set_strictly
878             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 204
879 0 0       0 if ($__XS) {
880             Class::XSAccessor->import(
881             chained => 1,
882 0         0 "getters" => { "set_strictly" => "set_strictly" },
883 0         0 );
884             }
885 6812 50   6812 1 27127 else {
886             *set_strictly = sub {
887             @_ == 1
888             or croak('Reader "set_strictly" usage: $self->set_strictly()');
889             $_[0]{"set_strictly"};
890             };
891             }
892              
893             # Accessors for target
894             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 16
895             if ($__XS) {
896             Class::XSAccessor->import(
897             chained => 1,
898             "getters" => { "target" => "target" },
899             );
900             }
901             else {
902             *target = sub {
903             @_ == 1 or croak('Reader "target" usage: $self->target()');
904             $_[0]{"target"};
905             };
906             }
907              
908             # Accessors for toolkit
909             # has declaration, file lib/Sub/HandlesVia/CodeGenerator.pm, line 12
910             if ($__XS) {
911             Class::XSAccessor->import(
912             chained => 1,
913             "getters" => { "toolkit" => "toolkit" },
914             );
915             }
916             else {
917             *toolkit = sub {
918             @_ == 1 or croak('Reader "toolkit" usage: $self->toolkit()');
919             $_[0]{"toolkit"};
920             };
921             }
922              
923             # See UNIVERSAL
924             my ( $self, $role ) = @_;
925             our %DOES;
926             return $DOES{$role} if exists $DOES{$role};
927             return 1 if $role eq __PACKAGE__;
928             if ( $INC{'Moose/Util.pm'}
929             and my $meta = Moose::Util::find_meta( ref $self or $self ) )
930             {
931             $meta->can('does_role') and $meta->does_role($role) and return 1;
932             }
933             return $self->SUPER::DOES($role);
934             }
935              
936             # Alias for Moose/Moo-compatibility
937             shift->DOES(@_);
938             }
939              
940             1;