Hi Agobin --

I dug into this a bit deeper after my original mail, and the issue
has nothing to do with your use of first-class functions -- it's
the use of a no-op function of the form:

        proc testArg(a);

Apparently, we've never supported this form correctly (and arguably 
shouldn't support it at all for risk of confusion with C programmers). If 
you change it to the equivalent:

        proc testArg(a) { }

I believe you should get past this internal error.  I'm working for a fix 
for the internal error as we speak so that others don't run into it. 
Thanks for reporting it to us (which I should've done in the original 
mail)!

-Brad


On Fri, 18 Mar 2016, Brad Chamberlain wrote:

> Hi Agobin --
>
> Chapel's support for first-class functions (passing functions to other 
> functions)
> is not so good right now and I suspect that you may be running into the limits
> of its capabilities.  Compiling the code in --devel mode (which de-sugars the
> internal error message a bit), it seems to be specific to the fact that 
> testArg()
> is a function with a no-op body.  If I make it into:
>
> proc testArg(a) {
>  writeln("hi");
> }
>
> I get a bit further (basically, I run into problems with not having replicated
> your setup in my environment and not having all the routines available to
> me.
>
> Since you're using first-class-functions, though, I did want to note that, 
> within
> Chapel, some users have gotten around some of their limitations by using
> objects with well-defined interfaces and passing those around instead.  And
> I'll note that passing a Chapel function pointer out to an extern C routine is
> a frequently requested feature that is not yet supported (in case that's 
> something
> you're going to want to do).  :(   If you are going to need to do that, it 
> may be
> worth asking on chapel-users whether anyone has found a workaround for doing
> so -- I'm not aware of one offhand...
>
> -Brad
>
>
>
> ________________________________
> From: Agobin Fobella [[email protected]]
> Sent: Friday, March 18, 2016 7:48 AM
> To: [email protected]
> Subject: [Chapel-bugs] Compiler found a bug
>
> Hello Chapel developers,
>
> I was compiling this project<https://github.com/Agobin/Chapel_GUI_testing> of 
> mine with chpl after modification of this 
> file.<https://github.com/Agobin/Chapel_GUI_testing/blob/master/Test.chpl>
> Chapel's compiler reported this error 
> message<https://github.com/Agobin/Chapel_GUI_testing/blob/master/compilerMessage.txt>
>  to me, indicating it had
> found a bug.
> The error originated from this file this 
> file<https://github.com/Agobin/Chapel_GUI_testing/blob/master/Test.chpl> on 
> line 15.
>
> The idea I was trying to implement is exploiting generic functions to pass
> a function as an argument to another function.
>
> Please for your feedback as it would enhance this project's development
> or give me an alternative approach of working around the error message.
>
>  Additional information
> chpl version: 1.12.0
> gcc version:  5.3.1
> Output of  $CHPL_HOME/util/printchplenv 
> script<https://github.com/Agobin/Chapel_GUI_testing/blob/master/ScriptOutput>
>
> Thanks,
> Agobin.
>
>
>

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
_______________________________________________
Chapel-bugs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-bugs

Reply via email to