This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GSOC | Extending Common Lisp support


On Apr 28, 2012, at 4:02 PM, Charles Turner wrote:

Having a few problems with the transliteration of PrimOps.scm to CL:

I've transliterated

(define (make-string (count :: <int>) ch)
 (make <gnu.lists.FString> count
       (invoke-static <gnu.commonlisp.lang.CommonLisp>
                      'asChar ch)))

into

(defun make-string (count ch)
 (declare (int count))
 (make <gnu.lists.FString> count
	(invoke-static <gnu.commonlisp.lang.CommonLisp>
		       'asChar ch)))

But with the latter I get the following warning:

$ kawa -C primitives.lisp
primitives.lisp:134:9: warning - no declaration seen for <gnu.lists.FString>


Any ideas why that's happening in CL but not Scheme?

I don't have a complete answer for you, but here's an additional data point that might help:

$ kawa --lisp
#|kawa:1|# <gnu.lists.FString>
<unknown>: warning - no declaration seen for <gnu.lists.FString>
unbound location <gnu.lists.FString>
        at gnu.mapping.Location.get(Location.java:67)
        at atInteractiveLevel$1.run(stdin)
        at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:299)
        at gnu.expr.ModuleExp.evalModule(ModuleExp.java:200)
        at kawa.Shell.run(Shell.java:279)
        at kawa.Shell.run(Shell.java:194)
        at kawa.Shell.run(Shell.java:175)
        at kawa.repl.main(repl.java:884)
#|kawa:2|# gnu.lists.FString
class gnu.lists.FString
#|kawa:3|# ^D

So, check where Kawa handles class literals enclosed in angle brackets.
Maybe it's in Scheme-only code (and therefore another candidate for
refactoring).


Adding
defProcStFld("make", "gnu.kawa.reflect.Invoke", "make");
to CommonLisp doesn't seem to make a difference (not that surprising
in hindsight)

Right, I think that's already in there due to the


    LocationEnumeration e = Scheme.builtin().enumerateAllLocations();
    while (e.hasMoreElements())
      {
        importLocation(e.nextLocation());
      }

at the top of initLisp().


Thanks for your time,
Charlie.

-- Jamison Hope The PTR Group www.theptrgroup.com




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]