On Mon, 14 Jan 2002, Nicholas Clark wrote:
> On Sun, Jan 13, 2002 at 02:14:08PM -0500, Dan Sugalski wrote: > > So, I'm turning off the unused parameter warning for now to shut the .ops > > file compiles up. After that point, all submitted patches must generate no > > more warnings than were currently being generated, and all submitted > > patches must *not* generate warnings in the areas they patch. > > According to the letter of that, this patch isn't acceptable because it > causes warnings not previously seen to appear. > > All the C files in classes/ weren't being compiled with an of the gcc > warnings flags. With this patch they are, and there are an awful lot of > warnings, more than I could hope to understand and clear up (within any > sensible time period before submitting a rash of patches, by which time > everyone else would have moved the code on) > > Pragmatically I believe it's better to apply it than not, but the raft of > warnings it now creates will obscure any "real" new ones. > Most of the new warnings seem to be from two distinct sources. The majority are of the form: warning: no previos prototype for `Parrot_...' while most of the rest are: warning: control reaches end of non-void function I'm not sure what to do about the former. The latter generally seem to arise from unimplemented methods. Accordingly, I've added a new exception, PMC_FN_NOT_IMPLEMENTED, to exception.h, and I'm working on getting all of the currently unimplemented methods to throw this exception. Patches below to exception.h and to perlnum.pmc - patches for the other PMCs will follow shortly. Ultimately, we'll want to change some of these exceptions to something more informative, as some of these methods should never be implemented; for instance, calling set_integer_index on a PerlNum doesn't make much sense. This should do for the time being, however. Simon --- include/parrot/exceptions.h.old Tue Jan 15 12:39:38 2002 +++ include/parrot/exceptions.h Tue Jan 15 12:57:29 2002 @@ -39,6 +39,7 @@ #define PARROT_POINTER_ERROR 1 #define DIV_BY_ZERO 1 #define IO_NOT_IMPLEMENTED 1 +#define PMC_FN_NOT_IMPLEMENTED 1 #endif --- classes/perlnum.pmc.old Tue Jan 15 12:41:23 2002 +++ classes/perlnum.pmc Tue Jan 15 12:57:15 2002 @@ -32,7 +32,9 @@ } void morph (INTVAL type) { -fprintf(stderr,"morph not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->morph not implemented\n"); + return; } BOOLVAL move_to (void * destination) { @@ -44,6 +46,9 @@ } void destroy () { + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->destroy not implemented\n"); + return; } INTVAL get_integer () { @@ -51,6 +56,9 @@ } INTVAL get_integer_index (INTVAL index) { + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->get_integer_index not implemented\n"); + return 0; } FLOATVAL get_number () { @@ -58,6 +66,9 @@ } FLOATVAL get_number_index (INTVAL index) { + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->get_number_index not implemented\n"); + return 0; } STRING* get_string () { @@ -74,6 +85,9 @@ } STRING* get_string_index (INTVAL index) { + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->get_string_index not implemented\n"); + return NULL; } BOOLVAL get_bool () { @@ -101,6 +115,9 @@ } void set_integer_bigint (BIGINT value) { + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->set_integer_bigint not implemented\n"); + return; } void set_integer_same (PMC * value) { @@ -109,6 +126,9 @@ } void set_integer_index (INTVAL value, INTVAL index) { + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->set_integer_index not implemented\n"); + return; } void set_number (PMC * value) { @@ -120,7 +140,9 @@ } void set_number_bigfloat (BIGFLOAT value) { -fprintf(stderr,"set_number_bigfloat not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->set_number_bigfloat not implemented\n"); + return; } void set_number_same (PMC * value) { @@ -128,6 +150,9 @@ } void set_number_index (FLOATVAL value, INTVAL index) { + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->set_number_index not implemented\n"); + return; } void set_string (PMC * value) { @@ -156,10 +181,15 @@ } void set_string_index (STRING* value, INTVAL index) { + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->set_string_index not implemented\n"); + return; } void set_value (void* value) { -fprintf(stderr,"set_value not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->set_value not implemented\n"); + return; } void add (PMC * value, PMC* dest) { @@ -191,15 +221,21 @@ } void add_bigint (BIGINT value, PMC* dest) { -fprintf(stderr,"add_bigint not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->add_bigint not implemented\n"); + return; } void add_float (FLOATVAL value, PMC* dest) { -fprintf(stderr,"add_float not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->add_float not implemented\n"); + return; } void add_bigfloat (BIGFLOAT value, PMC* dest) { -fprintf(stderr,"add_bigfloat not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->add_bigfloat not implemented\n"); + return; } void add_same (PMC * value, PMC* dest) { @@ -232,15 +268,21 @@ } void subtract_bigint (BIGINT value, PMC* dest) { -fprintf(stderr,"subtract_bigint not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->subtract_bigint not implemented\n"); + return; } void subtract_float (FLOATVAL value, PMC* dest) { -fprintf(stderr,"subtract_float not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->subtract_float not implemented\n"); + return; } void subtract_bigfloat (BIGFLOAT value, PMC* dest) { -fprintf(stderr,"subtract_bigfloat not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->subtract_bigfloat not implemented\n"); + return; } void subtract_same (PMC * value, PMC* dest) { @@ -273,15 +315,21 @@ } void multiply_bigint (BIGINT value, PMC* dest) { -fprintf(stderr,"multiply_bigint not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->multiply_bigint not implemented\n"); + return; } void multiply_float (FLOATVAL value, PMC* dest) { -fprintf(stderr,"multiply_float not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->multiply_float not implemented\n"); + return; } void multiply_bigfloat (BIGFLOAT value, PMC* dest) { -fprintf(stderr,"multiply_bigfloat not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->multiply_bigfloat not implemented\n"); + return; } void multiply_same (PMC * value, PMC* dest) { @@ -314,15 +362,21 @@ } void divide_bigint (BIGINT value, PMC* dest) { -fprintf(stderr,"divide_bigint not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->divide_bigint not implemented\n"); + return; } void divide_float (FLOATVAL value, PMC* dest) { -fprintf(stderr,"divide_float not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->divide_float not implemented\n"); + return; } void divide_bigfloat (BIGFLOAT value, PMC* dest) { -fprintf(stderr,"divide_bigfloat not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->divide_bigfloat not implemented\n"); + return; } void divide_same (PMC * value, PMC* dest) { @@ -330,27 +384,39 @@ } void modulus (PMC * value, PMC* dest) { -fprintf(stderr,"modulus not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->modulus not implemented\n"); + return; } void modulus_int (INTVAL value, PMC* dest) { -fprintf(stderr,"modulus_int not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->modulus_int not implemented\n"); + return; } void modulus_bigint (BIGINT value, PMC* dest) { -fprintf(stderr,"modulus_bigint not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->modulus_bigint not implemented\n"); + return; } void modulus_float (FLOATVAL value, PMC* dest) { -fprintf(stderr,"modulus_float not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->modulus_float not implemented\n"); + return; } void modulus_bigfloat (BIGFLOAT value, PMC* dest) { -fprintf(stderr,"modulus_bigfloat not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->modulus_bigfloat not implemented\n"); + return; } void modulus_same (PMC * value, PMC* dest) { -fprintf(stderr,"modulus_same not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->modulus_same not implemented\n"); + return; } void concatenate (PMC * value, PMC* dest) { @@ -420,42 +486,62 @@ void logical_not (PMC* value) = default; void match (PMC * value,REGEX* re) { -fprintf(stderr,"match not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->match not implemented\n"); + return; } void match_native (STRING * value, REGEX* re) { -fprintf(stderr,"match_native not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->match_native not implemented\n"); + return; } void match_unicode (STRING * value, REGEX* re) { -fprintf(stderr,"match_unicode not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->match_unicode not implemented\n"); + return; } void match_other (STRING * value, REGEX* re) { -fprintf(stderr,"match_other not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->match_other not implemented\n"); + return; } void match_same (PMC * value,REGEX* re) { -fprintf(stderr,"match_same not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->match_same not implemented\n"); + return; } void repeat (PMC * value, PMC* dest) { -fprintf(stderr,"repeat not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->repeat not implemented\n"); + return; } void repeat_native (STRING * value, PMC* dest) { -fprintf(stderr,"repeat_native not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->repeat_native not implemented\n"); + return; } void repeat_unicode (STRING * value, PMC* dest) { -fprintf(stderr,"repeat_unicode not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->repeat_unicode not implemented\n"); + return; } void repeat_other (STRING * value, PMC* dest) { -fprintf(stderr,"repeat_other not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->repeat_other not implemented\n"); + return; } void repeat_same (PMC * value, PMC* dest) { -fprintf(stderr,"repeat_same not implemented\n"); + internal_exception(PMC_FN_NOT_IMPLEMENTED, + "PerlNum->same not implemented\n"); + return; } }