File tree 3 files changed +25
-5
lines changed
3 files changed +25
-5
lines changed Original file line number Diff line number Diff line change 181
181
jl_get_current_task;
182
182
jl_enter_handler;
183
183
jl_exception_in_transit;
184
+ jl_errorexception_type;
185
+ jl_loaderror_type;
186
+ jl_backtrace_type;
184
187
jl_show;
185
188
jl_show_any;
186
189
jl_print_symbol;
Original file line number Diff line number Diff line change @@ -342,10 +342,10 @@ extern jl_typename_t *jl_array_typename;
342
342
extern jl_struct_type_t * jl_weakref_type ;
343
343
extern jl_struct_type_t * jl_ascii_string_type ;
344
344
extern jl_struct_type_t * jl_utf8_string_type ;
345
- extern jl_struct_type_t * jl_errorexception_type ;
345
+ extern DLLEXPORT jl_struct_type_t * jl_errorexception_type ;
346
346
extern jl_struct_type_t * jl_typeerror_type ;
347
- extern jl_struct_type_t * jl_loaderror_type ;
348
- extern jl_struct_type_t * jl_backtrace_type ;
347
+ extern DLLEXPORT jl_struct_type_t * jl_loaderror_type ;
348
+ extern DLLEXPORT jl_struct_type_t * jl_backtrace_type ;
349
349
extern jl_value_t * jl_stackovf_exception ;
350
350
extern jl_value_t * jl_memory_exception ;
351
351
extern jl_value_t * jl_divbyzero_exception ;
Original file line number Diff line number Diff line change @@ -147,11 +147,28 @@ static int exec_program(void)
147
147
//jl_lisp_prompt();
148
148
//return 1;
149
149
jl_value_t * errs = jl_stderr_obj ();
150
+ jl_value_t * e = jl_exception_in_transit ;
150
151
if (errs != NULL ) {
151
- jl_show (jl_stderr_obj (), jl_exception_in_transit );
152
+ jl_show (jl_stderr_obj (), e );
152
153
}
153
154
else {
154
- ios_printf (ios_stderr , "error during bootstrap\n" );
155
+ while (1 ) {
156
+ if (jl_typeof (e ) == (jl_type_t * )jl_loaderror_type ) {
157
+ e = jl_fieldref (e , 2 );
158
+ // TODO: show file and line
159
+ }
160
+ else if (jl_typeof (e ) == (jl_type_t * )jl_backtrace_type ) {
161
+ e = jl_fieldref (e , 0 );
162
+ }
163
+ else break ;
164
+ }
165
+ if (jl_typeof (e ) == (jl_type_t * )jl_errorexception_type ) {
166
+ ios_printf (ios_stderr , "error during bootstrap: %s\n" ,
167
+ jl_string_data (jl_fieldref (e ,0 )));
168
+ }
169
+ else {
170
+ ios_printf (ios_stderr , "error during bootstrap\n" );
171
+ }
155
172
}
156
173
ios_printf (ios_stderr , "\n" );
157
174
JL_EH_POP ();
You can’t perform that action at this time.
0 commit comments