コンパイラのAssertとか出されても困るよね

Assertion failure: 'ei' on line 3265 in file 'mtype.c'

こんなの出されてもなぁ…。どこが間違ってるのかわからんがな。

再現したのー。MLのネタにでもするか。これやってたらついでにクラッシュバグ?も。もう既出ネタかもしれんが。

こっちのネタ不足も解消させるために、やっぱり内容をこっちにも書いておくか…。

こんなコード書いたらクラッシュしました。(既出かどーかは知りません;)

struct Foo {
}
class Test {
  const Foo a;    // const を付けないとクラッシュしないです
  void b() {
    pragma(msg, "まだクラッシュしてへんで");
    Foo c = this.a;    // this を付けないとクラッシュしないです
    pragma(msg, "クラッシュしたで");
  }
}

本当は
 Assertion failure: 'ei' on line 3265 in file 'mtype.c'
と出る奴の再現を追っていただけなんですがね...。ついでにこれは

struct Foo {
  int aa;
}
class Test {
  const Foo a = { aa: 0 };    // const と
  void b() {
    Foo c = this.a;    // this を付けると
  }
}

で出ました。

本当は Foo a = this.a; とか書いてたところに出たので気づいたのですが…。こんな風に書かない?すいません…

これ、const int a; とかじゃ出ないので、遭遇する確立は低いかも。