Branch Coverage

blib/lib/Dios/Types.pm
Criterion Covered Total %
branch 226 310 72.9


line true false branch
26 0 2 if ($export_as and $exportable{$export_as})
32 0 4 unless $exportable{$exported}
55 63 0 if (((&CORE::GLOBAL::caller(0))[3] // "") =~ /\b(?:un)?import\Z/u)
70 63 0 if (((&CORE::GLOBAL::caller(0))[3] // "") =~ /\b(?:un)?import\Z/u)
102 9 2 if (not length $new_type_params) { }
108 4 17 unless $okay
109 4 13 unless &$constraint(local $_ = $_[0])
134 2 7 unless $okay
135 3 4 unless (eval { do { local $SIG{'__WARN__'} = sub { } ; &$constraint(local $_ = $_[0]) } })
159 0 0 $self->[0] ne $self->[-1] ? :
163 73 25 if (&reftype($previous_errors) // "") ne "ARRAY"
385 18 232 if ($type =~ /\A \s*+ ((?&NON_ATOM_TYPENAME)) \s*+ \Z $FROM_TYPENAME_GRAMMAR /msux)
390 1 0 defined $context ? :
1 249 unless $type =~ /\A \s*+ $TYPENAME_GRAMMAR \s*+ \Z /msux
397 22 227 if (exists $type_is{'conj'})
404 7 32 unless $okay
412 14 213 if (exists $type_is{'disj'})
418 22 21 if &$_($_[0])
425 102 111 if (exists $type_is{'basic'})
428 13 98 if (exists $type_is{'user'})
433 31 2 if (defined $idx)
446 31 67 if (exists $type_is{'array'})
448 2 74 if (&reftype($_[0]) // "") ne "ARRAY"
452 140 21 if my $okay = &$value_handler($_)
461 3 64 if (exists $type_is{'list'})
463 1 3 if (&reftype($_[0]) // "") ne "ARRAY"
467 7 0 if my $okay = &$value_handler($_)
475 1 63 if (exists $type_is{'tuple'})
482 0 1 if (@types > 1 and $types[-1] =~ /^$TYPED_ETC$/u) { }
0 1 elsif (@types > 0 and $types[-1] =~ /^$PURE_ETC$/u) { }
498 1 1 if (&reftype($array_ref) // "") ne "ARRAY" or not $final_handler and @{$array_ref;} != @types
503 0 2 unless $okay
508 1 0 if $final_any or @{$array_ref;} == @types
513 0 0 unless $okay
534 21 42 if (exists $type_is{'hash'})
536 12 9 if (not $arrow) { }
540 4 39 if (&reftype($_[0]) // "") ne "HASH"
545 4 37 unless $okay
559 0 18 if (&reftype($_[0]) // "") ne "HASH"
564 7 34 unless $okay
570 2 23 unless $okay
580 2 40 if (exists $type_is{'dict'})
585 4 2 if (exists $+{'keyed'}) { }
589 0 4 if exists $handler_for{$key}
592 4 0 unless $optional
604 1 3 if (&reftype($hash_ref) // "") ne "HASH"
610 1 4 unless exists $hash_ref->{$key}
615 4 4 if (exists $handler_for{$key}) { }
617 0 4 unless $okay
621 0 4 unless $extra_keys_allowed
632 14 26 if (exists $type_is{'ref'})
633 4 10 if $type_is{'ref'} =~ /$IS_REF_TYPE/u
636 0 26 if not $reftype or $reftype ne "REF" and $reftype ne "SCALAR"
639 20 6 $okay ? :
644 2 24 if (exists $type_is{'not'})
647 2 9 if $not_okay
654 0 24 if (exists $type_is{'eq'})
658 0 0 if defined $_[0] and !&blessed($_[0]) || overload::Method($_[0], '""') and eval { do { "$_[0]" eq $str } }
664 6 18 if (exists $type_is{'match'})
666 0 6 if $@
670 24 4 if defined $_[0] and !&blessed($_[0]) || overload::Method($_[0], '""') and eval { do { "$_[0]" =~ /$regex/u } }
676 8 10 if (exists $type_is{'can'})
679 0 8 unless &blessed($_[0]) or $handler_for{'Class'}->($_[0])
682 2 10 unless eval { do { $_[0]->can($method_name) } }
689 10 0 if (exists $type_is{'overloads'})
693 0 10 unless &blessed($_[0]) or $handler_for{'Class'}->($_[0])
695 4 20 unless overload::Method($_[0], $op)
717 60 622 if (ref $arg eq 'CODE') { }
622 0 elsif (defined $arg) { }
731 44 713 unless (exists $handler_for{$typename})
732 0 44 unless $handler_for{$typename} = _build_handler_for($typename)
737 314 442 unless ($handler_for{$typename}->($value))
739 0 314 $value_desc =~ /\s$/u ? :
743 384 58 unless @constraints
750 33 25 unless (eval { do { local $SIG{'__WARN__'} = sub { } ; &$test(local $_ = $value) } })
753 0 33 $value_desc =~ /\s$/u ? :
767 50 116 if (ref $arg eq 'CODE') { }
116 0 elsif (defined $arg) { }
781 2 116 unless (exists $handler_for{$typename})
782 0 2 unless $handler_for{$typename} = _build_handler_for($typename)
787 13 105 unless ($handler_for{$typename}->($value))
789 7 6 $value_desc =~ /\s$/u ? :
793 63 42 unless @constraints
800 4 38 unless (eval { do { local $SIG{'__WARN__'} = sub { } ; &$test(local $_ = $value) } })
803 0 4 $value_desc =~ /\s$/u ? :
817 1 167 if (ref $arg eq 'CODE') { }
167 0 elsif (defined $arg) { }
831 43 238 unless (exists $handler_for{$typename})
832 0 43 unless $handler_for{$typename} = _build_handler_for($typename)
839 114 0 unless $value_desc or @constraints
842 48 152 if &$handler($_[0])
845 0 152 $desc =~ /\s$/u ? :
848 166 1 unless @constraints
852 2 8 unless ($handler_for{$typename}->($_[0]))
854 0 2 $desc =~ /\s$/u ? :
858 0 8 unless @constraints
865 0 8 unless (eval { do { local $SIG{'__WARN__'} = sub { } ; &$test(local $_ = $_[0]) } })
868 0 0 $desc =~ /\s$/u ? :
889 0 0 @{$_[0];} > 1 ? :
901 0 0 @_ ? :
902 0 0 if $off < 0
903 0 0 @_ ? :
928 21 30 if ($vartype ne 'ARRAY' and $vartype ne 'HASH') { }
15 15 elsif ($vartype eq 'ARRAY') { }
15 0 elsif ($vartype eq 'HASH') { }
930 0 21 unless eval { do { require Variable::Magic } }
934 19 23 if ((&CORE::GLOBAL::caller(3))[3] // "") eq "Object::InsideOut::DESTROY"
939 19 4 if eval { do { _up_validate(2, $type, ${$_[0];}, $value_desc, @constraint) } }
948 7 8 if tied @{$varref;}
952 7 8 if tied %{$varref;}
969 1 32 if (wantarray) { }
30 2 elsif (defined wantarray) { }
973 0 1 if $void_warning and $type eq "Void"
982 0 3 unless &$where($_)
989 0 1 if (@retvals == 1) { }
1019 0 30 if $void_warning and $type eq "Void"
1049 0 2 if $void_warning and not eval { do { _up_validate(1, $type, undef) } }
1062 26 110 if $type_a eq $type_b
1065 24 86 if (not $unnormalized and $type_a =~ /\A (?: Ref ) \Z /msux) { }
0 86 elsif (not $unnormalized and $type_a =~ /\A (?: Array | List ) \Z /msux) { }
4 82 elsif (not $unnormalized and $type_a eq 'Hash') { }
0 82 elsif ($type_a =~ /\A \s*+ ((?&NON_ATOM_TYPENAME)) \s*+ \Z $FROM_TYPENAME_GRAMMAR /msux) { }
1079 0 110 if (not $unnormalized and $type_b =~ /\A (?: Ref ) \Z /msux) { }
0 110 elsif (not $unnormalized and $type_b =~ /\A (?: Array | List ) \Z /msux) { }
20 90 elsif (not $unnormalized and $type_b eq 'Hash') { }
0 90 elsif ($type_b =~ /\A \s*+ ((?&NON_ATOM_TYPENAME)) \s*+ \Z $FROM_TYPENAME_GRAMMAR /msux) { }
1094 62 20 if (exists $type_a_is{'basic'} and exists $type_b_is{'basic'})
1095 32 30 if $BASIC_NARROWER{$type_b}{$type_a}
1096 30 0 if $BASIC_NARROWER{$type_a}{$type_b}
1101 16 12 if (exists $type_a_is{$elem_type} and exists $type_b_is{$elem_type})
1107 32 0 if ($type_a =~ s/\A(?:List|Array|Hash|Ref|Match|Eq)\K\[.*//msux or $type_b =~ s/\A(?:List|Array|Hash|Ref|Match|Eq)\K\[.*//msux)
1109 0 0 if $type_a =~ /\A(?:Match|Eq)\Z/u and $BASIC_NARROWER{'Class'}{$type_b}
1110 0 0 if $type_b =~ /\A(?:Match|Eq)\Z/u and $BASIC_NARROWER{'Class'}{$type_a}
1115 0 0 if (exists $type_a_is{'user'} and exists $type_b_is{'user'})
1116 0 0 if $type_b->isa($type_a)
1117 0 0 if $type_a->isa($type_b)
1131 16 18 $_->{'named'} ? :
1139 42 46 $sig_a_name ? :
1146 26 62 if (not $is_narrower and $type_a eq $type_b)
1149 0 26 $where_a < $where_b ? :
0 26 $where_a > $where_b ? :
1155 16 72 if $is_narrower and $is_narrower == -$partial_ordering
1182 35 56 if ($narrowness < 0) { }
24 32 elsif ($narrowness > 0) { }
1191 6 21 if ($max_narrower < @sigs - 1) { }
1200 4 23 if ($kind eq "method" and @sigs > 1)
1203 2 0 $Dios::Types::b->{'class'}->isa($Dios::Types::a->{'class'}) ? :
0 2 $Dios::Types::a->{'class'}->isa($Dios::Types::b->{'class'}) ? :
2 2 $Dios::Types::a->{'class'} eq $Dios::Types::b->{'class'} ? :
1217 0 40 if ($constraint_desc)
1225 40 0 if (not length($constraint_desc // "") and eval { do { require B } })
1227 0 40 if ($sub_name and $sub_name ne "__ANON__")
1234 40 0 if (not length($constraint_desc // "") and eval { do { require B::Deparse } })
1253 0 1473 if (my $tiedclass = tied $_) { }
2 1471 elsif (my $classname = &blessed($_)) { }