8169233: LengthNotWritableFilter extraElements.remove(index) has no effect

Reviewed-by: sundar, jlaskey
This commit is contained in:
Priya Lakshmi Muthuswamy 2017-09-02 14:26:29 +02:00 committed by Hannes Wallnöfer
parent ffc2232a73
commit 5f21305cc1
4 changed files with 61 additions and 16 deletions

View File

@ -143,7 +143,7 @@ final class LengthNotWritableFilter extends ArrayFilter {
@Override
public ArrayData delete(final int index) {
extraElements.remove(index);
extraElements.remove(ArrayIndex.toLongIndex(index));
underlying = underlying.delete(index);
return this;
}

View File

@ -58,37 +58,37 @@ x[4] === undefined (should be undefined)
>>> Pop test
Popping from 1,2,3
array is now [1,2,3] length is = 3
array is now [1,2,] length is = 3
class jdk.nashorn.internal.runtime.arrays.LengthNotWritableFilter
Popping from 1,2,3
array is now [1,2,3] length is = 3
Popping from 1,2,
array is now [1,2,] length is = 3
class jdk.nashorn.internal.runtime.arrays.LengthNotWritableFilter
x.length === 3 (should be 3)
x === 1,2,3
Popping from 1,2,3
array is now [1,2,3] length is = 3
x === 1,2,
Popping from 1,2,
array is now [1,2,] length is = 3
class jdk.nashorn.internal.runtime.arrays.LengthNotWritableFilter
Popping from 1,2,3
array is now [1,2,3] length is = 3
Popping from 1,2,
array is now [1,2,] length is = 3
class jdk.nashorn.internal.runtime.arrays.LengthNotWritableFilter
Popping from 1,2,3
array is now [1,2,3] length is = 3
Popping from 1,2,
array is now [1,2,] length is = 3
class jdk.nashorn.internal.runtime.arrays.LengthNotWritableFilter
Popping from 1,2,3
array is now [1,2,3] length is = 3
Popping from 1,2,
array is now [1,2,] length is = 3
class jdk.nashorn.internal.runtime.arrays.LengthNotWritableFilter
Popping from 1,2,3
array is now [1,2,3] length is = 3
Popping from 1,2,
array is now [1,2,] length is = 3
class jdk.nashorn.internal.runtime.arrays.LengthNotWritableFilter
x.length === 3 (should be 3)
x === 1,2,3
x === 1,2,
class jdk.nashorn.internal.runtime.arrays.LengthNotWritableFilter
Writing 0
class jdk.nashorn.internal.runtime.arrays.LengthNotWritableFilter

View File

@ -0,0 +1,41 @@
/*
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* JDK-8169233 : LengthNotWritableFilter: extraElements.remove(index) has no effect
*
* @test
* @run
*/
var array = ['a', 'b', 'c', 'd'];
Object.defineProperty(array, "length", {writable: false});
try {
array.push('e');
} catch (e) {
}
print("array : "+array);
print("length : " + array.length);
delete array[0];
print("array : "+array);
print("length : " + array.length);

View File

@ -0,0 +1,4 @@
array : a,b,c,d
length : 4
array : ,b,c,d
length : 4