--- /dev/null
+## name Unspectacular die
+## failures 3
+## cut
+
+die 'A horrible death' if $condtion;
+
+if ($condition) {
+ die 'A horrible death';
+}
+
+open my $fh, '<', $path or
+ die "Can't open file $path";
+
+#-----------------------------------------------------------------------------
+
+## name Unspectacular warn
+## failures 3
+## cut
+
+warn 'A horrible warning' if $condtion;
+
+if ($condition) {
+ warn 'A horrible warning';
+}
+
+open my $fh, '<', $path or
+ warn "Can't open file $path";
+
+#-----------------------------------------------------------------------------
+
+## name Carping
+## failures 0
+## cut
+
+carp 'A horrible death' if $condtion;
+
+if ($condition) {
+ carp 'A horrible death';
+}
+
+open my $fh, '<', $path or
+ carp "Can't open file $path";
+
+#-----------------------------------------------------------------------------
+
+## name No croaking
+## failures 1
+## cut
+
+die 'A horrible death';
+
+#-----------------------------------------------------------------------------
+
+## name Complain about cases without arguments.
+## failures 2
+## cut
+
+die;
+die
+
+#-----------------------------------------------------------------------------
+
+## name Complain about cases with empty list arguments.
+## failures 2
+## cut
+
+die ( );
+die ( )
+
+#-----------------------------------------------------------------------------
+
+## name Complain about cases with non-string arguments.
+## failures 7
+## cut
+
+die $error;
+die @errors;
+die %errors_by_id;
+die $errors[0];
+die $errors_by_id{"Cheese fondue overflow"};
+die $marvin_gaye->whats_goin_on();
+die $george_washington->cross("Delaware River\n");
+
+#-----------------------------------------------------------------------------
+
+## name Don't complain about obvious uses of references because they're likely being used as exception objects.
+## TODO not yet implemented
+## failures 0
+## cut
+
+die \$frobnication_exception;
+die \@accumulated_warnings;
+die \%problem_data;
+
+die
+ [
+ 'process.html: missing standard section separator comments',
+ 'green.css: uses non-standard font "Broken 15"',
+ 'cat.jpg: missing copyright information in Exif metadata',
+ ];
+
+die
+ {
+ message => 'Found duplicate entries',
+ file => $current_file,
+ parser => $self,
+ occurrences => $occurrences,
+ duplicated => $entry_content,
+ };
+
+die Blrfl::Exception->new('Too many croutons', $salad);
+
+
+#-----------------------------------------------------------------------------
+
+## name Don't complain if message ends with "\n" in double quotes.
+## failures 0
+## cut
+
+die "A horrible death\n" ;
+die "A horrible death\n" # last statement doesn't need a terminator
+
+#-----------------------------------------------------------------------------
+
+## name Complain if message ends with "\n" in single quotes.
+## failures 2
+## cut
+
+die 'A horrible death\n' ;
+die 'A horrible death\n' # last statement doesn't need a terminator
+
+#-----------------------------------------------------------------------------
+
+## name Don't complain if message ends with "\n" in interpolated quotelike operator.
+## failures 0
+## cut
+
+die qq{A horrible death\n} ;
+die qq#A horrible death\n# ;
+die qq/A horrible death\n/ # last statement doesn't need a terminator
+
+#-----------------------------------------------------------------------------
+
+## name Complain if message ends with "\n" in non-interpolated quotelike operator.
+## failures 3
+## cut
+
+die q{A horrible death\n} ;
+die q#A horrible death\n# ;
+die q/A horrible death\n/ # last statement doesn't need a terminator
+
+#-----------------------------------------------------------------------------
+
+## name Don't complain if message is a list with a last element that ends with "\n"
+## failures 0
+## cut
+
+die q{Don't }, $die, " a horrible death\n" ;
+die qq{Don't }, $die, qq/ a horrible death\n/ ;
+die q{Don't }, $die, " a horrible death\n" , ;
+die q{Don't }, $die, " a horrible death\n" , # last statement doesn't need a terminator
+
+#-----------------------------------------------------------------------------
+
+## name Don't complain if message is a parenthesised list with a last element that ends with "\n"
+## failures 0
+## cut
+
+die ( q{Don't }, $die, " a horrible death\n" ) ;
+die ( qq{Don't }, $die, qq/ a horrible death\n/ ) ;
+die ( qq{Don't }, $die, qq/ a horrible death\n/ ) , ;
+die ( q{Don't }, $die, " a horrible death\n" , ) # last statement doesn't need a terminator
+
+#-----------------------------------------------------------------------------
+
+## name Don't complain if message is a list with "sub" lists with a last (flattened list) element that ends with "\n"
+## failures 0
+## cut
+
+# all these tests are necessary (different PPI trees)
+
+# one element in a sub list
+die q{Don't } , ( $die ) , " a horrible death\n" ;
+die q{Don't } , $die , ( " a horrible death\n" ) ;
+
+# sub list and a bare element
+die q{Don't } , ( $die , " a horrible death\n" ) ;
+
+# two sub lists
+die q{Don't } , ( $die ) , ( " a horrible death\n" ) ;
+
+
+# sub sub lists
+die ( ( q{Don't } ) , $die , " a horrible death\n" ) ;
+die ( q{Don't } , $die , ( " a horrible death\n" ) ) ;
+die ( q{Don't } , ( $die , ( " a horrible death\n" ) ) ) ;
+die ( ( q{Don't } , ( $die , ( " a horrible death\n" ) ) ) ) ;
+
+# play with extra commas
+die ( ( q{Don't } , ( $die , ( " a horrible death\n" , ) , ) , ) , ) , ;
+die ( ( q{Don't } , ( $die , ( " a horrible death\n" , ) , ) , ) , ) ,
+
+#-----------------------------------------------------------------------------
+
+## name Complain if message is a list with "sub" lists with a last (flattened list) element that doesn't end with "\n"
+## failures 10
+## cut
+
+# all these tests are necessary: make sure that the policy knows when to
+# stop looking.
+
+# one element in a sub list
+die q{Don't } , ( $die ) , @a_horrible_death ;
+die q{Don't } , $die , ( @a_horrible_death ) ;
+
+# sub list and a bare element
+die q{Don't } , ( $die , @a_horrible_death ) ;
+
+# two sub lists
+die q{Don't } , ( $die ) , ( @a_horrible_death ) ;
+
+
+# sub sub lists
+die ( ( q{Don't } ) , $die , @a_horrible_death ) ;
+die ( q{Don't } , $die , ( @a_horrible_death ) ) ;
+die ( q{Don't } , ( $die , ( @a_horrible_death ) ) ) ;
+die ( ( q{Don't } , ( $die , ( @a_horrible_death ) ) ) ) ;
+
+# play with extra commas
+die ( ( q{Don't } , ( $die , ( @a_horrible_death , ) , ) , ) , ) , ;
+die ( ( q{Don't } , ( $die , ( @a_horrible_death , ) , ) , ) , ) ,
+
+#-----------------------------------------------------------------------------
+
+## name Don't complain if message is a concatenation with a last element that ends with "\n"
+## failures 0
+## cut
+
+die q{Don't } . $die . " a horrible death\n" ;
+die ( q{Don't } . $die . " a horrible death\n" ) ;
+
+##-----------------------------------------------------------------------------
+
+## name Complain if message has a last element that ends with "\n" but has an operation in front
+## failures 2
+## cut
+
+die q{Don't } . $die . length " a horrible death\n" ;
+die ( q{Don't } . $die . length " a horrible death\n" ) ;
+
+#-----------------------------------------------------------------------------
+
+## name Don't complain if followed by postfix operator and otherwise valid.
+## failures 0
+## cut
+
+die "A horrible death\n" if $self->is_a_bad_guy();
+die "A horrible death\n" unless $self->rescued_from_the_sinking_ship();
+die "A horrible death\n" while $deep_sense_of_guilt;
+die "A horrible death\n" until $clear_conscience;
+die "A horrible death\n" for @your_crimes;
+die "A horrible death\n" foreach @{ $songs_sung_off_key };
+
+die 'A horrible ', "death\n" if $self->is_a_bad_guy();
+die 'A horrible ', "death\n" unless $self->rescued_from_the_sinking_ship();
+die 'A horrible ', "death\n" while $deep_sense_of_guilt;
+die 'A horrible ', "death\n" until $clear_conscience;
+die 'A horrible ', "death\n" for @your_crimes;
+die 'A horrible ', "death\n" foreach @{ $songs_sung_off_key };
+
+die ( 'A horrible ', "death\n" ) if $self->is_a_bad_guy();
+die ( 'A horrible ', "death\n" ) unless $self->rescued_from_the_sinking_ship();
+die ( 'A horrible ', "death\n" ) while $deep_sense_of_guilt;
+die ( 'A horrible ', "death\n" ) until $clear_conscience;
+die ( 'A horrible ', "death\n" ) for @your_crimes;
+die ( 'A horrible ', "death\n" ) foreach @{ $songs_sung_off_key };
+
+die ( 'A horrible ' . "death\n" ) if $self->is_a_bad_guy();
+die ( 'A horrible ' . "death\n" ) unless $self->rescued_from_the_sinking_ship();
+die ( 'A horrible ' . "death\n" ) while $deep_sense_of_guilt;
+die ( 'A horrible ' . "death\n" ) until $clear_conscience;
+die ( 'A horrible ' . "death\n" ) for @your_crimes;
+die ( 'A horrible ' . "death\n" ) foreach @{ $songs_sung_off_key };
+
+#-----------------------------------------------------------------------------
+
+## name Complain if followed by postfix operator with "\n" ending last operand and otherwise invalid.
+## failures 24
+## cut
+
+die "A horrible death" if "Matagami\n";
+die "A horrible death" unless "Enniscorthy\n";
+die "A horrible death" while "Htargcm\n";
+die "A horrible death" until "Akhalataki\n";
+die "A horrible death" for "Fleac\n";
+die "A horrible death" foreach "Uist\n";
+
+die 'A horrible ', "death" if "Matagami\n";
+die 'A horrible ', "death" unless "Enniscorthy\n";
+die 'A horrible ', "death" while "Htargcm\n";
+die 'A horrible ', "death" until "Akhalataki\n";
+die 'A horrible ', "death" for "Fleac\n";
+die 'A horrible ', "death" foreach "Uist\n";
+
+die ( 'A horrible ', "death" ) if "Matagami\n";
+die ( 'A horrible ', "death" ) unless "Enniscorthy\n";
+die ( 'A horrible ', "death" ) while "Htargcm\n";
+die ( 'A horrible ', "death" ) until "Akhalataki\n";
+die ( 'A horrible ', "death" ) for "Fleac\n";
+die ( 'A horrible ', "death" ) foreach "Uist\n";
+
+die ( 'A horrible ' . "death" ) if "Matagami\n";
+die ( 'A horrible ' . "death" ) unless "Enniscorthy\n";
+die ( 'A horrible ' . "death" ) while "Htargcm\n";
+die ( 'A horrible ' . "death" ) until "Akhalataki\n";
+die ( 'A horrible ' . "death" ) for "Fleac\n";
+die ( 'A horrible ' . "death" ) foreach "Uist\n";
+
+#-----------------------------------------------------------------------------
+
+## name Complain if config doesn't allow newlines.
+## failures 1
+## parms { allow_messages_ending_with_newlines => 0 }
+## cut
+
+die "A horrible death\n" ;
+
+#-----------------------------------------------------------------------------
+
+##############################################################################
+# $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/t/ErrorHandling/RequireCarping.run $
+# $Date: 2008-03-16 17:40:45 -0500 (Sun, 16 Mar 2008) $
+# $Author: clonezone $
+# $Revision: 2187 $
+##############################################################################
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 78
+# indent-tabs-mode: nil
+# c-indentation-style: bsd
+# End:
+# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :