Changeset 14479


Ignore:
Timestamp:
04/24/13 12:51:16 (10 years ago)
Author:
rschlatte
Message:

Rename and slightly refactor sys:make-slot-definition

  • rename to %make-slot-definition, make class argument mandatory
  • adjust call sites
  • also move checkSlotDefinition() method to location of sole caller
Location:
trunk/abcl/src/org/armedbear/lisp
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/Autoload.java

    r14478 r14479  
    643643        autoload(PACKAGE_SYS, "make-layout", "Layout", true);
    644644        autoload(PACKAGE_SYS, "make-single-float", "FloatFunctions", true);
    645         autoload(PACKAGE_SYS, "make-slot-definition", "SlotDefinition", true);
     645        autoload(PACKAGE_SYS, "%make-slot-definition", "SlotDefinition", true);
    646646        autoload(PACKAGE_SYS, "make-structure-class", "StructureClass");
    647647        autoload(PACKAGE_SYS, "make-symbol-macro", "Primitives");
  • trunk/abcl/src/org/armedbear/lisp/SlotDefinition.java

    r14478 r14479  
    3838public final class SlotDefinition extends StandardObject
    3939{
    40   public SlotDefinition()
     40  private SlotDefinition()
    4141  {
    4242    super(StandardClass.STANDARD_SLOT_DEFINITION,
     
    4747  }
    4848
    49   public SlotDefinition(StandardClass clazz) {
     49  private SlotDefinition(StandardClass clazz) {
    5050    // clazz layout needs to have SlotDefinitionClass layout as prefix
    5151    // or indexed slot access won't work
     
    123123  }
    124124
    125   public static StandardObject checkSlotDefinition(LispObject obj) {
    126     if (obj instanceof StandardObject) return (StandardObject)obj;
    127     return (StandardObject)type_error(obj, Symbol.SLOT_DEFINITION);
    128   }
    129 
    130125  @Override
    131126  public String printObject()
     
    143138  private static final Primitive MAKE_SLOT_DEFINITION
    144139    = new pf_make_slot_definition();
    145   @DocString(name="make-slot-definition",
    146              args="&optional class",
    147              doc="Cannot be called with user-defined subclasses of standard-slot-definition.")
     140  @DocString(name="%make-slot-definition",
     141             args="slot-class",
     142             doc="Argument must be a subclass of standard-slot-definition")
    148143  private static final class pf_make_slot_definition extends Primitive
    149144  {
    150145    pf_make_slot_definition()
    151146    {
    152       super("make-slot-definition", PACKAGE_SYS, true, "&optional class");
    153     }
    154     @Override
    155     public LispObject execute()
    156     {
    157       return new SlotDefinition();
     147      super("%make-slot-definition", PACKAGE_SYS, true, "slot-class");
    158148    }
    159149    @Override
    160150    public LispObject execute(LispObject slotDefinitionClass)
    161151    {
    162       return new SlotDefinition((StandardClass) slotDefinitionClass);
     152      if (!(slotDefinitionClass instanceof StandardClass))
     153        return type_error(slotDefinitionClass,
     154                          StandardClass.STANDARD_SLOT_DEFINITION);
     155      // we could check whether slotClass is a subtype of
     156      // standard-slot-definition here, but subtypep doesn't work early
     157      // in the build process
     158      return new SlotDefinition((StandardClass)slotDefinitionClass);
    163159    }
    164160  };
  • trunk/abcl/src/org/armedbear/lisp/SlotDefinitionClass.java

    r14478 r14479  
    6363        // standard-*-slot-definition do the same.
    6464        StandardObject locationSlot =
    65           SlotDefinition.checkSlotDefinition(slotDefinitions.nthcdr(8).car());
     65          checkSlotDefinition(slotDefinitions.nthcdr(8).car());
    6666        locationSlot.setInstanceSlotValue(Symbol.INITFORM, NIL);
    6767        locationSlot.setInstanceSlotValue(Symbol.INITFUNCTION, StandardClass.constantlyNil);
    6868        // Fix initargs of TYPE, DOCUMENTATION slots.
    6969        StandardObject typeSlot =
    70           SlotDefinition.checkSlotDefinition(slotDefinitions.nthcdr(9).car());
     70          checkSlotDefinition(slotDefinitions.nthcdr(9).car());
    7171        typeSlot.setInstanceSlotValue(Symbol.INITARGS, list(internKeyword("TYPE")));
    7272        StandardObject documentationSlot =
    73           SlotDefinition.checkSlotDefinition(slotDefinitions.nthcdr(10).car());
     73          checkSlotDefinition(slotDefinitions.nthcdr(10).car());
    7474        documentationSlot.setInstanceSlotValue(Symbol.INITARGS, list(internKeyword("DOCUMENTATION")));
    7575        setDirectSlotDefinitions(slotDefinitions);
     
    7777        setFinalized(true);
    7878    }
     79
     80  private static StandardObject checkSlotDefinition(LispObject obj) {
     81    if (obj instanceof StandardObject) return (StandardObject)obj;
     82    return (StandardObject)type_error(obj, Symbol.SLOT_DEFINITION);
     83  }
    7984}
  • trunk/abcl/src/org/armedbear/lisp/clos.lisp

    r14478 r14479  
    486486  (let ((slot-class (apply #'direct-slot-definition-class class args)))
    487487    (if (eq slot-class +the-standard-direct-slot-definition-class+)
    488         (let ((slot (make-slot-definition +the-standard-direct-slot-definition-class+)))
     488        (let ((slot (%make-slot-definition +the-standard-direct-slot-definition-class+)))
    489489          (apply #'init-slot-definition slot :allocation-class class args)
    490490          slot)
     
    502502  (let ((slot-class (apply #'effective-slot-definition-class class args)))
    503503    (if (eq slot-class +the-standard-effective-slot-definition-class+)
    504         (let ((slot (make-slot-definition +the-standard-effective-slot-definition-class+)))
     504        (let ((slot (%make-slot-definition +the-standard-effective-slot-definition-class+)))
    505505          (apply #'init-slot-definition slot args)
    506506          slot)
Note: See TracChangeset for help on using the changeset viewer.