<N: VoidRegister>

Andreas Franke afranke at ags.uni-sb.de
Mon Sep 11 10:36:29 CEST 2006


Filip Konvička wrote:

> I've just spotted a serious emulator error, could you please confirm it?
> 
> local
>    fun {Fct C _}
>       C
>    end
> in
>    {System.showInfo
>     {Fct some/*#thing*/
>      case xyz
>      of something(Msg ...) then
>         nil
>      else
>         {System.showInfo nil}
>         nil
>      end
>     }
>    }
> end
> 
> fails with
> 
> %*************************** type error *************************
> %**
> %** Expected type: virtualstring
> %** At argument:   1
> %** In statement:  {System.showInfo <N: VoidRegister>}
> %**
> %** Call Stack:
> %** toplevel abstraction in line 1, column 0, PC = 11812436
> %**--------------------------------------------------------------

Confirmed.

> Any of the following avoids the bug:
> * uncommenting /*#thing*/
> * changing something(Msg ...) to something(Msg)
> * entering the first case branch, e.g. by changing xyz to e.g. something(1)
> * removing the {System.showInfo nil} call
> * changing the 2nd argument from E to (S E) syntax, e.g. (case .... end 
> nil); or otherwise trying to avoid the case expression.
> 
> The core syntax of the case with and without the "..." look almost the 
> same, so I guess it is not a compiler issue.
> 

I think it looks very similar to the compiler bug I reported earlier:
http://www.mozart-oz.org/cgi-bin/oz-bugs/compiler?id=1572;user=guest

HTH,
Andreas




More information about the mozart-users mailing list