Bug 7888 – derivedMembers forward reference error with nested imports

Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2012-04-10T19:07:00Z
Last change time
2012-04-10T20:27:40Z
Assigned to
nobody
Creator
code

Comments

Comment #0 by code — 2012-04-10T19:07:18Z
The different behavior of is() from bug 7868 depending on whether it was invoked from a static if condition or not might be acceptable, but this example is clearly a regression in my eyes: --- module a; struct A { import b : c; // Instantiate template which uses derivedMembers. alias D!A Test; // Unrelated template from other module - »not defined«. static if (c!()()) {} } // Just something using derivedMembers. template D(T) { mixin({ foreach (name; __traits(derivedMembers, T)) {} return ""; }()); } --- --- module b; bool c()() { return true; } --- It compiled fine in DMD 2.058, but fails with »template instance c!() template 'c' is not defined, did you mean a?« in latest Git master (7c22b8a), which is absolutely not related to the cause of the error.
Comment #1 by github-bugzilla — 2012-04-10T20:27:04Z
Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/747e13608d4f50b6f57ef0bfe134cb62e1b0b7db fix Issue 7888 - derivedMembers forward reference error with nested imports
Comment #2 by github-bugzilla — 2012-04-10T20:27:22Z
Commit pushed to dmd-1.x at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/9e13e3918bbec70a42812b791e1d5b90245244da fix Issue 7888 - derivedMembers forward reference error with nested imports