[Ecls-list] “Cannot find the external symbol...” convenience restart

Juan Jose Garcia-Ripoll juanjose.garciaripoll at googlemail.com
Sat Sep 13 19:59:08 UTC 2008


On Sat, Sep 13, 2008 at 9:27 PM, Leslie P. Polzer
<sky at viridian-project.de>wrote:

> How about providing a restart for accessing the symbol
> nevertheless, if it's an internal symbol?


There is a problem with this which is not related to the internal / external
problem and which is that if the debugger jumps in when the reader is
working, then all the input is trashed. Suppose we add the code below in
ecl_read_object_with_delimiter() Now you type

> (list 'c:inexistent-symbol 2)

When the reader gets to the token c:var the debugger jumps in an it has to
first clear the input buffer, thus eliminating the remaining objects 2 and
#\).  What do we do then? I understand this is an even more inconvenient way
to handle the external symbol problem.

Juanjo

--- potential fix ----
    if (external_symbol) {
        x = ecl_find_symbol(token, p, &intern_flag);
        if (intern_flag == EXTERNAL)
            goto OUTPUT;
        CEerror(@'intern',
            "Cannot find the external symbol ~A in ~S.",
            2, si_copy_to_simple_base_string(token), p);
    }
    if (p == Cnil) {
        p = ecl_current_package();
    }
    /* INV: cl_make_symbol() copies the string */
    x = ecl_intern(token, p, &intern_flag);
 OUTPUT:
    si_put_buffer_string(token);
    return x;


-- 
Instituto de Física Fundamental
CSIC, Serrano, 113, Madrid 28040 (Spain)
http://juanjose.garciaripoll.googlepages.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20080913/ae7eed51/attachment.html>


More information about the ecl-devel mailing list