1/* 2 * Copyright (c) 2016, 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-8164467: ES6 computed properties are implemented wrongly 26 * 27 * @test 28 * @run 29 * @option --language=es6 30 */ 31 32function f(x) { 33 return x; 34} 35 36var d = 'd'; 37var n = 3; 38var s1 = Symbol(); 39var s2 = Symbol(); 40 41var object = { 42 get a() { return 'a' }, 43 get ['b']() { return 'b' }, 44 get [f('c')]() { return 'c' }, 45 get [d]() { return d }, 46 get [1]() { return 1 }, 47 get [f(2)]() { return 2 }, 48 get [n]() { return 3 }, 49 get [s1]() { return s1 }, 50 get [f(s2)]() { return s2 } 51}; 52 53 54Assert.assertEquals(object.a, 'a'); 55Assert.assertEquals(object.b, 'b'); 56Assert.assertEquals(object.c, 'c'); 57Assert.assertEquals(object.d, 'd'); 58Assert.assertEquals(object[1], 1); 59Assert.assertEquals(object[2], 2); 60Assert.assertEquals(object[3], 3); 61Assert.assertEquals(object[s1], s1); 62Assert.assertEquals(object[s2], s2); 63 64for (var s of ['a', 'b', 'c', 'd', 1, 2, 3, s1, s2]) { 65 Assert.assertEquals(object[s], s); 66} 67