| 3010 | } |
| 3011 | |
| 3012 | static void argument_error( char const * message, FUNCTION * procedure, |
| 3013 | FRAME * frame, OBJECT * arg ) |
| 3014 | { |
| 3015 | extern void print_source_line( FRAME * ); |
| 3016 | LOL * actual = frame->args; |
| 3017 | backtrace_line( frame->prev ); |
| 3018 | out_printf( "*** argument error\n* rule %s ( ", frame->rulename ); |
| 3019 | argument_list_print( procedure->formal_arguments, |
| 3020 | procedure->num_formal_arguments ); |
| 3021 | out_printf( " )\n* called with: ( " ); |
| 3022 | lol_print( actual ); |
| 3023 | out_printf( " )\n* %s %s\n", message, arg ? object_str ( arg ) : "" ); |
| 3024 | function_location( procedure, &frame->file, &frame->line ); |
| 3025 | print_source_line( frame ); |
| 3026 | out_printf( "see definition of rule '%s' being called\n", frame->rulename ); |
| 3027 | backtrace( frame->prev ); |
| 3028 | exit( EXITBAD ); |
| 3029 | } |
| 3030 | |
| 3031 | static void type_check_range( OBJECT * type_name, LISTITER iter, LISTITER end, |
| 3032 | FRAME * caller, FUNCTION * called, OBJECT * arg_name ) |
no test coverage detected