Changeset 11321


Ignore:
Timestamp:
09/17/08 20:45:50 (14 years ago)
Author:
ehuelsmann
Message:

Fix special declarations in SYMBOL-MACROLET, fixing symbol-macrolet.error.1.

Found by: Ville Vouitilainen

File:
1 edited

Legend:

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

    r11320 r11321  
    211211              {
    212212                Environment ext = new Environment(env);
     213                // Declare our free specials, this will correctly raise
     214                LispObject body = ext.processDeclarations(args.cdr());
     215
    213216                for (int i = varList.length(); i-- > 0;)
    214217                  {
     
    218221                      {
    219222                        Symbol symbol = checkSymbol(obj.car());
    220                         if (symbol.isSpecialVariable())
     223                        if (symbol.isSpecialVariable()
     224                             || ext.isDeclaredSpecial(symbol))
    221225                          {
    222226                            return error(new ProgramError(
     
    234238                      }
    235239                  }
    236                 return progn(args.cdr(), ext, thread);
     240                return progn(body, ext, thread);
    237241              }
    238242            finally
     
    243247        else
    244248          {
    245             return progn(args.cdr(), ext, thread);
     249            return progn(args.cdr(), env, thread);
    246250          }
    247251      }
Note: See TracChangeset for help on using the changeset viewer.