Thread overview
[Issue 12168] New: [REG2.065a] Add ref to array() and object() of JSONValue getters to add new element
Feb 15, 2014
Kenji Hara
Feb 15, 2014
Kenji Hara
Feb 16, 2014
Kenji Hara
February 15, 2014
https://d.puremagic.com/issues/show_bug.cgi?id=12168

           Summary: [REG2.065a] Add ref to array() and object() of
                    JSONValue getters to add new element
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Keywords: rejects-valid
          Severity: regression
          Priority: P2
         Component: Phobos
        AssignedTo: nobody@puremagic.com
        ReportedBy: k.hara.pg@gmail.com


--- Comment #0 from Kenji Hara <k.hara.pg@gmail.com> 2014-02-14 23:22:07 PST ---
In 2.064, JSONValue.array and JSONValue.object were instance fields.
But they are changed to getter functions, so directly appending values is
disallowed.

In git-head the issue is already fixed and appending is re-allowed.. https://github.com/D-Programming-Language/phobos/pull/1916

But still the problem is in 2.065-beta(1,2,3).
So I file the issue as a regression.

Test case:

void main()
{
    import std.json, std.conv;

    static if (__VERSION__ == 2064)
    {
        JSONValue vn = {integer:10};
        JSONValue jarr = {array:[vn]};
    }
    else
        JSONValue jarr = JSONValue([10]);
    foreach (i; 0..9)
    {
        static if (__VERSION__ == 2064)
            JSONValue v = {integer:i};
        else
            JSONValue v = JSONValue(i);

        jarr.array ~= v;
        // --> 2.065-beta: jarr.array() is not an lvalue
    }
    assert(jarr.array.length == 10);

    static if (__VERSION__ == 2064)
    {
        JSONValue vs = {str:"value"};
        JSONValue jobj = {object:["key" : vs]};
    }
    else
        JSONValue jobj = JSONValue(["key" : JSONValue("value")]);
    foreach (i; 0..9)
    {
        static if (__VERSION__ == 2064)
            JSONValue v = {str:text("value", i)};
        else
            JSONValue v = JSONValue(text("value", i));

        jobj.object[text("key", i)] = v;
        // --> 2.065-beta: jobj.object() is not an lvalue
    }
    assert(jobj.object.length == 10);
}

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
February 15, 2014
https://d.puremagic.com/issues/show_bug.cgi?id=12168


Kenji Hara <k.hara.pg@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull


--- Comment #1 from Kenji Hara <k.hara.pg@gmail.com> 2014-02-14 23:29:35 PST ---
Fixed commit in git-head: https://github.com/D-Programming-Language/phobos/commit/8a1fc1253ab71944a2d630e4872d745958b733f2

Pull request for 2.065 branch: https://github.com/D-Programming-Language/phobos/pull/1939

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
February 16, 2014
https://d.puremagic.com/issues/show_bug.cgi?id=12168


Kenji Hara <k.hara.pg@gmail.com> changed:

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


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