Changeset 215360 in webkit


Ignore:
Timestamp:
Apr 14, 2017 2:08:51 AM (7 years ago)
Author:
gskachkov@gmail.com
Message:

Safari 10.1 JSON.parse returns incorrect object for numeric keys with decimal values
https://bugs.webkit.org/show_bug.cgi?id=170442

Reviewed by Yusuke Suzuki.

  • stress/object-number-properties.js:
Location:
trunk/JSTests
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/JSTests/ChangeLog

    r215359 r215360  
     12017-04-14  Oleksandr Skachkov  <gskachkov@gmail.com>
     2
     3        Safari 10.1 JSON.parse returns incorrect object for numeric keys with decimal values
     4        https://bugs.webkit.org/show_bug.cgi?id=170442
     5
     6        Reviewed by Yusuke Suzuki.
     7
     8        * stress/object-number-properties.js:
     9
    1102017-04-13  Yusuke Suzuki  <utatane.tea@gmail.com>
    211
  • trunk/JSTests/stress/object-number-properties.js

    r214714 r215360  
    8181assert(baz[250], "A");
    8282assert(baz[1001], "B");
     83
     84var bar = JSON.parse('{"0":97.1,"1000":96.5,"2000":96.1,"3000":97.4,"4000":90.4}');
     85
     86assert(Object.keys(bar).length, 5);
     87assert(bar[0], 97.1);
     88assert(bar[1000], 96.5);
     89assert(bar[2000], 96.1);
     90assert(bar[3000], 97.4);
     91assert(bar[4000], 90.4);
     92
     93bar = JSON.parse('{"0":97.1, "250": 65.3, "1000":96.5,"2000":96.1,"3000":97.4,"4000":90.4}');
     94
     95assert(Object.keys(bar).length, 6);
     96
     97assert(bar[0], 97.1);
     98assert(bar[250], 65.3);
     99assert(bar[1000], 96.5);
     100assert(bar[2000], 96.1);
     101assert(bar[3000], 97.4);
     102assert(bar[4000], 90.4);
     103
     104bar = JSON.parse('{"0":97.1, "250": null, "1000":96.5,"2000":96.1,"3000":97.4,"4000":90.4}');
     105
     106assert(Object.keys(bar).length, 6);
     107
     108assert(bar[0], 97.1);
     109assert(bar[250], null);
     110assert(bar[1000], 96.5);
     111assert(bar[2000], 96.1);
     112assert(bar[3000], 97.4);
     113assert(bar[4000], 90.4);
     114
     115
     116bar = eval('(()=>({"0":97.1, "250": 65.3, "1000":96.5,"2000":96.1,"3000":97.4,"4000":90.4}))();');
     117
     118assert(Object.keys(bar).length, 6);
     119
     120assert(bar[0], 97.1);
     121assert(bar[250], 65.3);
     122assert(bar[1000], 96.5);
     123assert(bar[2000], 96.1);
     124assert(bar[3000], 97.4);
     125assert(bar[4000], 90.4);
     126
     127bar = eval('(()=>({"0":97.1, "250": null, "1000":96.5,"2000":96.1,"3000":97.4,"4000":90.4}))();');
     128
     129assert(Object.keys(bar).length, 6);
     130
     131assert(bar[0], 97.1);
     132assert(bar[250], null);
     133assert(bar[1000], 96.5);
     134assert(bar[2000], 96.1);
     135assert(bar[3000], 97.4);
     136assert(bar[4000], 90.4);
     137
     138
     139bar = eval('(()=>({"0":97.1, "250": NaN, "1000":96.5,"2000":96.1,"3000":97.4,"4000":90.4}))();');
     140
     141assert(Object.keys(bar).length, 6);
     142
     143assert(bar[0], 97.1);
     144assert(isNaN(bar[250]), true);
     145assert(bar[1000], 96.5);
     146assert(bar[2000], 96.1);
     147assert(bar[3000], 97.4);
     148assert(bar[4000], 90.4);
Note: See TracChangeset for help on using the changeset viewer.