| 2911 | } |
| 2912 | |
| 2913 | static void argument_error( char const * message, FUNCTION * procedure, |
| 2914 | FRAME * frame, OBJECT * arg ) |
| 2915 | { |
| 2916 | extern void print_source_line( FRAME * ); |
| 2917 | LOL * actual = frame->args; |
| 2918 | backtrace_line( frame->prev ); |
| 2919 | printf( "*** argument error\n* rule %s ( ", frame->rulename ); |
| 2920 | argument_list_print( procedure->formal_arguments, |
| 2921 | procedure->num_formal_arguments ); |
| 2922 | printf( " )\n* called with: ( " ); |
| 2923 | lol_print( actual ); |
| 2924 | printf( " )\n* %s %s\n", message, arg ? object_str ( arg ) : "" ); |
| 2925 | function_location( procedure, &frame->file, &frame->line ); |
| 2926 | print_source_line( frame ); |
| 2927 | printf( "see definition of rule '%s' being called\n", frame->rulename ); |
| 2928 | backtrace( frame->prev ); |
| 2929 | exit( 1 ); |
| 2930 | } |
| 2931 | |
| 2932 | static void type_check_range( OBJECT * type_name, LISTITER iter, LISTITER end, |
| 2933 | FRAME * caller, FUNCTION * called, OBJECT * arg_name ) |
no test coverage detected