8147 – Blah!R.init now requires parens - (Blah!R).init

D issues are now tracked on GitHub. This Bugzilla instance remains as a read-only archive.
Issue 8147 - Blah!R.init now requires parens - (Blah!R).init
Summary: Blah!R.init now requires parens - (Blah!R).init
Status: RESOLVED FIXED
Alias: None
Product: D
Classification: Unclassified
Component: dmd (show other issues)
Version: D2
Hardware: All All
: P2 regression
Assignee: No Owner
URL:
Keywords: pull, rejects-valid
Depends on:
Blocks:
Reported: 2012年05月25日 02:56 UTC by Jonathan M Davis
Modified: 2015年06月09日 05:15 UTC (History)
1 user (show)

See Also:


Attachments
Add an attachment (proposed patch, testcase, etc.)

Note You need to log in before you can comment on or make changes to this issue.
Description Jonathan M Davis 2012年05月25日 02:56:38 UTC
In 2.059, this compiles:
import std.algorithm;
import std.conv;
enum A { a, b, c }
void main()
{
 map!"to!string(a)"([A.a]);
}
But with the latest head, you get this error:
/home/jmdavis/dmd2/linux/bin/../../src/phobos/std/algorithm.d(382): Error: undefined identifier 'init'
q.d(8): Error: template instance std.algorithm.map!("to!string(a)").map!(A[]) error instantiating
The offending line is line# 382 of std.algorithm:
 alias typeof(_fun(.ElementType!R.init)) ElementType;
If you put parens around .ElementType!R, then it compiles, but without them, it now fails. So, from the looks of it, the compiler now associates the .init with R instead of the result of .ElementType!R.
If this was a purposeful change, then map needs to be changed. However, if it was an accidental change (as I assume that it was), then dmd needs to be fixed.
Comment 1 Kenji Hara 2012年05月25日 05:30:43 UTC
https://github.com/D-Programming-Language/dmd/pull/966
This is a regression of fixing bug 7911, but real problem had been in AliasDeclaration::toAlias().
I think this bug exists also in D1 branch.
Comment 2 github-bugzilla 2012年05月25日 13:46:57 UTC
Commits pushed to master at https://github.com/D-Programming-Language/dmd
https://github.com/D-Programming-Language/dmd/commit/c8550ba2d3e8bdb4074ba82843a872168c87dff5
fix Issue 8147 - Blah!R.init now requires parens - (Blah!R).init
We should not call AliasDeclaratation::semantic() twice, even if Dsymbol::scope != NULL.
https://github.com/D-Programming-Language/dmd/commit/dfb9f29179b3f2a923d6edf2c4b21be50e7f1a29
Merge pull request #966 from 9rnsr/fix8147
Issue 8147 - Blah!R.init now requires parens - (Blah!R).init


AltStyle によって変換されたページ (->オリジナル) /