Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(211)

Side by Side Diff: test/cctest/test-decls.cc

Issue 1502193002: Remove deprecate API usage from more cctests (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: updates Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2007-2008 the V8 project authors. All rights reserved. 1 // Copyright 2007-2008 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
11 // with the distribution. 11 // with the distribution.
12 // * Neither the name of Google Inc. nor the names of its 12 // * Neither the name of Google Inc. nor the names of its
13 // contributors may be used to endorse or promote products derived 13 // contributors may be used to endorse or promote products derived
14 // from this software without specific prior written permission. 14 // from this software without specific prior written permission.
15 // 15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 27
28 // TODO(jochen): Remove this after the setting is turned on globally.
29 #define V8_IMMINENT_DEPRECATION_WARNINGS
30
28 #include <stdlib.h> 31 #include <stdlib.h>
29 32
30 #include "src/v8.h" 33 #include "src/v8.h"
31 34
32 #include "src/heap/heap.h" 35 #include "src/heap/heap.h"
33 #include "test/cctest/cctest.h" 36 #include "test/cctest/cctest.h"
34 37
35 using namespace v8; 38 using namespace v8;
36 39
37 40
(...skipping 15 matching lines...) Expand all
53 virtual ~DeclarationContext() { 56 virtual ~DeclarationContext() {
54 if (is_initialized_) { 57 if (is_initialized_) {
55 Isolate* isolate = CcTest::isolate(); 58 Isolate* isolate = CcTest::isolate();
56 HandleScope scope(isolate); 59 HandleScope scope(isolate);
57 Local<Context> context = Local<Context>::New(isolate, context_); 60 Local<Context> context = Local<Context>::New(isolate, context_);
58 context->Exit(); 61 context->Exit();
59 context_.Reset(); 62 context_.Reset();
60 } 63 }
61 } 64 }
62 65
63 void Check(const char* source, 66 void Check(const char* source, int get, int set, int has,
64 int get, int set, int has,
65 Expectations expectations, 67 Expectations expectations,
66 v8::Handle<Value> value = Local<Value>()); 68 v8::Local<Value> value = Local<Value>());
67 69
68 int get_count() const { return get_count_; } 70 int get_count() const { return get_count_; }
69 int set_count() const { return set_count_; } 71 int set_count() const { return set_count_; }
70 int query_count() const { return query_count_; } 72 int query_count() const { return query_count_; }
71 73
72 protected: 74 protected:
73 virtual v8::Handle<Value> Get(Local<Name> key); 75 virtual v8::Local<Value> Get(Local<Name> key);
74 virtual v8::Handle<Value> Set(Local<Name> key, Local<Value> value); 76 virtual v8::Local<Value> Set(Local<Name> key, Local<Value> value);
75 virtual v8::Handle<Integer> Query(Local<Name> key); 77 virtual v8::Local<Integer> Query(Local<Name> key);
76 78
77 void InitializeIfNeeded(); 79 void InitializeIfNeeded();
78 80
79 // Perform optional initialization steps on the context after it has 81 // Perform optional initialization steps on the context after it has
80 // been created. Defaults to none but may be overwritten. 82 // been created. Defaults to none but may be overwritten.
81 virtual void PostInitializeContext(Handle<Context> context) {} 83 virtual void PostInitializeContext(Local<Context> context) {}
82 84
83 // Get the holder for the interceptor. Default to the instance template 85 // Get the holder for the interceptor. Default to the instance template
84 // but may be overwritten. 86 // but may be overwritten.
85 virtual Local<ObjectTemplate> GetHolder(Local<FunctionTemplate> function) { 87 virtual Local<ObjectTemplate> GetHolder(Local<FunctionTemplate> function) {
86 return function->InstanceTemplate(); 88 return function->InstanceTemplate();
87 } 89 }
88 90
89 // The handlers are called as static functions that forward 91 // The handlers are called as static functions that forward
90 // to the instance specific virtual methods. 92 // to the instance specific virtual methods.
91 static void HandleGet(Local<Name> key, 93 static void HandleGet(Local<Name> key,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 context->Enter(); 133 context->Enter();
132 is_initialized_ = true; 134 is_initialized_ = true;
133 // Reset counts. Bootstrapping might have called into the interceptor. 135 // Reset counts. Bootstrapping might have called into the interceptor.
134 get_count_ = 0; 136 get_count_ = 0;
135 set_count_ = 0; 137 set_count_ = 0;
136 query_count_ = 0; 138 query_count_ = 0;
137 PostInitializeContext(context); 139 PostInitializeContext(context);
138 } 140 }
139 141
140 142
141 void DeclarationContext::Check(const char* source, 143 void DeclarationContext::Check(const char* source, int get, int set, int query,
142 int get, int set, int query,
143 Expectations expectations, 144 Expectations expectations,
144 v8::Handle<Value> value) { 145 v8::Local<Value> value) {
145 InitializeIfNeeded(); 146 InitializeIfNeeded();
146 // A retry after a GC may pollute the counts, so perform gc now 147 // A retry after a GC may pollute the counts, so perform gc now
147 // to avoid that. 148 // to avoid that.
148 CcTest::heap()->CollectGarbage(v8::internal::NEW_SPACE); 149 CcTest::heap()->CollectGarbage(v8::internal::NEW_SPACE);
149 HandleScope scope(CcTest::isolate()); 150 HandleScope scope(CcTest::isolate());
150 TryCatch catcher(CcTest::isolate()); 151 TryCatch catcher(CcTest::isolate());
151 catcher.SetVerbose(true); 152 catcher.SetVerbose(true);
152 Local<Script> script = 153 Local<Context> context = CcTest::isolate()->GetCurrentContext();
153 Script::Compile(String::NewFromUtf8(CcTest::isolate(), source)); 154 MaybeLocal<Script> script = Script::Compile(
155 context,
156 String::NewFromUtf8(CcTest::isolate(), source, v8::NewStringType::kNormal)
157 .ToLocalChecked());
154 if (expectations == EXPECT_ERROR) { 158 if (expectations == EXPECT_ERROR) {
155 CHECK(script.IsEmpty()); 159 CHECK(script.IsEmpty());
156 return; 160 return;
157 } 161 }
158 CHECK(!script.IsEmpty()); 162 CHECK(!script.IsEmpty());
159 Local<Value> result = script->Run(); 163 MaybeLocal<Value> result = script.ToLocalChecked()->Run(context);
160 CHECK_EQ(get, get_count()); 164 CHECK_EQ(get, get_count());
161 CHECK_EQ(set, set_count()); 165 CHECK_EQ(set, set_count());
162 CHECK_EQ(query, query_count()); 166 CHECK_EQ(query, query_count());
163 if (expectations == EXPECT_RESULT) { 167 if (expectations == EXPECT_RESULT) {
164 CHECK(!catcher.HasCaught()); 168 CHECK(!catcher.HasCaught());
165 if (!value.IsEmpty()) { 169 if (!value.IsEmpty()) {
166 CHECK(value->Equals(result)); 170 CHECK(value->Equals(context, result.ToLocalChecked()).FromJust());
167 } 171 }
168 } else { 172 } else {
169 CHECK(expectations == EXPECT_EXCEPTION); 173 CHECK(expectations == EXPECT_EXCEPTION);
170 CHECK(catcher.HasCaught()); 174 CHECK(catcher.HasCaught());
171 if (!value.IsEmpty()) { 175 if (!value.IsEmpty()) {
172 CHECK(value->Equals(catcher.Exception())); 176 CHECK(value->Equals(context, catcher.Exception()).FromJust());
173 } 177 }
174 } 178 }
175 // Clean slate for the next test. 179 // Clean slate for the next test.
176 CcTest::heap()->CollectAllAvailableGarbage(); 180 CcTest::heap()->CollectAllAvailableGarbage();
177 } 181 }
178 182
179 183
180 void DeclarationContext::HandleGet( 184 void DeclarationContext::HandleGet(
181 Local<Name> key, const v8::PropertyCallbackInfo<v8::Value>& info) { 185 Local<Name> key, const v8::PropertyCallbackInfo<v8::Value>& info) {
182 DeclarationContext* context = GetInstance(info.Data()); 186 DeclarationContext* context = GetInstance(info.Data());
(...skipping 18 matching lines...) Expand all
201 info.GetReturnValue().Set(context->Query(key)); 205 info.GetReturnValue().Set(context->Query(key));
202 } 206 }
203 207
204 208
205 DeclarationContext* DeclarationContext::GetInstance(Local<Value> data) { 209 DeclarationContext* DeclarationContext::GetInstance(Local<Value> data) {
206 void* value = Local<External>::Cast(data)->Value(); 210 void* value = Local<External>::Cast(data)->Value();
207 return static_cast<DeclarationContext*>(value); 211 return static_cast<DeclarationContext*>(value);
208 } 212 }
209 213
210 214
211 v8::Handle<Value> DeclarationContext::Get(Local<Name> key) { 215 v8::Local<Value> DeclarationContext::Get(Local<Name> key) {
212 return v8::Handle<Value>(); 216 return v8::Local<Value>();
213 } 217 }
214 218
215 219
216 v8::Handle<Value> DeclarationContext::Set(Local<Name> key, Local<Value> value) { 220 v8::Local<Value> DeclarationContext::Set(Local<Name> key, Local<Value> value) {
217 return v8::Handle<Value>(); 221 return v8::Local<Value>();
218 } 222 }
219 223
220 224
221 v8::Handle<Integer> DeclarationContext::Query(Local<Name> key) { 225 v8::Local<Integer> DeclarationContext::Query(Local<Name> key) {
222 return v8::Handle<Integer>(); 226 return v8::Local<Integer>();
223 } 227 }
224 228
225 229
226 // Test global declaration of a property the interceptor doesn't know 230 // Test global declaration of a property the interceptor doesn't know
227 // about and doesn't handle. 231 // about and doesn't handle.
228 TEST(Unknown) { 232 TEST(Unknown) {
229 HandleScope scope(CcTest::isolate()); 233 HandleScope scope(CcTest::isolate());
230 v8::V8::Initialize(); 234 v8::V8::Initialize();
231 235
232 { DeclarationContext context; 236 { DeclarationContext context;
(...skipping 28 matching lines...) Expand all
261 1, // access 265 1, // access
262 0, 266 0,
263 0, 267 0,
264 EXPECT_RESULT, Number::New(CcTest::isolate(), 0)); 268 EXPECT_RESULT, Number::New(CcTest::isolate(), 0));
265 } 269 }
266 } 270 }
267 271
268 272
269 class AbsentPropertyContext: public DeclarationContext { 273 class AbsentPropertyContext: public DeclarationContext {
270 protected: 274 protected:
271 virtual v8::Handle<Integer> Query(Local<Name> key) { 275 virtual v8::Local<Integer> Query(Local<Name> key) {
272 return v8::Handle<Integer>(); 276 return v8::Local<Integer>();
273 } 277 }
274 }; 278 };
275 279
276 280
277 TEST(Absent) { 281 TEST(Absent) {
278 v8::Isolate* isolate = CcTest::isolate(); 282 v8::Isolate* isolate = CcTest::isolate();
279 v8::V8::Initialize(); 283 v8::V8::Initialize();
280 HandleScope scope(isolate); 284 HandleScope scope(isolate);
281 285
282 { AbsentPropertyContext context; 286 { AbsentPropertyContext context;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 public: 329 public:
326 enum State { 330 enum State {
327 DECLARE, 331 DECLARE,
328 INITIALIZE_IF_ASSIGN, 332 INITIALIZE_IF_ASSIGN,
329 UNKNOWN 333 UNKNOWN
330 }; 334 };
331 335
332 AppearingPropertyContext() : state_(DECLARE) { } 336 AppearingPropertyContext() : state_(DECLARE) { }
333 337
334 protected: 338 protected:
335 virtual v8::Handle<Integer> Query(Local<Name> key) { 339 virtual v8::Local<Integer> Query(Local<Name> key) {
336 switch (state_) { 340 switch (state_) {
337 case DECLARE: 341 case DECLARE:
338 // Force declaration by returning that the 342 // Force declaration by returning that the
339 // property is absent. 343 // property is absent.
340 state_ = INITIALIZE_IF_ASSIGN; 344 state_ = INITIALIZE_IF_ASSIGN;
341 return Handle<Integer>(); 345 return Local<Integer>();
342 case INITIALIZE_IF_ASSIGN: 346 case INITIALIZE_IF_ASSIGN:
343 // Return that the property is present so we only get the 347 // Return that the property is present so we only get the
344 // setter called when initializing with a value. 348 // setter called when initializing with a value.
345 state_ = UNKNOWN; 349 state_ = UNKNOWN;
346 return Integer::New(isolate(), v8::None); 350 return Integer::New(isolate(), v8::None);
347 default: 351 default:
348 CHECK(state_ == UNKNOWN); 352 CHECK(state_ == UNKNOWN);
349 break; 353 break;
350 } 354 }
351 // Do the lookup in the object. 355 // Do the lookup in the object.
352 return v8::Handle<Integer>(); 356 return v8::Local<Integer>();
353 } 357 }
354 358
355 private: 359 private:
356 State state_; 360 State state_;
357 }; 361 };
358 362
359 363
360 TEST(Appearing) { 364 TEST(Appearing) {
361 v8::V8::Initialize(); 365 v8::V8::Initialize();
362 HandleScope scope(CcTest::isolate()); 366 HandleScope scope(CcTest::isolate());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 0, 0, EXPECT_RESULT, Number::New(CcTest::isolate(), 0)); 398 0, 0, EXPECT_RESULT, Number::New(CcTest::isolate(), 0));
395 } 399 }
396 } 400 }
397 401
398 402
399 403
400 class ExistsInPrototypeContext: public DeclarationContext { 404 class ExistsInPrototypeContext: public DeclarationContext {
401 public: 405 public:
402 ExistsInPrototypeContext() { InitializeIfNeeded(); } 406 ExistsInPrototypeContext() { InitializeIfNeeded(); }
403 protected: 407 protected:
404 virtual v8::Handle<Integer> Query(Local<Name> key) { 408 virtual v8::Local<Integer> Query(Local<Name> key) {
405 // Let it seem that the property exists in the prototype object. 409 // Let it seem that the property exists in the prototype object.
406 return Integer::New(isolate(), v8::None); 410 return Integer::New(isolate(), v8::None);
407 } 411 }
408 412
409 // Use the prototype as the holder for the interceptors. 413 // Use the prototype as the holder for the interceptors.
410 virtual Local<ObjectTemplate> GetHolder(Local<FunctionTemplate> function) { 414 virtual Local<ObjectTemplate> GetHolder(Local<FunctionTemplate> function) {
411 return function->PrototypeTemplate(); 415 return function->PrototypeTemplate();
412 } 416 }
413 }; 417 };
414 418
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 0, 457 0,
454 0, 458 0,
455 EXPECT_RESULT, Number::New(CcTest::isolate(), 0)); 459 EXPECT_RESULT, Number::New(CcTest::isolate(), 0));
456 } 460 }
457 } 461 }
458 462
459 463
460 464
461 class AbsentInPrototypeContext: public DeclarationContext { 465 class AbsentInPrototypeContext: public DeclarationContext {
462 protected: 466 protected:
463 virtual v8::Handle<Integer> Query(Local<Name> key) { 467 virtual v8::Local<Integer> Query(Local<Name> key) {
464 // Let it seem that the property is absent in the prototype object. 468 // Let it seem that the property is absent in the prototype object.
465 return Handle<Integer>(); 469 return Local<Integer>();
466 } 470 }
467 471
468 // Use the prototype as the holder for the interceptors. 472 // Use the prototype as the holder for the interceptors.
469 virtual Local<ObjectTemplate> GetHolder(Local<FunctionTemplate> function) { 473 virtual Local<ObjectTemplate> GetHolder(Local<FunctionTemplate> function) {
470 return function->PrototypeTemplate(); 474 return function->PrototypeTemplate();
471 } 475 }
472 }; 476 };
473 477
474 478
475 TEST(AbsentInPrototype) { 479 TEST(AbsentInPrototype) {
(...skipping 12 matching lines...) Expand all
488 492
489 493
490 class ExistsInHiddenPrototypeContext: public DeclarationContext { 494 class ExistsInHiddenPrototypeContext: public DeclarationContext {
491 public: 495 public:
492 ExistsInHiddenPrototypeContext() { 496 ExistsInHiddenPrototypeContext() {
493 hidden_proto_ = FunctionTemplate::New(CcTest::isolate()); 497 hidden_proto_ = FunctionTemplate::New(CcTest::isolate());
494 hidden_proto_->SetHiddenPrototype(true); 498 hidden_proto_->SetHiddenPrototype(true);
495 } 499 }
496 500
497 protected: 501 protected:
498 virtual v8::Handle<Integer> Query(Local<Name> key) { 502 virtual v8::Local<Integer> Query(Local<Name> key) {
499 // Let it seem that the property exists in the hidden prototype object. 503 // Let it seem that the property exists in the hidden prototype object.
500 return Integer::New(isolate(), v8::None); 504 return Integer::New(isolate(), v8::None);
501 } 505 }
502 506
503 // Install the hidden prototype after the global object has been created. 507 // Install the hidden prototype after the global object has been created.
504 virtual void PostInitializeContext(Handle<Context> context) { 508 virtual void PostInitializeContext(Local<Context> context) {
505 Local<Object> global_object = context->Global(); 509 Local<Object> global_object = context->Global();
506 Local<Object> hidden_proto = hidden_proto_->GetFunction()->NewInstance(); 510 Local<Object> hidden_proto = hidden_proto_->GetFunction(context)
511 .ToLocalChecked()
512 ->NewInstance(context)
513 .ToLocalChecked();
507 Local<Object> inner_global = 514 Local<Object> inner_global =
508 Local<Object>::Cast(global_object->GetPrototype()); 515 Local<Object>::Cast(global_object->GetPrototype());
509 inner_global->SetPrototype(hidden_proto); 516 inner_global->SetPrototype(context, hidden_proto).FromJust();
510 } 517 }
511 518
512 // Use the hidden prototype as the holder for the interceptors. 519 // Use the hidden prototype as the holder for the interceptors.
513 virtual Local<ObjectTemplate> GetHolder(Local<FunctionTemplate> function) { 520 virtual Local<ObjectTemplate> GetHolder(Local<FunctionTemplate> function) {
514 return hidden_proto_->InstanceTemplate(); 521 return hidden_proto_->InstanceTemplate();
515 } 522 }
516 523
517 private: 524 private:
518 Local<FunctionTemplate> hidden_proto_; 525 Local<FunctionTemplate> hidden_proto_;
519 }; 526 };
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 SimpleContext() 567 SimpleContext()
561 : handle_scope_(CcTest::isolate()), 568 : handle_scope_(CcTest::isolate()),
562 context_(Context::New(CcTest::isolate())) { 569 context_(Context::New(CcTest::isolate())) {
563 context_->Enter(); 570 context_->Enter();
564 } 571 }
565 572
566 ~SimpleContext() { 573 ~SimpleContext() {
567 context_->Exit(); 574 context_->Exit();
568 } 575 }
569 576
570 void Check(const char* source, 577 void Check(const char* source, Expectations expectations,
571 Expectations expectations, 578 v8::Local<Value> value = Local<Value>()) {
572 v8::Handle<Value> value = Local<Value>()) {
573 HandleScope scope(context_->GetIsolate()); 579 HandleScope scope(context_->GetIsolate());
574 TryCatch catcher(context_->GetIsolate()); 580 TryCatch catcher(context_->GetIsolate());
575 catcher.SetVerbose(true); 581 catcher.SetVerbose(true);
576 Local<Script> script = 582 MaybeLocal<Script> script = Script::Compile(
577 Script::Compile(String::NewFromUtf8(context_->GetIsolate(), source)); 583 context_, String::NewFromUtf8(context_->GetIsolate(), source,
584 v8::NewStringType::kNormal)
585 .ToLocalChecked());
578 if (expectations == EXPECT_ERROR) { 586 if (expectations == EXPECT_ERROR) {
579 CHECK(script.IsEmpty()); 587 CHECK(script.IsEmpty());
580 return; 588 return;
581 } 589 }
582 CHECK(!script.IsEmpty()); 590 CHECK(!script.IsEmpty());
583 Local<Value> result = script->Run(); 591 MaybeLocal<Value> result = script.ToLocalChecked()->Run(context_);
584 if (expectations == EXPECT_RESULT) { 592 if (expectations == EXPECT_RESULT) {
585 CHECK(!catcher.HasCaught()); 593 CHECK(!catcher.HasCaught());
586 if (!value.IsEmpty()) { 594 if (!value.IsEmpty()) {
587 CHECK(value->Equals(result)); 595 CHECK(value->Equals(context_, result.ToLocalChecked()).FromJust());
588 } 596 }
589 } else { 597 } else {
590 CHECK(expectations == EXPECT_EXCEPTION); 598 CHECK(expectations == EXPECT_EXCEPTION);
591 CHECK(catcher.HasCaught()); 599 CHECK(catcher.HasCaught());
592 if (!value.IsEmpty()) { 600 if (!value.IsEmpty()) {
593 CHECK(value->Equals(catcher.Exception())); 601 CHECK(value->Equals(context_, catcher.Exception()).FromJust());
594 } 602 }
595 } 603 }
596 } 604 }
597 605
598 private: 606 private:
599 HandleScope handle_scope_; 607 HandleScope handle_scope_;
600 Local<Context> context_; 608 Local<Context> context_;
601 }; 609 };
602 610
603 611
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 } 902 }
895 } 903 }
896 } 904 }
897 905
898 906
899 TEST(CrossScriptDynamicLookup) { 907 TEST(CrossScriptDynamicLookup) {
900 HandleScope handle_scope(CcTest::isolate()); 908 HandleScope handle_scope(CcTest::isolate());
901 909
902 { 910 {
903 SimpleContext context; 911 SimpleContext context;
904 Local<String> undefined_string = String::NewFromUtf8( 912 Local<String> undefined_string =
905 CcTest::isolate(), "undefined", String::kInternalizedString); 913 String::NewFromUtf8(CcTest::isolate(), "undefined",
906 Local<String> number_string = String::NewFromUtf8( 914 v8::NewStringType::kInternalized)
907 CcTest::isolate(), "number", String::kInternalizedString); 915 .ToLocalChecked();
916 Local<String> number_string =
917 String::NewFromUtf8(CcTest::isolate(), "number",
918 v8::NewStringType::kInternalized)
919 .ToLocalChecked();
908 920
909 context.Check( 921 context.Check(
910 "function f(o) { with(o) { return x; } }" 922 "function f(o) { with(o) { return x; } }"
911 "function g(o) { with(o) { x = 15; } }" 923 "function g(o) { with(o) { x = 15; } }"
912 "function h(o) { with(o) { return typeof x; } }", 924 "function h(o) { with(o) { return typeof x; } }",
913 EXPECT_RESULT, Undefined(CcTest::isolate())); 925 EXPECT_RESULT, Undefined(CcTest::isolate()));
914 context.Check("h({})", EXPECT_RESULT, undefined_string); 926 context.Check("h({})", EXPECT_RESULT, undefined_string);
915 context.Check( 927 context.Check(
916 "'use strict';" 928 "'use strict';"
917 "let x = 1;" 929 "let x = 1;"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
967 EXPECT_EXCEPTION); 979 EXPECT_EXCEPTION);
968 } 980 }
969 } 981 }
970 982
971 983
972 TEST(CrossScriptStaticLookupUndeclared) { 984 TEST(CrossScriptStaticLookupUndeclared) {
973 HandleScope handle_scope(CcTest::isolate()); 985 HandleScope handle_scope(CcTest::isolate());
974 986
975 { 987 {
976 SimpleContext context; 988 SimpleContext context;
977 Local<String> undefined_string = String::NewFromUtf8( 989 Local<String> undefined_string =
978 CcTest::isolate(), "undefined", String::kInternalizedString); 990 String::NewFromUtf8(CcTest::isolate(), "undefined",
979 Local<String> number_string = String::NewFromUtf8( 991 v8::NewStringType::kInternalized)
980 CcTest::isolate(), "number", String::kInternalizedString); 992 .ToLocalChecked();
993 Local<String> number_string =
994 String::NewFromUtf8(CcTest::isolate(), "number",
995 v8::NewStringType::kInternalized)
996 .ToLocalChecked();
981 997
982 context.Check( 998 context.Check(
983 "function f(o) { return x; }" 999 "function f(o) { return x; }"
984 "function g(v) { x = v; }" 1000 "function g(v) { x = v; }"
985 "function h(o) { return typeof x; }", 1001 "function h(o) { return typeof x; }",
986 EXPECT_RESULT, Undefined(CcTest::isolate())); 1002 EXPECT_RESULT, Undefined(CcTest::isolate()));
987 context.Check("h({})", EXPECT_RESULT, undefined_string); 1003 context.Check("h({})", EXPECT_RESULT, undefined_string);
988 context.Check( 1004 context.Check(
989 "'use strict';" 1005 "'use strict';"
990 "let x = 1;" 1006 "let x = 1;"
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
1245 Undefined(CcTest::isolate())); 1261 Undefined(CcTest::isolate()));
1246 for (int i = 0; i < 4; i++) { 1262 for (int i = 0; i < 4; i++) {
1247 context.Check("f()", EXPECT_EXCEPTION); 1263 context.Check("f()", EXPECT_EXCEPTION);
1248 } 1264 }
1249 context.Check("%OptimizeFunctionOnNextCall(f);", EXPECT_RESULT, 1265 context.Check("%OptimizeFunctionOnNextCall(f);", EXPECT_RESULT,
1250 Undefined(CcTest::isolate())); 1266 Undefined(CcTest::isolate()));
1251 1267
1252 context.Check("'use strict'; f(); let x = 2; x", EXPECT_EXCEPTION); 1268 context.Check("'use strict'; f(); let x = 2; x", EXPECT_EXCEPTION);
1253 } 1269 }
1254 } 1270 }
OLDNEW
« no previous file with comments | « test/cctest/compiler/test-code-stub-assembler.cc ('k') | test/cctest/test-inobject-slack-tracking.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698