[Issue 3893] New: opOpAssign and opIndexOpAssign get wrong operator string
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Mar 8 01:52:11 PST 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3893
Summary: opOpAssign and opIndexOpAssign get wrong operator
string
Product: D
Version: 2.041
Platform: All
OS/Version: All
Status: NEW
Severity: critical
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: bugzilla at kyllingen.net
--- Comment #0 from Lars T. Kyllingstad <bugzilla at kyllingen.net> 2010-03-08 01:52:06 PST ---
The specification says:
The expression: a op= b
is rewritten as: a.opOpAssign!("op")(b)
A similar statement is made about opIndexOpAssign. However, what actually
happens is that the template parameter is set to "op=", as this program shows:
struct S
{
void opIndexOpAssign(string op)(int x, int i)
{
pragma (msg, op);
}
void opOpAssign(string op)(int x)
{
pragma(msg, op);
}
}
void main()
{
S s;
s[1] += 2;
s += 3;
}
This prints the following on compilation:
+=
+=
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list