Thread overview
[Issue 6641] New: RefAppender!(T[]) should be OutputRange.
Sep 10, 2011
SHOO
Sep 10, 2011
David Simcha
Sep 10, 2011
SHOO
Mar 19, 2012
Rob Jacques
September 10, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6641

           Summary: RefAppender!(T[]) should be OutputRange.
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Phobos
        AssignedTo: nobody@puremagic.com
        ReportedBy: zan77137@nifty.com


--- Comment #0 from SHOO <zan77137@nifty.com> 2011-09-10 07:07:34 PDT ---
This code doesn't work!

--------------------------
import std.array, std.range;

static assert(isOutputRange!(Appender!(ubyte[]), ubyte));
static assert(isOutputRange!(RefAppender!(ubyte[]), ubyte));

void main() {}
--------------------------
$ dmd -run main
main.d(4): Error: static assert  (isOutputRange!(RefAppender!(ubyte[]),ubyte))
i
s false

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


David Simcha <dsimcha@yahoo.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dsimcha@yahoo.com


--- Comment #1 from David Simcha <dsimcha@yahoo.com> 2011-09-10 07:16:37 PDT ---
I think RefAppender should just be deprecated/scheduled for deprecation.  It was a short term backwards compatibility hack from a long time ago.

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



--- Comment #2 from SHOO <zan77137@nifty.com> 2011-09-10 08:41:34 PDT ---
(In reply to comment #1)
> I think RefAppender should just be deprecated/scheduled for deprecation.  It was a short term backwards compatibility hack from a long time ago.

Hmm...

I understand it as follows:
- It is the class which it is easy to be used in the wrong way. (User must not
add elements to the array while appending with RefAppender)
- The improper usage is easier to become the factor of the bug.
- Therefore it is deprecated.
Is this right?

And, I think that it is necessary to satisfy at least one of the following
conditions to make RefAppender deprecated:
- Appender does not allow the similar improper usage.
- Appender is as fast as the RefAppender.
- Appender's memory efficiency is as well as RefAppender's.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
March 19, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=6641


Rob Jacques <sandford@jhu.edu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |sandford@jhu.edu


--- Comment #3 from Rob Jacques <sandford@jhu.edu> 2012-03-19 14:02:29 PDT ---
https://github.com/D-Programming-Language/phobos/pull/502

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