This is the mail archive of the kawa@sourceware.cygnus.com mailing list for the Kawa project. See the Kawa home page for more information.


[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index] [Subject Index] [Author Index] [Thread Index]

Re: More on `object' etc.



Hi,

I applied the patches and that helped indeed. However, I might have
found another bug, which I guess could be related to some syntax/macro
expansion. Namely, here is an excerpt from a macro that I wrote:

(defmacro vo-get-view-info (hlvo vid)
  `(let* ((views ((primitive-get-field <VO.LLVO>
				       "views"
				       <VO.LLVOview[]>)
		  ,hlvo))
	  (views-ref (primitive-array-get <VO.ViewInfo>))
	  (vi ((primitive-get-field <VO.LLVOview>
				    "vi"
				    <VO.ViewInfo>)
	       (views-ref views ,vid))))
	...

This works fine:

#|kawa:16|# (vo-get-view-info vo 0)
(0 #!null 0.0 0.0 #!null 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0)

However, if I inline `views-ref':

(defmacro vo-get-view-info (hlvo vid)
  `(let* ((views ((primitive-get-field <VO.LLVO>
				       "views"
				       <VO.LLVOview[]>)
		  ,hlvo))
	  (vi ((primitive-get-field <VO.LLVOview>
				    "vi"
				    <VO.ViewInfo>)
	       ((primitive-array-get <VO.ViewInfo>) views ,vid))))
	...

I get an error:

#|kawa:18|# (vo-get-view-info vo 0)
Invalid parameter, should be: [LVO.LLVOview;
java.lang.ClassCastException: [LVO.LLVOview;
        at atInteractiveLevel.run(<stdin>:18)
        at gnu.expr.ModuleExp.evalModule(Compiled Code)
        at kawa.Shell.run(Compiled Code)
        at kawa.Shell.run(Shell.java:77)
        at kawa.repl.main(Compiled Code)

Maybe I am missing something, but maybe not... Of course, I can keep
the first version, so you don't have to hurry to fix this if it is a bug.

Aleks