eudoxia0 / crane

An ORM for Common Lisp.
http://eudoxia.me/crane/
201 stars 19 forks source link

Use a Mixin to reduce code duplication in in slot defintions #29

Closed PuercoPop closed 9 years ago

PuercoPop commented 9 years ago

Saw the use of mixin's in CLSQL and Rucksack's code. Although they use exactly the same definition for direct and effective slots. Another plus is that the differences between effective and direct sot definitions are easier to see

eudoxia0 commented 9 years ago

Thanks. Crane's MOPery needed a cleanup. The build failed though:

; file: /home/travis/build/eudoxia0/crane/src/meta.lisp
; in: DEFCLASS TABLE-CLASS-EFFECTIVE-SLOT-DEFINTION
;     (DEFCLASS CRANE.META::TABLE-CLASS-EFFECTIVE-SLOT-DEFINTION
;               (CRANE.META::TABLE-CLASS-SLOT-DEFINITION-MIXIN
;                SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION))
; 
; caught ERROR:
;   (during macroexpansion of (DEFCLASS TABLE-CLASS-EFFECTIVE-SLOT-DEFINTION ...))
;   error while parsing arguments to DEFMACRO DEFCLASS:
;     invalid number of elements in
;       (TABLE-CLASS-EFFECTIVE-SLOT-DEFINTION
;        (TABLE-CLASS-SLOT-DEFINITION-MIXIN
;         SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION))
;     to satisfy lambda list
;       (&ENVIRONMENT SB-PCL::ENV SB-PCL::NAME SB-PCL::DIRECT-SUPERCLASSES
;        SB-PCL::DIRECT-SLOTS &REST SB-PCL::OPTIONS):
;     at least 3 expected, but 2 found
.Unhandled UIOP/LISP-BUILD:COMPILE-FILE-ERROR in thread #<SB-THREAD:THREAD
                                                         "main thread" RUNNING
                                                          {100302F0C3}>:
  COMPILE-FILE-ERROR while compiling #<CL-SOURCE-FILE "crane" "src" "meta">
PuercoPop commented 9 years ago

yeah it appears I forgot to add () signifying the empty slots to the effective slots definition.