/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- * vim: set ts=8 sts=2 et sw=2 tw=80:
*/ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include"js/PropertyAndElement.h"// JS_DefineProperty, JS_DefinePropertyById, JS_GetProperty #include"jsapi-tests/tests.h" #include"vm/JSFunction.h"// for js::IsInternalFunctionObject
#include"vm/JSObject-inl.h"
BEGIN_TEST(testLookup_bug522590) { // Define a function that makes method-bearing objects.
JS::RootedValue x(cx);
EXEC("function mkobj() { return {f: function () {return 2;}} }");
// Calling mkobj() multiple times must create multiple functions in ES5.
EVAL("mkobj().f !== mkobj().f", &x);
CHECK(x.isTrue());
// Now make x.f a method.
EVAL("mkobj()", &x);
JS::RootedObject xobj(cx, x.toObjectOrNull());
// This lookup must not return an internal function object.
JS::RootedValue r(cx);
CHECK(JS_GetProperty(cx, xobj, "f", &r));
CHECK(r.isObject());
JSObject* funobj = &r.toObject();
CHECK(funobj->is<JSFunction>());
CHECK(!js::IsInternalFunctionObject(*funobj));
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.