[M3devel] narrow still failing..

mika at async.caltech.edu mika at async.caltech.edu
Wed Jan 22 21:47:49 CET 2014


Aha so declaring the type as <: ROOT will probably work as a workaround?

Thank you for looking into this.

"Rodney M. Bates" writes:
>Some more info:
>
>The front end is generating incorrect narrow code, only
>where the type T is an unrevealed <: REFANY.  When T and Root
>are known, it calls RTHooks.CheckIsType for ISTYPE, NARROW,
>and implicit narrow in an assignment.
>
>When opaque, for explicit and implicit narrow, it simply compares
>the typecode of x to a single typecode (no doubt for T) and demands
>they be equal.  In this case, the actual allocated type of x is Root,
>a proper subtype of T.
>
>For ISTYPE, it does call CheckIsType even when the types are opaque.
>
>The fact that it happens only when the types are opaque lends
>credibility to the fact that this bug has gone unnoticed at least
>as far back as PM3.



More information about the M3devel mailing list