marijnh / Postmodern

A Common Lisp PostgreSQL programming interface
http://marijnhaverbeke.nl/postmodern
Other
397 stars 89 forks source link

ABCL instantiates effective-column-slot with unbound slot #257

Open PiotrWasik opened 3 years ago

PiotrWasik commented 3 years ago

In fresh quicklisp, ABCL 1.8.0

(in-package :postmodern)

(defclass country ()
  ((name :col-type string :initarg :name
         :reader country-name)
   (inhabitants :col-type integer :initarg :inhabitants
                :accessor country-inhabitants)
   (sovereign :col-type (or db-null string) :initarg :sovereign
              :accessor country-sovereign))
  (:metaclass dao-class)
  (:keys name))

gives this error:

The slot DIRECT-SLOT is unbound in the object #<EFFECTIVE-COLUMN-SLOT {2F2C4370}>.
   [Condition of type COMMON-LISP:UNBOUND-SLOT]

Restarts:
 0: [RETRY] Retry SLY mREPL evaluation request.
 1: [*ABORT] Return to SLY's top level.
 2: [ABORT] Abort thread.

Backtrace:
 0: (#<FUNCTION {45C39EEE}> #<UNBOUND-SLOT {FA49E2E}> #<FUNCTION {5FD903B3}>)
 1: (#<FUNCTION {5FD903B3}> #<UNBOUND-SLOT {FA49E2E}> #<FUNCTION {5FD903B3}>)
 2: (COMMON-LISP:APPLY #<FUNCTION {5FD903B3}> (#<UNBOUND-SLOT {FA49E2E}> #<FUNCTION {5FD903B3}>))
 3: (SYSTEM::RUN-HOOK SYSTEM::*INVOKE-DEBUGGER-HOOK* #<UNBOUND-SLOT {FA49E2E}> #<FUNCTION {5FD903B3}>)
 4: (COMMON-LISP:INVOKE-DEBUGGER #<UNBOUND-SLOT {FA49E2E}>)
 5: (COMMON-LISP:ERROR COMMON-LISP:UNBOUND-SLOT :INSTANCE #<EFFECTIVE-COLUMN-SLOT {2F2C4370}> :NAME DIRECT-SLOT)
 6: (#<FUNCTION {7427A388}> (#<COMMON-LISP:STANDARD-CLASS EFFECTIVE-COLUMN-SLOT {3A9BE9CF}> #<EFFECTIVE-COLUMN-SLOT {2F2C4370}> DIRECT-SLOT))
 7: (SLOT-COLUMN #<EFFECTIVE-COLUMN-SLOT {2F2C4370}>)
 8: (DAO-COLUMN-SLOTS #<DAO-CLASS {39DD59BF}>)
 9: (DAO-COLUMN-FIELDS #<DAO-CLASS {39DD59BF}>)
10: (COMMON-LISP:EVERY #<FUNCTION {60B09484}> (NAME))
11: (#<FUNCTION {7763D7BA}> (#<DAO-CLASS {39DD59BF}>))
12: (MOP:FINALIZE-INHERITANCE #<DAO-CLASS {39DD59BF}>)
13: (MOP::MAYBE-FINALIZE-CLASS-SUBTREE #<DAO-CLASS {39DD59BF}>)
14: (MOP::STD-AFTER-INITIALIZATION-FOR-CLASSES #<DAO-CLASS {39DD59BF}> :NAME COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL ...)
15: (COMMON-LISP:APPLY #<STD-AFTER-INITIALIZATION-FOR-CLASSES {EB64ED5}> #<DAO-CLASS {39DD59BF}> (:NAME COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL :DIRECT-SUPERCLASSES COMMON-LISP:NIL ...))
16: (#<FUNCTION {3E11113D}> #<DAO-CLASS {39DD59BF}> :NAME COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL ...)
17: (COMMON-LISP:APPLY #<FUNCTION {3E11113D}> (#<DAO-CLASS {39DD59BF}> :NAME COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL :DIRECT-SUPERCLASSES ...))
18: (#<FUNCTION {6D52B7E1}> (#<DAO-CLASS {39DD59BF}> :NAME COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL :DIRECT-SUPERCLASSES ...))
19: (#<COMMON-LISP:STANDARD-GENERIC-FUNCTION {23BDEC01}> #<DAO-CLASS {39DD59BF}> :NAME COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL ...)
20: (COMMON-LISP:APPLY #<COMMON-LISP:STANDARD-GENERIC-FUNCTION {23BDEC01}> #<DAO-CLASS {39DD59BF}> (:NAME COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL :DIRECT-SUPERCLASSES COMMON-LISP:NIL ...))
21: (#<FUNCTION {9220A7B}> #<COMMON-LISP:STANDARD-CLASS DAO-CLASS {6D06813A}> :NAME COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL ...)
22: (COMMON-LISP:APPLY #<FUNCTION {9220A7B}> (#<COMMON-LISP:STANDARD-CLASS DAO-CLASS {6D06813A}> :NAME COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL :DIRECT-SUPERCLASSES ...))
23: (#<COMMON-LISP:STANDARD-GENERIC-FUNCTION {33051A05}> #<COMMON-LISP:STANDARD-CLASS DAO-CLASS {6D06813A}> :NAME COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL ...)
24: (COMMON-LISP:APPLY #<COMMON-LISP:STANDARD-GENERIC-FUNCTION {33051A05}> #<COMMON-LISP:STANDARD-CLASS DAO-CLASS {6D06813A}> :NAME COUNTRY :DIRECT-SUPERCLASSES ...)
25: (#<FUNCTION {6015C2E2}> COMMON-LISP:NIL COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL :DIRECT-SLOTS ...)
26: (COMMON-LISP:APPLY #<FUNCTION {6015C2E2}> (COMMON-LISP:NIL COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL :DIRECT-SLOTS ((:NAME NAME :INITARGS # :READERS # ...) (:NAME INHABITANTS :INITARGS # :READERS #..
27: (#<COMMON-LISP:STANDARD-GENERIC-FUNCTION {C1DD4A6}> COMMON-LISP:NIL COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL :DIRECT-SLOTS ...)
28: (COMMON-LISP:APPLY #<COMMON-LISP:STANDARD-GENERIC-FUNCTION {C1DD4A6}> COMMON-LISP:NIL COUNTRY (:DIRECT-SUPERCLASSES COMMON-LISP:NIL :DIRECT-SLOTS ((:NAME NAME :INITARGS # :READERS # ...) (:NAME INHABI..
29: (MOP:ENSURE-CLASS COUNTRY :DIRECT-SUPERCLASSES COMMON-LISP:NIL :DIRECT-SLOTS ((:NAME NAME :INITARGS (:NAME) :READERS (COUNTRY-NAME) ...) (:NAME INHABITANTS :INITARGS (:INHABITANTS) :READERS (COUNTRY-I..
30: (SYSTEM::%EVAL (COMMON-LISP:DEFCLASS COUNTRY COMMON-LISP:NIL ((NAME :COL-TYPE COMMON-LISP:STRING :INITARG :NAME :READER ...) (INHABITANTS :COL-TYPE COMMON-LISP:INTEGER :INITARG :INHABITANTS :ACCESSOR ..
31: (COMMON-LISP:EVAL (COMMON-LISP:DEFCLASS COUNTRY COMMON-LISP:NIL ((NAME :COL-TYPE COMMON-LISP:STRING :INITARG :NAME :READER ...) (INHABITANTS :COL-TYPE COMMON-LISP:INTEGER :INITARG :INHABITANTS :ACCESS..
32: (#<FUNCTION {56BBAF24}>)
33: (SLYNK::CALL-WITH-RETRY-RESTART "Retry SLY mREPL evaluation request." #<FUNCTION {56BBAF24}>)
34: (#<FUNCTION {2E2EF7AD}>)
35: (#<FUNCTION {37C651C1}>)
36: (SLYNK::CALL-WITH-BINDINGS ((COMMON-LISP:*PACKAGE* . #<PACKAGE POSTMODERN>) (COMMON-LISP:* . #<PACKAGE POSTMODERN>) (COMMON-LISP:** :POSTMODERN) (COMMON-LISP:***) (COMMON-LISP:/ #<PACKAGE POSTMODERN>)..
sabracrolleton commented 3 years ago

I will look at it this weekend.

sabracrolleton commented 3 years ago

Right now it seems to be a more general bug in abcl 1.8 with respect to CLOS superclasses. It does not appear in 1.7.1 and has been reported by Pascal Costanza. The ticket is here: https://abcl.org/trac/ticket/479. I will hold this open so I monitor it.

Thank you for flagging this.

Sabra

sabracrolleton commented 5 months ago

I have to admit I have not been able to solve this one. If anyone has any bright ideas, let us know.