Ignore:
Timestamp:
05/16/10 20:56:32 (12 years ago)
Author:
ehuelsmann
Message:

Fix reader dispatch macro functions defined in Lisp,
trying to return no values (ie: (VALUES)).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/Stream.java

    r12648 r12693  
    736736        final Readtable rt = rta.rt(thread);
    737737        LispObject fun = rt.getDispatchMacroCharacter(dispChar, c);
    738         if (fun instanceof DispatchMacroFunction)
    739             return ((DispatchMacroFunction)fun).execute(this, c, numArg);
    740738        if (fun != NIL) {
    741             LispObject result =
    742                 thread.execute(fun, this, LispCharacter.getInstance(c),
    743                                (numArg < 0) ? NIL : Fixnum.getInstance(numArg));
    744             LispObject[] values = thread._values;
    745             if (values != null && values.length == 0)
    746                 result = null;
     739            LispObject result;
     740
    747741            thread._values = null;
    748             return result;
    749         }
     742            if (fun instanceof DispatchMacroFunction)
     743                return ((DispatchMacroFunction)fun).execute(this, c, numArg);
     744            else
     745                return
     746                    thread.execute(fun, this, LispCharacter.getInstance(c),
     747                       (numArg < 0) ? NIL : Fixnum.getInstance(numArg));
     748        }
     749
    750750        if (Symbol.READ_SUPPRESS.symbolValue(thread) != NIL)
    751751            return null;
     752
    752753        return error(new ReaderError("No dispatch function defined for #\\" + c,
    753754                                     this));
Note: See TracChangeset for help on using the changeset viewer.