Changeset 4566


Ignore:
Timestamp:
10/29/03 00:32:51 (18 years ago)
Author:
piso
Message:

SETQ

File:
1 edited

Legend:

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

    r4558 r4566  
    33 *
    44 * Copyright (C) 2003 Peter Graves
    5  * $Id: SpecialOperators.java,v 1.10 2003-10-28 16:01:02 piso Exp $
     5 * $Id: SpecialOperators.java,v 1.11 2003-10-29 00:32:51 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    343343                Symbol symbol = checkSymbol(args.car());
    344344                args = args.cdr();
    345                 value = eval(args.car(), env, thread);
    346345                Binding binding = null;
    347346                if (symbol.isSpecialVariable()) {
     
    357356                        LispObject expansion =
    358357                            ((SymbolMacro)binding.value).getExpansion();
    359                         LispObject form = list3(Symbol.SETF, expansion, value);
    360                         eval(form, env, thread);
    361                     } else
     358                        LispObject form = list3(Symbol.SETF, expansion, args.car());
     359                        value = eval(form, env, thread);
     360                    } else {
     361                        value = eval(args.car(), env, thread);
    362362                        binding.value = value;
     363                    }
    363364                } else {
    364365                    if (symbol.getSymbolValue() instanceof SymbolMacro) {
    365366                        LispObject expansion =
    366367                            ((SymbolMacro)symbol.getSymbolValue()).getExpansion();
    367                         LispObject form = list3(Symbol.SETF, expansion, value);
    368                         eval(form, env, thread);
    369                     } else
     368                        LispObject form = list3(Symbol.SETF, expansion, args.car());
     369                        value = eval(form, env, thread);
     370                    } else {
     371                        value = eval(args.car(), env, thread);
    370372                        symbol.setSymbolValue(value);
     373                    }
    371374                }
    372375                args = args.cdr();
Note: See TracChangeset for help on using the changeset viewer.