We have an application written in CL. which works fine with AKCL. When
running it with Allegro CL 4.2, however, I get the following error:
Error: attempt to call `#:get-instance-id' which is an undefined function.
[condition type: undefined-function]
When I use describe, it tells me the following:
[1] user(5): (describe 'vm::get-instance-id)
disco-vm-class:get-instance-id is a symbol
It is unbound.
It is external in the disco-vm-class package and accessible in the
disco-vm package.
Its function binding is #<Interpreted Function get-instance-id>
The function takes arguments (instance)
Its property list has these indicator/value pairs:
excl::%fun-documentation "Return instance id"
What baffles me is that in the code the function call has an explicit
package prefix, so I think get-instance-id should be visible. The code is
below. Does anyone have any ideas for help?
(defun get-value (bindings path st-env-list)
"Get the value of an instance variable in st-env"
(let* ((id (first path))
(st (find id st-env-list :key #'st-name)))
(when (null st)
(throw :rt-error (cons :unknown-id "Variable/state doesn't exist")))
(let ((v (get-binding-value bindings (st-where st)))
(r (rest path)))
(format t "~&g-v: id = ~A, v = ~A, r = ~A~%" id v r)
(cond ((null r) v)
((instance-object-p v)
(get-instance-value v r))
((eq v :active)
(get-value bindings r (st-sub st)))
((and evaluating-guard (eq v :inactive))
:inactive)
(t (if r (throw :rt-error
(cons :inactive-value
(format
nil
"Attempt to access an inactive state ([~A]~{.~A~})"
(vm::get-instance-id *current-object*) path))))
:inactive)))))
**************************************************
Peeter Pruuden HB 228 +358 31 365 3831
ยทยทยทยท@cs.tut.fi +358 40 556 4699
http://www.cs.tut.fi/~pets/
**************************************************