[armedbear-cvs] r12693 - trunk/abcl/src/org/armedbear/lisp
Erik Huelsmann
ehuelsmann at common-lisp.net
Sun May 16 20:56:33 UTC 2010
Author: ehuelsmann
Date: Sun May 16 16:56:32 2010
New Revision: 12693
Log:
Fix reader dispatch macro functions defined in Lisp,
trying to return no values (ie: (VALUES)).
Modified:
trunk/abcl/src/org/armedbear/lisp/Stream.java
Modified: trunk/abcl/src/org/armedbear/lisp/Stream.java
==============================================================================
--- trunk/abcl/src/org/armedbear/lisp/Stream.java (original)
+++ trunk/abcl/src/org/armedbear/lisp/Stream.java Sun May 16 16:56:32 2010
@@ -735,20 +735,21 @@
final LispThread thread = LispThread.currentThread();
final Readtable rt = rta.rt(thread);
LispObject fun = rt.getDispatchMacroCharacter(dispChar, c);
- if (fun instanceof DispatchMacroFunction)
- return ((DispatchMacroFunction)fun).execute(this, c, numArg);
if (fun != NIL) {
- LispObject result =
- thread.execute(fun, this, LispCharacter.getInstance(c),
- (numArg < 0) ? NIL : Fixnum.getInstance(numArg));
- LispObject[] values = thread._values;
- if (values != null && values.length == 0)
- result = null;
+ LispObject result;
+
thread._values = null;
- return result;
+ if (fun instanceof DispatchMacroFunction)
+ return ((DispatchMacroFunction)fun).execute(this, c, numArg);
+ else
+ return
+ thread.execute(fun, this, LispCharacter.getInstance(c),
+ (numArg < 0) ? NIL : Fixnum.getInstance(numArg));
}
+
if (Symbol.READ_SUPPRESS.symbolValue(thread) != NIL)
return null;
+
return error(new ReaderError("No dispatch function defined for #\\" + c,
this));
}
More information about the armedbear-cvs
mailing list