Changeset 14479
- Timestamp:
- 04/24/13 12:51:16 (10 years ago)
- Location:
- trunk/abcl/src/org/armedbear/lisp
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/Autoload.java
r14478 r14479 643 643 autoload(PACKAGE_SYS, "make-layout", "Layout", true); 644 644 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); 646 646 autoload(PACKAGE_SYS, "make-structure-class", "StructureClass"); 647 647 autoload(PACKAGE_SYS, "make-symbol-macro", "Primitives"); -
trunk/abcl/src/org/armedbear/lisp/SlotDefinition.java
r14478 r14479 38 38 public final class SlotDefinition extends StandardObject 39 39 { 40 p ublicSlotDefinition()40 private SlotDefinition() 41 41 { 42 42 super(StandardClass.STANDARD_SLOT_DEFINITION, … … 47 47 } 48 48 49 p ublicSlotDefinition(StandardClass clazz) {49 private SlotDefinition(StandardClass clazz) { 50 50 // clazz layout needs to have SlotDefinitionClass layout as prefix 51 51 // or indexed slot access won't work … … 123 123 } 124 124 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 130 125 @Override 131 126 public String printObject() … … 143 138 private static final Primitive MAKE_SLOT_DEFINITION 144 139 = new pf_make_slot_definition(); 145 @DocString(name=" make-slot-definition",146 args=" &optionalclass",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") 148 143 private static final class pf_make_slot_definition extends Primitive 149 144 { 150 145 pf_make_slot_definition() 151 146 { 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"); 158 148 } 159 149 @Override 160 150 public LispObject execute(LispObject slotDefinitionClass) 161 151 { 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); 163 159 } 164 160 }; -
trunk/abcl/src/org/armedbear/lisp/SlotDefinitionClass.java
r14478 r14479 63 63 // standard-*-slot-definition do the same. 64 64 StandardObject locationSlot = 65 SlotDefinition.checkSlotDefinition(slotDefinitions.nthcdr(8).car());65 checkSlotDefinition(slotDefinitions.nthcdr(8).car()); 66 66 locationSlot.setInstanceSlotValue(Symbol.INITFORM, NIL); 67 67 locationSlot.setInstanceSlotValue(Symbol.INITFUNCTION, StandardClass.constantlyNil); 68 68 // Fix initargs of TYPE, DOCUMENTATION slots. 69 69 StandardObject typeSlot = 70 SlotDefinition.checkSlotDefinition(slotDefinitions.nthcdr(9).car());70 checkSlotDefinition(slotDefinitions.nthcdr(9).car()); 71 71 typeSlot.setInstanceSlotValue(Symbol.INITARGS, list(internKeyword("TYPE"))); 72 72 StandardObject documentationSlot = 73 SlotDefinition.checkSlotDefinition(slotDefinitions.nthcdr(10).car());73 checkSlotDefinition(slotDefinitions.nthcdr(10).car()); 74 74 documentationSlot.setInstanceSlotValue(Symbol.INITARGS, list(internKeyword("DOCUMENTATION"))); 75 75 setDirectSlotDefinitions(slotDefinitions); … … 77 77 setFinalized(true); 78 78 } 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 } 79 84 } -
trunk/abcl/src/org/armedbear/lisp/clos.lisp
r14478 r14479 486 486 (let ((slot-class (apply #'direct-slot-definition-class class args))) 487 487 (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+))) 489 489 (apply #'init-slot-definition slot :allocation-class class args) 490 490 slot) … … 502 502 (let ((slot-class (apply #'effective-slot-definition-class class args))) 503 503 (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+))) 505 505 (apply #'init-slot-definition slot args) 506 506 slot)
Note: See TracChangeset
for help on using the changeset viewer.