Example #1
0
static int exec_program(void)
{
    int err = 0;
 again: ;
    JL_TRY {
        if (err) {
            //jl_lisp_prompt();
            //return 1;
            jl_value_t *errs = jl_stderr_obj();
            jl_value_t *e = jl_exception_in_transit;
            if (errs != NULL) {
                jl_show(jl_stderr_obj(), e);
            }
            else {
                jl_printf(JL_STDERR, "error during bootstrap: ");
                jl_static_show(JL_STDERR, e);
            }
            jl_printf(JL_STDERR, "\n");
            JL_EH_POP();
            return 1;
        }
        jl_load(program);
    }
    JL_CATCH {
        err = 1;
        goto again;
    }
    return 0;
}
Example #2
0
File: repl.c Project: Blisse/julia
static int exec_program(char *program)
{
    int err = 0;
 again: ;
    JL_TRY {
        if (err) {
            jl_value_t *errs = jl_stderr_obj();
            jl_value_t *e = jl_exception_in_transit;
            if (errs != NULL) {
                jl_show(errs, e);
            }
            else {
                jl_printf(JL_STDERR, "error during bootstrap:\n");
                jl_static_show(JL_STDERR, e);
                jl_printf(JL_STDERR, "\n");
                jlbacktrace();
            }
            jl_printf(JL_STDERR, "\n");
            JL_EH_POP();
            return 1;
        }
        jl_load(program, strlen(program));
    }
    JL_CATCH {
        err = 1;
        goto again;
    }
    return 0;
}
Example #3
0
static int exec_program(void)
{
    int err = 0;
 again: ;
    JL_TRY {
        jl_register_toplevel_eh();
        if (err) {
            //jl_lisp_prompt();
            //return 1;
            jl_value_t *errs = jl_stderr_obj();
            jl_value_t *e = jl_exception_in_transit;
            if (errs != NULL) {
                jl_show(jl_stderr_obj(), e);
            }
            else {
                while (1) {
                    if (jl_typeof(e) == (jl_type_t*)jl_loaderror_type) {
                        e = jl_fieldref(e, 2);
                        // TODO: show file and line
                    }
                    else if (jl_typeof(e) == (jl_type_t*)jl_backtrace_type) {
                        e = jl_fieldref(e, 0);
                    }
                    else break;
                }
                if (jl_typeof(e) == (jl_type_t*)jl_errorexception_type) {
                    ios_printf(ios_stderr, "error during bootstrap: %s\n",
                               jl_string_data(jl_fieldref(e,0)));
                }
                else {
                    ios_printf(ios_stderr, "error during bootstrap\n");
                }
            }
            ios_printf(ios_stderr, "\n");
            JL_EH_POP();
            return 1;
        }
        jl_load(program);
    }
    JL_CATCH {
        err = 1;
        goto again;
    }
    return 0;
}
Example #4
0
File: repl.c Project: julienr/julia
DLLEXPORT void jl_eval_user_input(jl_value_t *ast, int show_value)
{
    if (jl_have_event_loop) {
        // with multi.j loaded the command line input callback can return
        // before the command finishes running, so we have to
        // disable rl to prevent the prompt from reappearing too soon.
        repl_callback_disable();
    }
    JL_GC_PUSH(&ast);
    assert(ast != NULL);
    int iserr = 0;

 again:
    ;
    JL_TRY {
        jl_register_toplevel_eh();
        if (have_color) {
            ios_printf(ios_stdout, jl_color_normal);
        }
        if (iserr) {
            jl_show(jl_exception_in_transit);
            ios_printf(ios_stdout, "\n");
            JL_EH_POP();
            break; // leave JL_TRY
        }
        jl_value_t *value = jl_toplevel_eval(ast);
        jl_set_global(jl_system_module, jl_symbol("ans"), value);
        if (value != (jl_value_t*)jl_nothing && show_value) {
            if (have_color) {
                ios_printf(ios_stdout, jl_answer_color());
            }
            repl_show_value(value);
            ios_printf(ios_stdout, "\n");
        }
    }
    JL_CATCH {
        iserr = 1;
        goto again;
    }
    ios_printf(ios_stdout, "\n");
    JL_GC_POP();
    repl_callback_enable();
}
Example #5
0
File: repl.c Project: julienr/julia
static int exec_program(void)
{
    int err = 0;
 again: ;
    JL_TRY {
        jl_register_toplevel_eh();
        if (err) {
            jl_show(jl_exception_in_transit);
            ios_printf(ios_stdout, "\n");
            JL_EH_POP();
            return 1;
        }
        jl_load(program);
    }
    JL_CATCH {
        err = 1;
        goto again;
    }
    return 0;
}