(an excerpt from runnable/interpret.d) struct S { int x; } template Compileable(int z) { bool OK=true;} int goodfoo3() { S[4] w = void; // uninitialized array of structs w[$-2].x = 217; // initialize one member return w[2].x; // line 8 } $ dmd -c -O f.d f.d(8): Error: variable w used before set note: filed as d2, but might well exist on d1 as well.. untested
Part of the test case for bug 6293 triggers this bug when built with -O. See runnable/xtet46.d, test6293(). The buggy part is hidden behind version(none). class C6293 { C6293 token; } void f6293(in C6293[] a) pure { auto x0 = a[0].token; assert(x0 is a[0].token.token.token); assert(x0 is (&x0).token); version(none) { auto p1 = &x0 + 1; assert(x0 is (p1 - 1).token); } int c = 0; assert(x0 is a[c].token); } void test6293() { auto x = new C6293; x.token = x; f6293([x]); } See also: https://github.com/D-Programming-Language/dmd/pull/243
https://github.com/D-Programming-Language/dmd/commit/847abf5348b39b6b483cd11280b04d8590f722e5 https://github.com/D-Programming-Language/dmd/commit/12a19326129398af62da52dff86b9cf9f381d7dd
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル