April 27, 2011 [dmd-internals] [D-Programming-Language/dmd] a58b63: 4001 const variables should be readable inside CTF... | ||||
---|---|---|---|---|
| ||||
Branch: refs/heads/master Home: https://github.com/D-Programming-Language/dmd Commit: a58b63e7002b1ce7005d083f7cdadaf365190e02 https://github.com/D-Programming-Language/dmd/commit/a58b63e7002b1ce7005d083f7cdadaf365190e02 Author: Don Clugston <dclugston at googlemail.com> Date: 2011-04-26 (Tue, 26 Apr 2011) Changed paths: M src/interpret.c M src/optimize.c Log Message: ----------- 4001 const variables should be readable inside CTFE This happens because const variables can be initialized from non-const expressions. If the expression contains no runtime values, it should still be evaluatable at compile time. Commit: 4cecb95dab440608ffdc73577dd1f6826c3ee298 https://github.com/D-Programming-Language/dmd/commit/4cecb95dab440608ffdc73577dd1f6826c3ee298 Author: Don Clugston <dclugston at googlemail.com> Date: 2011-04-26 (Tue, 26 Apr 2011) Changed paths: M src/init.c Log Message: ----------- Suppress duplicate error messages for CTFE ExpInitializer runs optimize(WANT_INTERPRET) twice, once before and once after casting to the target type. If the first interpret fails, it will always fail the second time, too, so a duplicate error message will be printed. There are several mentions of this in Bugzilla, eg 4063, 4079, although it doesn't have a dedicated bug report itself. Commit: 565845baab78380bce2bdf92e3652122ee4bee1d https://github.com/D-Programming-Language/dmd/commit/565845baab78380bce2bdf92e3652122ee4bee1d Author: Don Clugston <dclugston at googlemail.com> Date: 2011-04-26 (Tue, 26 Apr 2011) Changed paths: M src/interpret.c Log Message: ----------- 4048 [CTFE] struct initializer: missing line number in error message Commit: fa4b0a9d4a75f120c0dede7869ea63cf49baa6fd https://github.com/D-Programming-Language/dmd/commit/fa4b0a9d4a75f120c0dede7869ea63cf49baa6fd Author: Don Clugston <dclugston at googlemail.com> Date: 2011-04-26 (Tue, 26 Apr 2011) Changed paths: M src/declaration.c M src/expression.c M src/init.c M src/init.h Log Message: ----------- 3809 Struct initializers apparently always CTFE'd Surprisingly, this only applies to struct initializers, not to StructLiterals or ArrayLiterals. This is happening because we don't know the type of the struct initializer. So, we have to run semantic on all members (Note that some members could be struct initializers too). This ends up running CTFE on each member, because ExpInitializer runs optimize(WANTinterpret). Although it would be possible to change StructInitializer so that it doesn't run semantic, I think it's better to be explicit about when CTFE is required -- it's a little bizarre that ExpInitializer requires a compile-time value. Commit: 13dcf90d934325b4f37c50679e07978a821c4249 https://github.com/D-Programming-Language/dmd/commit/13dcf90d934325b4f37c50679e07978a821c4249 Author: Walter Bright <walter at walterbright.com> Date: 2011-04-27 (Wed, 27 Apr 2011) Changed paths: M src/declaration.c M src/expression.c M src/init.c M src/init.h M src/interpret.c M src/optimize.c Log Message: ----------- Merged pull request #44 from donc/structinit2. Second round of struct initializer bugs Compare: https://github.com/D-Programming-Language/dmd/compare/48950d4...13dcf90 |
Copyright © 1999-2021 by the D Language Foundation