| // Copyright (C) 2016 the V8 project authors. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| /*--- |
| esid: sec-getvalue |
| es6id: 6.2.3.1 |
| description: > |
| When the base of a property reference is primitive, it is coerced to an |
| object during value retrieval (honoring the realm of the current execution |
| context) |
| info: | |
| [...] |
| 5. If IsPropertyReference(V) is true, then |
| a. If HasPrimitiveBase(V) is true, then |
| i. Assert: In this case, base will never be null or undefined. |
| ii. Let base be ToObject(base). |
| b. Return ? base.[[Get]](GetReferencedName(V), GetThisValue(V)). |
| features: [cross-realm, Symbol] |
| ---*/ |
| |
| var other = $262.createRealm().global; |
| |
| other.Number.prototype.test262 = 'number prototype'; |
| other.value = 1; |
| assert.sameValue(other.eval('value.test262'), 'number prototype'); |
| |
| other.String.prototype.test262 = 'string prototype'; |
| other.value = ''; |
| assert.sameValue(other.eval('value.test262'), 'string prototype'); |
| |
| other.Boolean.prototype.test262 = 'Boolean prototype'; |
| other.value = true; |
| assert.sameValue(other.eval('value.test262'), 'Boolean prototype'); |
| |
| other.Symbol.prototype.test262 = 'Symbol prototype'; |
| other.value = Symbol(); |
| assert.sameValue(other.eval('value.test262'), 'Symbol prototype'); |