Thread overview
[Issue 11108] New: `hasElaborateAssign` should check whether the type is assignable
Sep 23, 2013
Denis Shelomovskij
Sep 23, 2013
Denis Shelomovskij
Oct 09, 2013
Denis Shelomovskij
Oct 12, 2013
Denis Shelomovskij
September 23, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11108

           Summary: `hasElaborateAssign` should check whether the type is
                    assignable
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: Phobos
        AssignedTo: verylonglogin.reg@gmail.com
        ReportedBy: verylonglogin.reg@gmail.com


--- Comment #0 from Denis Shelomovskij <verylonglogin.reg@gmail.com> 2013-09-23 14:37:55 MSD ---
The usage of `hasElaborateAssign` on unassignable types (e.g. `const` ones) which now results in returning `false` is almost definitely an error. So `hasElaborateAssign` has to reject such types.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
September 23, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11108



--- Comment #1 from Denis Shelomovskij <verylonglogin.reg@gmail.com> 2013-09-23 14:41:18 MSD ---
https://github.com/D-Programming-Language/phobos/pull/1598

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 09, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11108



--- Comment #2 from github-bugzilla@puremagic.com 2013-10-08 21:51:00 PDT ---
Commits pushed to master at https://github.com/D-Programming-Language/phobos

https://github.com/D-Programming-Language/phobos/commit/76fcee3a6679b2348fad1e375c62b2c7c82d430e
Fix Issue 11108 - `hasElaborateAssign` should check whether the type is
assignable

Issue URL: http://d.puremagic.com/issues/show_bug.cgi?id=11108

https://github.com/D-Programming-Language/phobos/commit/561d266f485646ced9c0449a7a64fa16563dd3a6 Merge pull request #1598 from denis-sh/fix-Issue-11108

Fix Issue 11108 - `hasElaborateAssign` should check whether the type is assignable

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 09, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11108



--- Comment #3 from github-bugzilla@puremagic.com 2013-10-08 23:30:39 PDT ---
Commits pushed to master at https://github.com/D-Programming-Language/phobos

https://github.com/D-Programming-Language/phobos/commit/396d629120a05ff65ba6d89997f99a8a00a9ef67
Revert "Fix Issue 11108 - `hasElaborateAssign` should check whether the type is
assignable"

This reverts commit e82724d740d223b52be2800eeec8d5ed4f673dfb.

https://github.com/D-Programming-Language/phobos/commit/2f65b41d41328004f21e1047d85c055446d3285b Merge pull request #1621 from monarchdodra/undoHasElaborate

Revert "Fix Issue 11108 - `hasElaborateAssign` should check whether the ...

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 09, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11108



--- Comment #4 from github-bugzilla@puremagic.com 2013-10-09 07:05:09 PDT ---
Commit pushed to master at https://github.com/D-Programming-Language/phobos

https://github.com/D-Programming-Language/phobos/commit/73fa0f036a366c381beb0e784a1b28eccfe99741 Merge pull request #1623 from denis-sh/fix-Issue-11108-again-fixup-pull-1598

Fix issue 11108 again (fixup pull #1598)

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 09, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11108


Denis Shelomovskij <verylonglogin.reg@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 12, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11108


monarchdodra@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
                 CC|                            |monarchdodra@gmail.com
         Resolution|FIXED                       |


--- Comment #5 from monarchdodra@gmail.com 2013-10-12 05:17:02 PDT ---
I don't believe this is a good choice.

I think a trait can be used inside a runtime check, and as such, all traits should always compile.

This is currently the case for every trait we have, be they in std.traits or std.range.

The trait name is "hasElaborateAssign". It should really just answer yes/no. Not yes, no, error.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 12, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11108



--- Comment #6 from github-bugzilla@puremagic.com 2013-10-12 05:17:19 PDT ---
Commits pushed to master at https://github.com/D-Programming-Language/phobos

https://github.com/D-Programming-Language/phobos/commit/8751ccfb0c70b5f4166eb7707af983ccab460ab2 Revert "Fix for issue 11108"

This reverts commit c930d8bd5e5246653a0300aac791b4c82b0466c5.

https://github.com/D-Programming-Language/phobos/commit/d327f339aaf8b8d6a7ad6e62626355a0e5e0fdd3 Merge pull request #1628 from monarchdodra/revert11108

Revert "Fix for issue 11108"

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 12, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11108



--- Comment #7 from Denis Shelomovskij <verylonglogin.reg@gmail.com> 2013-10-12 16:44:14 MSD ---
(In reply to comment #5)
> I don't believe this is a good choice.
> 
> I think a trait can be used inside a runtime check, and as such, all traits should always compile.
> 
> This is currently the case for every trait we have, be they in std.traits or std.range.
> 
> The trait name is "hasElaborateAssign". It should really just answer yes/no. Not yes, no, error.

See https://github.com/D-Programming-Language/phobos/pull/1623#issuecomment-26196738 for reply:
> So, we are talking about this:
>
> if (isAssignable!SS && !hasElaborateAssign!SS)
>
> Even in the case it would be just rare and uncommon code it is silly to make regular code error-prone (spending programmers time on debugging their mistakes) to support some patterns almost nobody use. But we are talking here about not just rare and uncommon, but almost definitely incorrect construction indicating an error. And you really did the error here [see pull discussion] which my pull shown.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------