File Coverage

blib/lib/RPerl/Operation/Statement/OperatorVoid/Named/Croak.pm
Criterion Covered Total %
statement 48 61 78.6
branch 9 12 75.0
condition n/a
subroutine 9 11 81.8
pod n/a
total 66 84 78.5


line stmt bran cond sub pod time code
1             # [[[ HEADER ]]]
2             package RPerl::Operation::Statement::OperatorVoid::Named::Croak;
3 4     4   22 use strict;
  4         8  
  4         136  
4 4     4   24 use warnings;
  4         9  
  4         97  
5 4     4   19 use RPerl::AfterSubclass;
  4         7  
  4         503  
6             our $VERSION = 0.002_010;
7              
8             # [[[ OO INHERITANCE ]]]
9             # NEED FIX: is not a Grammar Rule so should not inherit from OperatorVoid, need create Grammar Production class
10 4     4   25 use parent qw(RPerl::Operation::Statement::OperatorVoid::Named);
  4         8  
  4         19  
11 4     4   213 use RPerl::Operation::Statement::OperatorVoid::Named;
  4         8  
  4         109  
12              
13             # [[[ CRITICS ]]]
14             ## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls) # USER DEFAULT 1: allow numeric values & print operator
15             ## no critic qw(RequireInterpolationOfMetachars) # USER DEFAULT 2: allow single-quoted control characters & sigils
16             ## no critic qw(ProhibitConstantPragma ProhibitMagicNumbers) # USER DEFAULT 3: allow constants
17              
18             # [[[ CONSTANTS ]]]
19 4     4   20 use constant NAME => my string $TYPED_NAME = 'croak';
  4         6  
  4         209  
20              
21             # DEV NOTE: ARGUMENTS_MIN of 0 can be ignored, no such thing as negative number of args!
22 4     4   24 use constant ARGUMENTS_MIN => my integer $TYPED_ARGUMENTS_MIN = 0;
  4         9  
  4         215  
23 4     4   22 use constant ARGUMENTS_MAX => my integer $TYPED_ARGUMENTS_MAX = 999;
  4         8  
  4         1728  
24              
25             # [[[ OO PROPERTIES ]]]
26             our hashref $properties = {};
27              
28             # [[[ SUBROUTINES & OO METHODS ]]]
29              
30             sub ast_to_rperl__generate {
31 53     53   186 { my string_hashref::method $RETURN_TYPE };
  53         161  
32 53         226 ( my object $self, my string_hashref $modes, my object $operator_void_named) = @ARG;
33 53         181 my string_hashref $rperl_source_group = { PMC => q{} };
34              
35             # RPerl::diag( 'in OperatorVoid::Named::Croak->ast_to_rperl__generate(), received $self = ' . "\n" . RPerl::Parser::rperl_ast__dump($self) . "\n" );
36             # RPerl::diag( 'in OperatorVoid::Named::Croak->ast_to_rperl__generate(), received $operator_void_named = ' . "\n" . RPerl::Parser::rperl_ast__dump($operator_void_named) . "\n" );
37              
38 53 100       532 if ( ref $operator_void_named eq 'OperatorVoid_131' ) { # OperatorVoid -> OP01_NAMED_VOID_SCOLON
    100          
    50          
39 1         12 $rperl_source_group->{PMC} .= $operator_void_named->{children}->[0]; # name semicolon
40             }
41             elsif ( ref $operator_void_named eq 'OperatorVoid_132' ) { # OperatorVoid -> OP01_NAMED_VOID_LPAREN OPTIONAL-32 ')' ';'
42             $rperl_source_group->{PMC}
43 15         73 .= $operator_void_named->{children}->[0]; # name lparen
44 15         40 my object $arguments_optional = $operator_void_named->{children}->[1];
45 15 100       59 if ( exists $arguments_optional->{children}->[0] ) {
46 14         40 my object $arguments = $arguments_optional->{children}->[0];
47 14         367 my integer $argument_count = $arguments->length();
48 14 50       79 if ( $argument_count > ARGUMENTS_MAX() ) {
49 0         0 die 'ERROR ECOGEASRP03, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL:' . "\n"
50             . 'Argument count '
51             . $argument_count
52             . ' exceeds maximum argument limit '
53             . ARGUMENTS_MAX()
54             . ' for operator ' . q{'}
55             . NAME() . q{'}
56             . ', dying' . "\n";
57             }
58 14         399 my string_hashref $rperl_source_subgroup = $arguments->ast_to_rperl__generate( $modes, $self );
59 14         300 RPerl::Generator::source_group_append( $rperl_source_group, $rperl_source_subgroup );
60             }
61 15         61 $rperl_source_group->{PMC} .= $operator_void_named->{children}->[2] . $operator_void_named->{children}->[3]; # rparen semicolon
62             }
63             elsif ( ref $operator_void_named eq 'OperatorVoid_133' ) { # OperatorVoid -> OP01_NAMED_VOID ListElements ';'
64             $rperl_source_group->{PMC}
65 37         210 .= $operator_void_named->{children}->[0] . q{ }; # name
66 37         149 my object $arguments = $operator_void_named->{children}->[1];
67 37         922 my integer $argument_count = $arguments->length();
68 37 50       242 if ( $argument_count > ARGUMENTS_MAX() ) {
69 0         0 die 'ERROR ECOGEASRP03, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL:' . "\n"
70             . 'Argument count '
71             . $argument_count
72             . ' exceeds maximum argument limit '
73             . ARGUMENTS_MAX()
74             . ' for operator ' . q{'}
75             . NAME() . q{'}
76             . ', dying' . "\n";
77             }
78 37         869 my string_hashref $rperl_source_subgroup = $arguments->ast_to_rperl__generate( $modes, $self );
79 37         834 RPerl::Generator::source_group_append( $rperl_source_group, $rperl_source_subgroup );
80 37         184 $rperl_source_group->{PMC} .= $operator_void_named->{children}->[2]; # semicolon
81             }
82             else {
83 0         0 die RPerl::Parser::rperl_rule__replace( 'ERROR ECOGEASRP00, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL: Grammar rule '
84             . ( ref $operator_void_named )
85             . ' found where OperatorVoid_131, OperatorVoid_132, or OperatorVoid_133 expected, dying' )
86             . "\n";
87             }
88              
89 53         164 $rperl_source_group->{PMC} .= "\n";
90 53         287 return $rperl_source_group;
91             }
92              
93             sub ast_to_cpp__generate__CPPOPS_PERLTYPES {
94 0     0     { my string_hashref::method $RETURN_TYPE };
  0            
95 0           ( my object $self, my string_hashref $modes) = @ARG;
96 0           my string_hashref $cpp_source_group = { CPP => q{// <<< RP::O::S::OV::N::C __DUMMY_SOURCE_CODE CPPOPS_PERLTYPES >>>} . "\n" };
97              
98             #...
99 0           return $cpp_source_group;
100             }
101              
102             sub ast_to_cpp__generate__CPPOPS_CPPTYPES {
103 0     0     { my string_hashref::method $RETURN_TYPE };
  0            
104 0           ( my object $self, my string_hashref $modes) = @ARG;
105 0           my string_hashref $cpp_source_group = { CPP => q{// <<< RP::O::S::OV::N::C __DUMMY_SOURCE_CODE CPPOPS_CPPTYPES >>>} . "\n" };
106              
107             #...
108 0           return $cpp_source_group;
109             }
110              
111             1; # end of class