JDK-8022731.js revision 495:03ba1cd734c0
1/*
2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/**
25 * JDK-8022731: NativeArguments has wrong implementation of isMapped()
26 *
27 * @test
28 * @run
29 */
30
31Object.defineProperty(Object.prototype, "0", {value: "proto"});
32
33function test0(a, b) {
34    Object.defineProperty(arguments, "1", {get: function() { return "get" }});
35    return arguments[0];
36}
37
38function test1(a, b) {
39    Object.defineProperty(arguments, "0", {get: function() { return "get" }});
40    return a;
41}
42
43function test2(a, b) {
44    Object.defineProperty(arguments, "0", {value: "value"});
45    delete arguments[0];
46    return a;
47}
48
49function test3(a, b) {
50    arguments[1] = "arg1";
51    return b;
52}
53
54function test4(a, b) {
55    b = "b";
56    return arguments[1];
57}
58
59function test5(a, b) {
60    Object.defineProperty(arguments, "0", {value: "value"});
61    arguments[0] = "new";
62    return a;
63}
64
65function test6(a, b) {
66    Object.defineProperty(arguments, "0", {value: "value"});
67    arguments[0] = "new";
68    delete arguments[0];
69    return a;
70}
71
72function test7(a, b) {
73    Object.defineProperty(arguments, "0", {value: "value", writable: false});
74    arguments[0] = "new";
75    return a;
76}
77
78print(test0());
79print(test0("p1", "p2"));
80print(test1());
81print(test1("p1"));
82print(test2());
83print(test2("p1"));
84print(test3());
85print(test3(1, 2));
86print(test4());
87print(test4("p1", "p2"));
88print(test5());
89print(test5("p1"));
90print(test6());
91print(test6("p1"));
92print(test7());
93print(test7("p1"));
94