# New Ticket Created by Andrew Whitworth # Please include the string: [perl #56968] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=56968 >
I found this today while looking for error-reporting functions. The function src/warnings.c:Parrot_warn_s is almost completely unused except in 1 test in t/src/warnings.t. The attached patch removes this function and the associated test because it's dead code with no apparent purpose. On a side note, if people don't want to delete this function for whatever reason, the function prototype should be changed from NULLOK_INTERP to PARROT_INTERP, since the first line of the function tests for the existance of interp and returns an error if it's null. Better to find a null interp error at compile time then at runtime. --Andrew Whitworth
Index: src/warnings.c =================================================================== --- src/warnings.c (revision 29495) +++ src/warnings.c (working copy) @@ -117,39 +117,6 @@ /* -=item C<INTVAL Parrot_warn_s> - -The Parrot C<STRING> warning/error reporter. - -Returns 2 on error, 1 on success. - -C<message, ..> can be a C<Parrot_vsprintf_s()> format with arguments. - -=cut - -*/ - -PARROT_API -INTVAL -Parrot_warn_s(NULLOK_INTERP, INTVAL warnclass, - ARGIN(STRING *message), ...) -{ - if (!interp || !PARROT_WARNINGS_test(interp, warnclass)) - return 2; - else { - STRING *targ; - va_list args; - - va_start(args, message); - targ = Parrot_vsprintf_s(interp, message, args); - va_end(args); - - return print_warning(interp, targ); - } -} - -/* - =back =head1 SEE ALSO Index: include/parrot/string_funcs.h =================================================================== --- include/parrot/string_funcs.h (revision 29495) +++ include/parrot/string_funcs.h (working copy) @@ -86,6 +86,14 @@ PARROT_API PARROT_WARN_UNUSED_RESULT +PARROT_CANNOT_RETURN_NULL +PMC* Parrot_string_split(PARROT_INTERP, + ARGIN_NULLOK(STRING *delim), + ARGIN_NULLOK(STRING *str)) + __attribute__nonnull__(1); + +PARROT_API +PARROT_WARN_UNUSED_RESULT PARROT_CAN_RETURN_NULL STRING* Parrot_string_trans_charset(PARROT_INTERP, ARGMOD_NULLOK(STRING *src), @@ -425,14 +433,6 @@ PARROT_API PARROT_WARN_UNUSED_RESULT -PARROT_CANNOT_RETURN_NULL -PMC* Parrot_string_split(PARROT_INTERP, - ARGIN_NULLOK(STRING *delim), - ARGIN_NULLOK(STRING *str)) - __attribute__nonnull__(1); - -PARROT_API -PARROT_WARN_UNUSED_RESULT INTVAL string_str_index(PARROT_INTERP, ARGIN(const STRING *s), ARGIN(const STRING *s2), Index: include/parrot/warnings.h =================================================================== --- include/parrot/warnings.h (revision 29495) +++ include/parrot/warnings.h (working copy) @@ -65,14 +65,6 @@ __attribute__nonnull__(3); PARROT_API -INTVAL Parrot_warn_s( - NULLOK_INTERP, - INTVAL warnclass, - ARGIN(STRING *message), - ...) - __attribute__nonnull__(3); - -PARROT_API void print_pbc_location(PARROT_INTERP) __attribute__nonnull__(1); Index: t/src/warnings.t =================================================================== --- t/src/warnings.t (revision 29495) +++ t/src/warnings.t (working copy) @@ -115,84 +115,6 @@ 2 OUTPUT -c_output_is( <<'CODE', <<'OUTPUT', "Parrot_warn_s" ); - -#include <parrot/parrot.h> -#include <parrot/embed.h> - -int -main(int argc, char* argv[]) -{ - Interp *interp; - int error_val; - STRING *S; - - interp = Parrot_new(NULL); - if (!interp) { - return 1; - } - PARROT_WARNINGS_on(interp, PARROT_WARNINGS_ALL_FLAG); - - S = Parrot_sprintf_c(interp, "eek"); - error_val = Parrot_warn_s(interp, PARROT_WARNINGS_ALL_FLAG, S); - PIO_eprintf(interp, "%d\n", error_val); - - /* warnings are on, this should return an error */ - error_val = Parrot_warn_s(interp, PARROT_WARNINGS_NONE_FLAG, S); - PIO_eprintf(interp, "%d\n", error_val); - - error_val = Parrot_warn_s(interp, PARROT_WARNINGS_UNDEF_FLAG, S); - PIO_eprintf(interp, "%d\n", error_val); - - error_val = Parrot_warn_s(interp, PARROT_WARNINGS_IO_FLAG, S); - PIO_eprintf(interp, "%d\n", error_val); - - error_val = Parrot_warn_s(interp, PARROT_WARNINGS_PLATFORM_FLAG, S); - PIO_eprintf(interp, "%d\n", error_val); - - error_val = Parrot_warn_s(interp, PARROT_WARNINGS_DYNEXT_FLAG, S); - PIO_eprintf(interp, "%d\n", error_val); - - #ifndef __cplusplus - error_val = Parrot_warn_s(interp, 0, "eek"); /* should return error */ - #else - /* Fake the result to avoid rewrite the test */ - error_val = 2; - #endif - PIO_eprintf(interp, "%d\n", error_val); - - #ifndef __cplusplus - error_val = Parrot_warn_s(NULL, 0, "eek"); /* should return error */ - #else - /* Fake the result to avoid rewrite the test */ - error_val = 2; - #endif - PIO_eprintf(interp, "%d\n", error_val); - - Parrot_exit(interp, 0); - return 0; -} -CODE -eek -(null) -1 -2 -eek -(null) -1 -eek -(null) -1 -eek -(null) -1 -eek -(null) -1 -2 -2 -OUTPUT - # Local Variables: # mode: cperl # cperl-indent-level: 4