test262/test/built-ins/Proxy/get-fn-realm.js
jugglinmike 71e573f7da Add tests for realm interactions (#688)
* Add tests for prototype realm inference

* Add tests for miscellaneous realm concerns

* Add tests for realm of spec-created Errors

In some cases, Error objects produced by the specification are
observable from ECMAScript code. Among these cases, some are further
differentiated in that they occur outside of any built-in function and
may be triggered through syntactic production directly. The current
realm record is commonly interpreted incorrectly under these
circumstances.

Add tests asserting that the expected realm record is used when
constructing such Error objects.

* Add tests for realm use in ArraySpeciesCreate

* Add tests for function realm retrieval

* Add tests for cross-realm behaviors of Symbols

* Add tests for GetValue and PutValue

* Add tests for realm of spec-created Arrays

In some cases, Arrays produced by CreateArrayFromList are observable
from ECMAScript code. Among these cases, two occur outside of any
built-in function and may be triggered through syntactic production
directly. The current realm record is commonly interpreted incorrectly
under these circumstances.

Add tests asserting that the expected realm record is used when
constructing arrays.

* Add test for spec-created object

* fixup! Add tests for realm of spec-created Errors

* fixup! Add tests for realm of spec-created Errors

* fixup! Add tests for prototype realm inference

* fixup! Add tests for miscellaneous realm concerns
2016-10-24 10:43:17 -07:00

27 lines
1006 B
JavaScript

// 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-getfunctionrealm
es6id: 7.3.22
description: >
The realm of a proxy exotic object is the realm of its target function
info: |
[...]
2. If obj has a [[Realm]] internal slot, then
a, Return obj's [[Realm]] internal slot.
3. If obj is a Bound Function exotic object, then
[...]
4. If obj is a Proxy exotic object, then
a. If the value of the [[ProxyHandler]] internal slot of obj is null,
throw a TypeError exception.
b. Let proxyTarget be the value of obj's [[ProxyTarget]] internal slot.
c. Return ? GetFunctionRealm(proxyTarget).
---*/
var other = $.createRealm().global;
var C = new other.Function();
// Ensure that the proxy does not report a `prototype` property
var P = new Proxy(C, { get: function() {} });
assert.sameValue(Object.getPrototypeOf(new P()), other.Object.prototype);