ICE?
Daniel Kozak via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun May 17 03:47:04 PDT 2015
On Sun, 17 May 2015 10:36:33 +0000
Namespace via Digitalmars-d-learn <digitalmars-d-learn at puremagic.com> wrote:
> On Sunday, 17 May 2015 at 09:59:41 UTC, Daniel Kozak wrote:
> >
> > On Sun, 17 May 2015 09:33:27 +0000
> > Namespace via Digitalmars-d-learn
> > <digitalmars-d-learn at puremagic.com> wrote:
> >
> >> On Sunday, 17 May 2015 at 09:30:16 UTC, Gary Willoughby wrote:
> >> > On Sunday, 17 May 2015 at 09:25:33 UTC, Namespace wrote:
> >> >> Is this error an ICE? I think so, because I see the
> >> >> internal filename, but I'm not sure.
> >> >>
> >> >> Error: e2ir: cannot cast malloc(length * 8u) of type void*
> >> >> to type char[]
> >> >
> >> > Have you got a code sample to reproduce this?
> >>
> >> Of course:
> >>
> >> ----
> >> void main() {
> >> import core.stdc.stdlib : malloc, free;
> >>
> >> auto ptr = cast(char[]) malloc(42);
> >> }
> >> ----
> >
> > I guess it should be:
> >
> > auto ptr = cast(char*)malloc(42)[0 .. 42];
>
> That would work, but I did it on purpose. I wanted to test
> whether such dangerous code compiles or whether the compiler is
> smart enough and hits the alarm.
I see.
for eg.:
void main() {
import core.stdc.stdlib : malloc, free;
static struct arr
{
size_t length;
void* ptr;
}
auto ptr = cast(arr) malloc(42);
}
prints:
test2.d(9): Error: cannot cast expression malloc(42LU) of type void* to arr
which makes sense, even e2ir text is not here.
More information about the Digitalmars-d-learn
mailing list