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