This code: ========== module scratch; class C { int x; invariant() { assert( x < int.max ); } auto foo() { return x; } } ========= Reports this error: $ dmd scratch.d scratch.d(10): Error: function scratch.C.foo post conditions are not supported if the return type is inferred Removing the invariant eliminates the error message. Converting the 'auto' to an explicit return type eliminates the error message. Given that the compiler must eventually figure out the return type of the method, I have no idea why this error is occurring.
https://github.com/D-Programming-Language/dmd/pull/147
Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/007b936e0970666c7698ad7c3b2c2b3da2d8cbc0 Merge pull request #147 from 9rnsr/fix4785 Issue 4785 & 5039 Allow auto return function with contracts
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル