unknown allocation kind '#<syntax (quote static) in #8>'

Jamison Hope jrh@theptrgroup.com
Thu Oct 6 22:00:00 GMT 2011


On Oct 6, 2011, at 5:34 AM, Per Bothner wrote:

> I'm not sure why making the init form be literal makes a difference  
> for the allocation.
> I suspect it's because this makes the entire "tail"
>  (allocation: 'static init: "literal")
> literal (at least in terms of macro expansion - there are no macro  
> parameters in it).
> This when the macro template is expanded we get a single SyntaxForm  
> that
> wraps the entire tail (which gets handled by an earlier getDatum  
> call) rather
> than multiple SyntaxForm for smaller parts of the macro expansion.

That seems as reasonable an explanation as anything I could think of.

> I think the patch is good.  However, I think we might as well use the
> Translator#stripSyntax method, as attached.

Makes sense. There are a few other places that could probably use  
similar
refactoring. A grep for "while.*instanceof.*syntaxform" returns a  
bunch of
hits, though in some of those cases a reference to the syntax object is
also retained, as in Lambda.java's

	while (body instanceof SyntaxForm)
	  {
	    syntax0 = (SyntaxForm) body;
	    body = syntax0.getDatum();
	  }

Hmm.. if only Java had multiple value returns..


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





More information about the Kawa mailing list