From: Paul B. <pb...@ol...> - 2013-06-15 15:48:38
|
I have the following two classes: (defclass clx-entry-dialog (clx-window) ((par-inst :accessor par-inst :initarg :parent-instance) (wnttl :accessor wnttl :initform nil :initarg :win-title) (vinfo :accessor vinfo :initform nil :initarg :var-info) (varlst :accessor varlst :initform nil :initarg :var-list) (tab-idx :accessor tab-idx :initform 1 :initarg :tab-index)) (forgd :accessor forgd #||:initform *white* :initarg :foreground||# ) (grps :accessor grps #||:initform nil :initarg :groups||# ) (defclass clx-listbox (clx-window) ((par-inst :accessor par-inst :initarg :parent-instance) (wnttl :accessor wnttl :initform nil :initarg :win-title) (vinfo :accessor vinfo :initform nil :initarg :var-info) (varlst :accessor varlst :initform nil :initarg :var-list) (tab-idx :accessor tab-idx :initform 1 :initarg :tab-index) (forgd :accessor forgd :initform *white* :initarg :foreground) (grps :accessor grps :initform nil :initarg :groups) (maxgrp :accessor maxgrp :initform 0 :initarg :max-group) (grpno :accessor grpno :initform 0 ) (bxcnt :accessor bxcnt :initform 0 ) (pgno0 :accessor pgno0 :initform nil ) (maxpg :accessor maxpg :initform 0 ) (pgno :accessor pgno :initform 0 ) (scrlbgn :accessor scrlbgn :initform 0 ) (scrlend :accessor scrlend :initform 0 ) ;;( :accessor :initform :initarg ) )) Notice that "clx-listbox" has the same two slots as "clx-entry-dialog" namely "forgd" and "grps". Both classes have "clx-window" as their superclass which has neither of the slots "forgd" and "grps". Both classes "clx-listbox" and "clx-entry-dialog" compile without problems. Class "clx-listbox" loads without problems. Class "clx-entry-dialog" will not load, but instead gives an error message: Invalid initialization arguments: GRPS, FORGD in call for class #<STANDARD-CLASS STANDARD-CLASS>. [Condition of type SB-PCL::INITARG-ERROR] See also: Common Lisp Hyperspec, 7.1.2 [:section] Restarts: 0: [*ABORT] Return to SLIME's top level. 1: [ABORT] Abort thread (#<THREAD "worker" RUNNING {100304C7E3}>) Backtrace: 0: (SB-PCL::CHECK-MI-INITARGS #<STANDARD-CLASS STANDARD-CLASS> (:NAME CLX-ENTRY-DIALOG :DIRECT-SUPERCLASSES (#<STANDARD-CLASS CLX-WINDOW>) :DIRECT-SLOTS ((:NAME PAR-INST :READERS (PAR-INST) :WRITERS ((SE.. <snip> The reason parts of the slots for "clx-entry-dialog" are commented out is that I have been fiddling to see if I could get it to load. They were initially identical to those in "clx-listbox" and gave the same error then also. Based on the information I have provided, can you shed some light on why one class loads and the other class fails to load? If more information is required, maybe I can provide it. Thanks, Paul Bowyer |
From: Nikodemus S. <nik...@ra...> - 2013-06-25 15:33:23
|
On 15 June 2013 18:21, Paul Bowyer <pb...@ol...> wrote: > I have the following two classes: > (defclass clx-entry-dialog (clx-window) > ((par-inst :accessor par-inst :initarg :parent-instance) > (wnttl :accessor wnttl :initform nil :initarg :win-title) > (vinfo :accessor vinfo :initform nil :initarg :var-info) > (varlst :accessor varlst :initform nil :initarg :var-list) > (tab-idx :accessor tab-idx :initform 1 :initarg :tab-index)) > (forgd :accessor forgd #||:initform *white* :initarg :foreground||# ) > (grps :accessor grps #||:initform nil :initarg :groups||# ) Missing lines or just missing paren? > Based on the information I have provided, can you shed some light on why > one class loads and the other class fails to load? If more information > is required, maybe I can provide it. Much easier people to help you if you provide enough information to duplicate the problem you have: a loadable file what is sufficient to reproduce the problem. Quickloading deps is fine, if you need CLX to show the issue. Trying to parse code visually and work out what goes wrong is much more time consuming than just loading something and SEEING the error live -- after which the person who reproduced it is also guaranteed to have the code that causes the problem to hand for debugging. :) Cheers, -- nikodemus |
From: Christophe R. <cs...@ca...> - 2013-06-25 17:47:12
|
Paul Bowyer <pb...@ol...> writes: > I have the following two classes: > > (defclass clx-entry-dialog (clx-window) > ((par-inst :accessor par-inst :initarg :parent-instance) > (wnttl :accessor wnttl :initform nil :initarg :win-title) > (vinfo :accessor vinfo :initform nil :initarg :var-info) > (varlst :accessor varlst :initform nil :initarg :var-list) > (tab-idx :accessor tab-idx :initform 1 :initarg :tab-index)) / This paren here closes the slot list --------------------------/ and so it's not surprising that > (forgd :accessor forgd #||:initform *white* :initarg :foreground||# ) > (grps :accessor grps #||:initform nil :initarg :groups||# ) these two (presumed) slots don't exist in the class. Best wishes, Christophe |
From: Stig H. <sti...@gm...> - 2013-06-25 17:47:31
|
You should get an text editor that shows you matching parens by indenting the lines according to nesting level. This would have shown you your error quickly. Missing that, you got an error message involving FORGD. It is not uncommon that it takes a line or two for the compiler to understand there is something wrong, so look above the FORGD line. And what do we find on the line above? An extra right parenthesis. There is also a missing right parenthesis a few lines down, which is why you don't get an error about unbalanced parentheses. Again, get a Lisp-aware editor to avoid these kind of problems. Stig Hemmer |
From: james a. <jam...@se...> - 2013-06-25 18:05:29
|
good evening; when you have problems with clos operations, it can be worthwhile to review the way they are intended to work.[1] in this case, the invalid initialization argument error pertains to two symbols which you code indicates you would have intended to used to name slots. this suggests that the section in [1] about class "Processing of the User Interface Macros" might explain the problem. it is possible, that a lexicographic error in your case left those two clauses to be interpreted as "any other class options". best regards, from berlin, --- [1] : http://www.alu.org/mop/concepts.html On 15 Jun 2013, at 5:21 PM, Paul Bowyer wrote: > I have the following two classes: > > (defclass clx-entry-dialog (clx-window) > ((par-inst :accessor par-inst :initarg :parent-instance) > (wnttl :accessor wnttl :initform nil :initarg :win-title) > (vinfo :accessor vinfo :initform nil :initarg :var-info) > (varlst :accessor varlst :initform nil :initarg :var-list) > (tab-idx :accessor tab-idx :initform 1 :initarg :tab-index)) > (forgd :accessor forgd #||:initform *white* :initarg :foreground||# ) > (grps :accessor grps #||:initform nil :initarg :groups||# ) > > (defclass clx-listbox (clx-window) > ((par-inst :accessor par-inst :initarg :parent-instance) > (wnttl :accessor wnttl :initform nil :initarg :win-title) > (vinfo :accessor vinfo :initform nil :initarg :var-info) > (varlst :accessor varlst :initform nil :initarg :var-list) > (tab-idx :accessor tab-idx :initform 1 :initarg :tab-index) > (forgd :accessor forgd :initform *white* :initarg :foreground) > (grps :accessor grps :initform nil :initarg :groups) > > (maxgrp :accessor maxgrp :initform 0 :initarg :max-group) > (grpno :accessor grpno :initform 0 ) > (bxcnt :accessor bxcnt :initform 0 ) > (pgno0 :accessor pgno0 :initform nil ) > (maxpg :accessor maxpg :initform 0 ) > (pgno :accessor pgno :initform 0 ) > (scrlbgn :accessor scrlbgn :initform 0 ) > (scrlend :accessor scrlend :initform 0 ) > > ;;( :accessor :initform :initarg ) > > )) > > Notice that "clx-listbox" has the same two slots as "clx-entry-dialog" > namely "forgd" and "grps". > > Both classes have "clx-window" as their superclass which has neither of > the slots "forgd" and "grps". > > Both classes "clx-listbox" and "clx-entry-dialog" compile without problems. > > Class "clx-listbox" loads without problems. > > Class "clx-entry-dialog" will not load, but instead gives an error message: > > Invalid initialization arguments: > GRPS, FORGD > in call for class #<STANDARD-CLASS STANDARD-CLASS>. > [Condition of type SB-PCL::INITARG-ERROR] > See also: > Common Lisp Hyperspec, 7.1.2 [:section] > > Restarts: > 0: [*ABORT] Return to SLIME's top level. > 1: [ABORT] Abort thread (#<THREAD "worker" RUNNING {100304C7E3}>) > > Backtrace: > 0: (SB-PCL::CHECK-MI-INITARGS #<STANDARD-CLASS STANDARD-CLASS> (:NAME > CLX-ENTRY-DIALOG :DIRECT-SUPERCLASSES (#<STANDARD-CLASS CLX-WINDOW>) > :DIRECT-SLOTS ((:NAME PAR-INST :READERS (PAR-INST) :WRITERS ((SE.. > <snip> > > The reason parts of the slots for "clx-entry-dialog" are commented out > is that I have been fiddling to see if I could get it to load. They were > initially identical to those in "clx-listbox" and gave the same error > then also. > > Based on the information I have provided, can you shed some light on why > one class loads and the other class fails to load? If more information > is required, maybe I can provide it. > > Thanks, > > Paul Bowyer > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by Windows: > > Build for Windows Store. > > http://p.sf.net/sfu/windows-dev2dev > _______________________________________________ > Sbcl-bugs mailing list > Sbc...@li... > https://lists.sourceforge.net/lists/listinfo/sbcl-bugs |