[Openmcl-devel] More CLIM Issues
Craig Lanning
craig.t.lanning at gmail.com
Thu Aug 4 15:05:03 PDT 2016
On Thu, 2016-08-04 at 22:09 +0200, Rainer Joswig wrote:
> If you look at the function find-presentation-type-class , it
> gets called with an environment compile-file (a symbol).
> That kind of environment is not in standard Common Lisp.
> The code calls FIND-CLASS with this environment then, where it then
> fails.
>
> As you can see, there is code for allegro, which changes the
> environment, first:
>
> #+allegro (setq environment (compile-file-environment-p environment))
I arranged for the code to call ccl::compile-file-environment-p, but
that function expects the environment to be a #<CCL::LEXICAL-
ENVIRONMENT> object. Somehow the environment that is coming in is the
symbol COMPILE-FILE. CLIM Utils defines a function COMPILE-FILE-
ENVIRONMENT-P which returns T when it sees COMPILE-FILE. T doesn't
work either.
The question now is: How do I get the compile time environment when it
was not passed in? The symbol COMPILE-FILE was passed instead. The
only global variable which includes the word ENVIRONMENT in its name is
ccl::*fcomp-load-forms-environment*, but that one doesn't seem to help.
Does CCL pass the symbol COMPILE-FILE as the environment at any time?
Or should I be looking in the CLIM code for something that passes
'COMPILE-FILE
> I would guess that all ANSI CL implementation would need to do that,
> given a useful implementation of the function compile-file-
> environment-p.
>
> What you want: FIND-CLASS should find the right class object in the
> right environment. The symbol COMPILE-FILE is not an
> environment for Clozure CL, so you need to call (setq environment
> (compile-file-environment-p environment)) to set it to a useful
> value.
>
> Regards,
>
> Rainer
>
>
> (defun find-presentation-type-class (name &optional (errorp t)
> environment)
> #+Genera (declare (inline compile-file-environment-p))
> #+allegro (setq environment (compile-file-environment-p
> environment))
> (macrolet ((not-found (name)
> `(if (gethash name *presentation-type-abbreviation-
> table*)
> (error "~S is a presentation type abbreviation,
> not the name of a presentation type" ,name)
> (error "~S is not the name of a presentation
> type" ,name))))
> (typecase name
> (symbol
> (let ((compile-file-environment-p (compile-file-environment-p
> environment)))
> (or (and (eq name (first *presentation-type-being-
> defined*))
> (second *presentation-type-being-defined*))
> (if compile-file-environment-p
> (compile-time-property name 'presentation-type-
> class)
> (gethash name *presentation-type-class-table*))
> (let ((class (find-class name nil
> environment))) ; <- fails probably
> here
> (and (acceptable-presentation-type-class class)
> class))
> (when compile-file-environment-p
> ;; compile-file environment inherits from the run-
> time environment
> (or (gethash name *presentation-type-class-table*)
> (let ((class (find-class name nil nil)))
> (and (acceptable-presentation-type-class class)
> class))))
> (and errorp (not-found name)))))
> ((satisfies acceptable-presentation-type-class)
> name)
> (otherwise ;a type error should complain even if errorp
> is nil
> (not-found name)))))
>
>
> Regards.
>
> Rainer
>
>
>
>
> >
> > Am 04.08.2016 um 21:19 schrieb Craig Lanning <craig.t.lanning at gmail
> > .com>:
> >
> > I'm making a little progress (I think).
> >
> > When I compile the CLIM Silica system, I see complaints about
> > undefined
> > functions. Some of these are slot accessor functions that don't
> > get
> > defined until CLIM Standalone is compiled.
> >
> > Anyway, I compile and load CLIM Utils, CLIM Silica, and then CLIM
> > Standalone.
> >
> > While compiling CLIM Standalone, it runs into the following error:
> >
> > ;; Compiling clim:clim;accept-values.lisp.newest
> > ;Compiler warnings for "clim:clim;accept-values.lisp.newest" :
> > ; In (PROMPT-FOR-ACCEPT (ACCEPT-VALUES-STREAM T T)) inside an
> > anonymous lambda form: Unused lexical variable ACCEPT-ARGS
> > >
> > > Error: The value COMPILE-FILE is not of the expected type
> > CCL::LEXICAL-ENVIRONMENT.
> > >
> > > While executing: CCL::DEFINITION-ENVIRONMENT, in process
> > > listener(1).
> > > Type :POP to abort, :R for a list of available restarts.
> > > Type :? for other options.
> > 1 > :b
> >
> > Attached is the entire output from doing the compiles and the
> > output of
> > the :b command.
> >
> > The problem here is that I'm not even sure where to look for the
> > real
> > problem. In CLIM Utils, there were a few things that touched on
> > the
> > environment. I think I added the appropriate #+/#- things to that
> > code.
> >
> > Can anyone tell me anything that might help me figure out what the
> > real
> > problem is?
> >
> > Craig
> > <output.txt>_______________________________________________
> > Openmcl-devel mailing list
> > Openmcl-devel at clozure.com
> > https://lists.clozure.com/mailman/listinfo/openmcl-devel
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> https://lists.clozure.com/mailman/listinfo/openmcl-devel
More information about the Openmcl-devel
mailing list