Changeset 3817


Ignore:
Timestamp:
09/16/03 16:26:32 (19 years ago)
Author:
piso
Message:

macroexpand_1(): support autoload macros.

File:
1 edited

Legend:

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

    r3782 r3817  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Lisp.java,v 1.131 2003-09-14 17:45:07 piso Exp $
     5 * $Id: Lisp.java,v 1.132 2003-09-16 16:26:32 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    204204
    205205    public static final LispObject macroexpand(LispObject form,
    206         final Environment env, final LispThread thread) throws Condition
     206                                               final Environment env,
     207                                               final LispThread thread)
     208        throws Condition
    207209    {
    208210        LispObject expanded = NIL;
     
    219221
    220222    public static final LispObject macroexpand_1(final LispObject form,
    221         final Environment env, final LispThread thread) throws Condition
     223                                                 final Environment env,
     224                                                 final LispThread thread)
     225        throws Condition
    222226    {
    223227        LispObject[] results = new LispObject[2];
     
    226230            if (car instanceof Symbol) {
    227231                LispObject obj = env.lookupFunctional(car);
     232                if (obj instanceof Autoload) {
     233                    Autoload autoload = (Autoload) obj;
     234                    autoload.load();
     235                    obj = autoload.getSymbol().getSymbolFunction();
     236                }
    228237                if (obj instanceof SpecialOperator)
    229238                    obj = Primitives.get((Symbol)car,
     
    10351044    };
    10361045
    1037     private static final void loadClass(String className)
    1038     {
    1039         try {
    1040             Class.forName(className);
    1041         }
    1042         catch (ClassNotFoundException e) {
    1043             e.printStackTrace();
    1044         }
    1045     }
    1046 
    10471046    // ### t
    10481047    public static final Symbol T = PACKAGE_CL.addExternalSymbol("T");
     
    12531252        exportConstant("LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT", PACKAGE_CL,
    12541253                       new LispFloat(- Double.MIN_VALUE));
     1254
     1255    private static final void loadClass(String className)
     1256    {
     1257        try {
     1258            Class.forName(className);
     1259        }
     1260        catch (ClassNotFoundException e) {
     1261            e.printStackTrace();
     1262        }
     1263    }
    12551264
    12561265    static {
     
    12601269        loadClass("org.armedbear.lisp.CompiledFunction");
    12611270        loadClass("org.armedbear.lisp.Autoload");
     1271        loadClass("org.armedbear.lisp.AutoloadMacro");
    12621272        loadClass("org.armedbear.lisp.cxr");
    12631273    }
Note: See TracChangeset for help on using the changeset viewer.