diff options
Diffstat (limited to 'test/cctest/test-api.cc')
-rw-r--r-- | test/cctest/test-api.cc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc index b1a23c1e..f4ab9ad0 100644 --- a/test/cctest/test-api.cc +++ b/test/cctest/test-api.cc @@ -16135,6 +16135,30 @@ THREADED_TEST(Regress93759) { } +THREADED_TEST(Regress125988) { + v8::HandleScope scope; + Handle<FunctionTemplate> intercept = FunctionTemplate::New(); + AddInterceptor(intercept, EmptyInterceptorGetter, EmptyInterceptorSetter); + LocalContext env; + env->Global()->Set(v8_str("Intercept"), intercept->GetFunction()); + CompileRun("var a = new Object();" + "var b = new Intercept();" + "var c = new Object();" + "c.__proto__ = b;" + "b.__proto__ = a;" + "a.x = 23;" + "for (var i = 0; i < 3; i++) c.x;"); + ExpectBoolean("c.hasOwnProperty('x')", false); + ExpectInt32("c.x", 23); + CompileRun("a.y = 42;" + "for (var i = 0; i < 3; i++) c.x;"); + ExpectBoolean("c.hasOwnProperty('x')", false); + ExpectInt32("c.x", 23); + ExpectBoolean("c.hasOwnProperty('y')", false); + ExpectInt32("c.y", 42); +} + + static void TestReceiver(Local<Value> expected_result, Local<Value> expected_receiver, const char* code) { |