[dmd-internals] [D-Programming-Language/dmd] a58b63: 4001 const variables should be readable inside CTF...

noreply at github.com noreply at github.com
Wed Apr 27 18:54:42 PDT 2011


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


More information about the dmd-internals mailing list