Changeset 5142


Ignore:
Timestamp:
12/15/03 14:09:03 (18 years ago)
Author:
piso
Message:

WARN is now implemented in restart.lisp.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/Primitives.java

    r5139 r5142  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Primitives.java,v 1.533 2003-12-15 01:55:03 piso Exp $
     5 * $Id: Primitives.java,v 1.534 2003-12-15 14:09:03 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    12321232    };
    12331233
    1234     // ### warn
    1235     private static final Primitive WARN = new Primitive("warn", "datum &rest arguments")
    1236     {
    1237         public LispObject execute(LispObject[] args) throws ConditionThrowable
    1238         {
    1239             if (args.length < 1)
    1240                 signal(new WrongNumberOfArgumentsException(this));
    1241             final CharacterOutputStream out =
    1242                 checkCharacterOutputStream(_ERROR_OUTPUT_.symbolValue());
    1243             LispObject datum = args[0];
    1244             Condition condition;
    1245             if (datum instanceof Condition) {
    1246                 condition = (Condition) datum;
    1247             } else if (datum instanceof Symbol) {
    1248                 LispObject initArgs = NIL;
    1249                 for (int i = 1; i < args.length; i++)
    1250                     initArgs = new Cons(args[i], initArgs);
    1251                 initArgs = initArgs.nreverse();
    1252                 if (datum == Symbol.WARNING)
    1253                     condition = new Warning(initArgs);
    1254                 else if (datum == Symbol.SIMPLE_WARNING)
    1255                     condition = new SimpleWarning(initArgs);
    1256                 else {
    1257                     signal(new TypeError(datum, Symbol.WARNING));
    1258                     return NIL;
    1259                 }
    1260             } else {
    1261                 // Default is SIMPLE-WARNING.
    1262                 LispObject formatControl = args[0];
    1263                 LispObject formatArguments = NIL;
    1264                 for (int i = 1; i < args.length; i++)
    1265                     formatArguments = new Cons(formatArguments, new Cons(args[i]));
    1266                 condition = new SimpleWarning(formatControl, formatArguments);
    1267             }
    1268             final LispThread thread = LispThread.currentThread();
    1269             Environment oldDynEnv = thread.getDynamicEnvironment();
    1270             thread.bindSpecial(_PRINT_ESCAPE_, NIL);
    1271             try {
    1272                 out.freshLine();
    1273                 out.princ(condition);
    1274             }
    1275             finally {
    1276                 thread.setDynamicEnvironment(oldDynEnv);
    1277             }
    1278             return NIL;
    1279         }
    1280     };
    1281 
    12821234    // ### signal
    12831235    private static final Primitive SIGNAL =
Note: See TracChangeset for help on using the changeset viewer.