[MLton-user] bogus warning messages about scope annotations

John Reppy jhreppy at mac.com
Wed Sep 24 23:06:34 PDT 2008


On Sep 25, 2008, at 2:16 AM, Wesley W. Terpstra wrote:

> On Wed, Sep 24, 2008 at 10:38 PM, John Reppy <jhreppy at mac.com> wrote:
> Using a fresh version of mlton on Mac OS X, I'm getting messages of  
> the form
>
> Warning: /Users/jhr/Work/ICFPContest08/sml3d/src/glut/glut.sml 413.28.
>  Symbol 'glutCreateMenuCB' redeclared as external (previously  
> public). This may cause linker errors.
>
> when the code at lines 412-413 is
>
>    val exportCreateMenu        = _export "glutCreateMenuCB" private  
> cdecl : (int -> unit) -> unit;
>    val glutCreateMenuCB        = _address "glutCreateMenuCB"  
> private : Ptr.t;
>
> That's strange. I copy and pasted those lines to a file (replacing  
> Ptr with MLton.Pointer) and saw no warnings. Can you please provide  
> a complete source file which causes these warnings?

I'll see if I can reduce it to a small test case (the actual code is  
part of the SML3d library,
which is a pretty big download).

>
>
> I've tried various other annotations instead of private, but the  
> message is
> consistent.  In fact, it turns out that one can put any identifier  
> as an annoation and
> still get the same message.  E.g.,
>
>    val exportCreateMenu        = _export "glutCreateMenuCB" bogus  
> cdecl : (int -> unit) -> unit;
>    val glutCreateMenuCB        = _address "glutCreateMenuCB" bogus :  
> Ptr.t;
>
> The default visibility is public for export and external for  
> address. So that's not unexpected as bogus is invalid and didn't  
> override the defaults. I assume you also got errors that 'bogus' was  
> unrecognized in this case?

Nope.  No error message about "bogus", just the warning about linkage.

>
>
> I did not get this warning on the r6841 version on my windows box at  
> work.
>
> This check did not exist in r6841.
>




More information about the MLton-user mailing list