Am 19.02.2012 15:41, schrieb Don:
On 19.02.2012 14:24, Benjamin Thaut wrote:
The last dmd version I could use to actually build my project was dmd
2.056. Now I want to help finding those bugs that keep me from compiling
and I'm wondering how I can build repro cases for the ICEs I encounter.
I tried compiling with -v but that does not really give much information
about where the crash actually happens. So I wonder what can actually be
done to find the part of the code or even only the module it crashes in?

The current ICE I'm encountering is:
Assertion failure: 't1->ty == t2->ty' on line 2082 in file 'cast.c'

If you don't mind building the compiler,
add this line just before 2082:
if (t1->ty != t2->ty) e1->error("ICE");

and then build the compiler.

Sorry for the newbie-hostile comment. But it would save you a lot of time.

Thank you very much that helped a lot. I was able to reduce it to the following code:

class Foo
{

  @property EntityId entityId()
  {
    return EntityId(3);
  }

}

struct EntityId
{
  uint id;

  alias id this;

  this(uint id)
  {
    this.id = id;
  }
}

int main(string[] argv)
{
  Foo foo = null;
  auto id = (foo) ? foo.entityId : -1;

  return 0;
}

Reply via email to