File Coverage

blib/lib/Sub/HandlesVia/CodeGenerator.pm.mite.pm
Criterion Covered Total %
statement 149 185 80.5
branch 55 132 41.6
condition 16 36 44.4
subroutine 14 15 93.3
pod 2 5 40.0
total 236 373 63.2


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