Changeset 4551


Ignore:
Timestamp:
10/27/03 17:57:41 (19 years ago)
Author:
piso
Message:

SETQ

File:
1 edited

Legend:

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

    r4539 r4551  
    33 *
    44 * Copyright (C) 2003 Peter Graves
    5  * $Id: SpecialOperators.java,v 1.7 2003-10-25 21:53:23 piso Exp $
     5 * $Id: SpecialOperators.java,v 1.8 2003-10-27 17:57:41 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    324324
    325325    // ### setq
    326     private static final SpecialOperator SETQ = new SpecialOperator("setq") {
     326    private static final SpecialOperator SETQ = new SpecialOperator("setq")
     327    {
    327328        public LispObject execute(LispObject args, Environment env)
    328329            throws ConditionThrowable
     
    334335                args = args.cdr();
    335336                value = eval(args.car(), env, thread);
     337                Binding binding = null;
    336338                if (symbol.isSpecialVariable()) {
    337339                    Environment dynEnv = thread.getDynamicEnvironment();
    338                     if (dynEnv != null) {
    339                         Binding binding = dynEnv.getBinding(symbol);
    340                         if (binding != null) {
    341                             binding.value = value;
    342                             args = args.cdr();
    343                             continue;
    344                         }
    345                     }
    346                     symbol.setSymbolValue(value);
    347                     args = args.cdr();
    348                     continue;
    349                 }
    350                 // Not special.
    351                 Binding binding = env.getBinding(symbol);
     340                    if (dynEnv != null)
     341                        binding = dynEnv.getBinding(symbol);
     342                } else {
     343                    // Not special.
     344                    binding = env.getBinding(symbol);
     345                }
    352346                if (binding != null)
    353347                    binding.value = value;
Note: See TracChangeset for help on using the changeset viewer.