[m-users.] ordering of foreign_proc + foreign_code declarations

Zoltan Somogyi zoltan.somogyi at runbox.com
Sun Jul 26 19:35:47 AEST 2020


2020-07-26 18:21 GMT+10:00 "Keri Harris" <keri at gentoo.org>:
> I have a question regarding the (lexical) ordering of foreign_proc +
> foreign_code declarations in a Mercury module. The Mercury Language
> Reference Manual contains the following:
> 
>    Entities declared in ‘pragma foreign_code’ declarations are visible
>    in ‘pragma foreign_proc’ declarations that specify the same foreign
>    language and occur in the same Mercury module. [1]
> 
> It's unclear to me whether this means that a foreign_code declaration
> lexically appearing *after* a foreign_proc declaration in the same
> Mercury module must be visible to that foreign_proc.

Yes, that is correct. The compiler should put all foreign_codes before
all foreign_procs in the target language file it generates.

> Experimentation
> shows that the generated foreign language source file produces
> different orderings depending on the grade:

It seems that you found a bug in the LLDS backend. I am testing a fix
right now; barring unforeseen complications, that fix should be in
tonight's ROTD.

Zoltan.


More information about the users mailing list