This is a couple of cases I missed in my CTFE patches in DMD2.032. Root cause: defaultInit for a struct is a VarExp, not a StructLiteral. This needs to be applied recursively. Patch: I've added a recursive defaultInitAsStructLiteral() to TypeStruct. It needs to be called from two places in interpret.c. --------------------------------- struct SwineFlu { int a; int b; } struct Infection { SwineFlu y; } struct IveGotSwineFlu { Infection x; int z; int oink() { return x.y.a+10; } } int quarantine() { IveGotSwineFlu d; return d.oink(); } struct Mexico { Infection x; int z=2; int oink() { return z+x.y.b; } } int mediafrenzy() { Mexico m; return m.oink; } static assert( quarantine() == 10); static assert( mediafrenzy() == 2);
Created attachment 522 [details] Patch against DMD2.037 svn 283.
Changeset 321
Fixed dmd 1.054 and 2.038
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル