[Issue 6906] Cannot assign value into associative array if contains opAssign
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Sep 7 10:01:08 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=6906
Kenji Hara <k.hara.pg at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords|wrong-code |rejects-valid
Status|NEW |RESOLVED
Platform|Other |All
Resolution| |FIXED
OS/Version|Windows |All
--- Comment #4 from Kenji Hara <k.hara.pg at gmail.com> 2013-09-07 10:01:04 PDT ---
(In reply to comment #0)
> This code fails to compile because the struct S implement opAssign and the
> compiler tries using it rather than the associative arrays insert.
>
> void main() {
> S[string] ss;
> S s;
>
> ss["hello"] = s;
> }
>
> struct S {
> void opAssign(int i) {
> }
> }
>
> test.d(6): Error: function test.S.opAssign (int i) is not callable using
> argument types (S)
> test.d(6): Error: cannot implicitly convert expression (s) of type S to int
> test.d(6): Error: function test.S.opAssign (int i) is not callable using
> argument types (S)
> test.d(6): Error: cannot implicitly convert expression (s) of type S to int
> PS C:\Documents and Settings\jphillips\src\Juno> dmd test.d
> test.d(5): Error: function test.S.opAssign (int i) is not callable using
> argument types (S)
> test.d(5): Error: cannot implicitly convert expression (s) of type S to int
> test.d(5): Error: function test.S.opAssign (int i) is not callable using
> argument types (S)
> test.d(5): Error: cannot implicitly convert expression (s) of type S to int
>From 2.062, the code could work.
Even if a struct has only non-identity opAssign methods, identity assignment
would be rewritten to the field-to-field assignment.
struct S
{
int val;
void opAssign(int i) {}
}
void main()
{
S s;
S s2;
s = s2; // Rewite as: s.tupleof = s2.tupleof;
s = 1; // Rewrite as: s.opAssign(1)
}
--
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