rfg@paris.ics.uci.edu (Ronald Guilmette) (02/20/90)
// cfront 2.0 bug 900219_01 // cfront allows functions, operators and type conversion operators to be // declared (and defined) to return array type values if a typedef name is // used as the return type designator. // cfront will issue a warning for such usage in definitions, but is totally // silent about such usage in declarations. Both definitions and declarations // should get errors. // Further, the C code generated for such usage is not accepted by at least // one ANSI C compiler (gcc). // The gcc and g++ compilers disallow functions returning arrays and issue // appropriate error messages. typedef int array_type[]; array_type global_array_object = { 1, 2, 3 }; // OK struct struct0 { }; array_type global_function (); // ERROR array_type operator ! (struct0);// ERROR array_type global_function () // ERROR - cfront gives warning only { return global_array_object; } array_type operator ! (struct0) // ERROR - cfront gives warning only { return global_array_object; } struct struct1 { array_type member_function (); // ERROR operator array_type (); // ERROR }; array_type struct1::member_function () // ERROR - cfront gives warning { return global_array_object; } struct1::operator array_type () // ERROR - cfront gives warning { return global_array_object; }; int main () { return 0; }