Changeset 11337


Ignore:
Timestamp:
10/06/08 18:54:08 (13 years ago)
Author:
ehuelsmann
Message:

Cleanup: merge bindKeywordParameterDefaults and bindOptionalParameterDefaults.

Patch by: Ville Voutilainen <ville.voutilainen at gmail dot com>

File:
1 edited

Legend:

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

    r11336 r11337  
    412412    if (arity != arityValue)
    413413      {
    414         if (optionalParameters.length > 0)
    415           bindOptionalParameterDefaults(ext, thread);
     414        bindParameterDefaults(optionalParameters, ext, thread);
    416415        if (restVar != null)
    417416          bindArg(restVar, NIL, ext, thread);
    418         if (keywordParameters.length > 0)
    419           bindKeywordParameterDefaults(ext, thread);
     417        bindParameterDefaults(keywordParameters, ext, thread);
    420418      }
    421419    bindAuxVars(ext, thread);
     
    655653    if (sym.isSpecialVariable())
    656654      return true;
    657     if (specials != null)
    658       {
    659         for (Symbol special : specials)
    660           {
    661             if (sym == special)
    662               return true;
    663           }
     655    for (Symbol special : specials)
     656      {
     657        if (sym == special)
     658            return true;
    664659      }
    665660    return false;
     
    682677    if (argsLength < minArgs)
    683678      error(new WrongNumberOfArgumentsException(this));
    684     if (thread == null)
    685       thread = LispThread.currentThread();
    686679    final LispObject[] array = new LispObject[variables.length];
    687680    int index = 0;
     
    1001994  }
    1002995
    1003   private final void bindOptionalParameterDefaults(Environment env,
    1004                                                    LispThread thread)
    1005     throws ConditionThrowable
    1006   {
    1007     for (Parameter parameter : optionalParameters)
    1008       {
    1009         LispObject value;
    1010         if (parameter.initVal != null)
    1011           value = parameter.initVal;
    1012         else
    1013           value = eval(parameter.initForm, env, thread);
    1014         bindArg(parameter.var, value, env, thread);
    1015         if (parameter.svar != NIL)
    1016             bindArg((Symbol)parameter.svar, NIL, env, thread);
    1017       }
    1018   }
    1019 
    1020   private final void bindKeywordParameterDefaults(Environment env,
    1021                                                   LispThread thread)
    1022     throws ConditionThrowable
    1023   {
    1024     for (Parameter parameter : keywordParameters)
     996  private final void bindParameterDefaults(Parameter[] parameters,
     997                                           Environment env,
     998                                           LispThread thread)
     999    throws ConditionThrowable
     1000  {
     1001    for (Parameter parameter : parameters)
    10251002      {
    10261003        LispObject value;
Note: See TracChangeset for help on using the changeset viewer.