| OLD | NEW | 
|     1 // Copyright 2012 the V8 project authors. All rights reserved. |     1 // Copyright 2012 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 | 
| (...skipping 1667 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1678 } |  1678 } | 
|  1679  |  1679  | 
|  1680  |  1680  | 
|  1681 TEST(StrictOctal) { |  1681 TEST(StrictOctal) { | 
|  1682   // Test that syntax error caused by octal literal is reported correctly as |  1682   // Test that syntax error caused by octal literal is reported correctly as | 
|  1683   // such (issue 2220). |  1683   // such (issue 2220). | 
|  1684   v8::V8::Initialize(); |  1684   v8::V8::Initialize(); | 
|  1685   v8::HandleScope scope(CcTest::isolate()); |  1685   v8::HandleScope scope(CcTest::isolate()); | 
|  1686   v8::Context::Scope context_scope( |  1686   v8::Context::Scope context_scope( | 
|  1687       v8::Context::New(CcTest::isolate())); |  1687       v8::Context::New(CcTest::isolate())); | 
|  1688   v8::TryCatch try_catch; |  1688   v8::TryCatch try_catch(CcTest::isolate()); | 
|  1689   const char* script = |  1689   const char* script = | 
|  1690       "\"use strict\";       \n" |  1690       "\"use strict\";       \n" | 
|  1691       "a = function() {      \n" |  1691       "a = function() {      \n" | 
|  1692       "  b = function() {    \n" |  1692       "  b = function() {    \n" | 
|  1693       "    01;               \n" |  1693       "    01;               \n" | 
|  1694       "  };                  \n" |  1694       "  };                  \n" | 
|  1695       "};                    \n"; |  1695       "};                    \n"; | 
|  1696   v8::Script::Compile(v8::String::NewFromUtf8(CcTest::isolate(), script)); |  1696   v8::Script::Compile(v8::String::NewFromUtf8(CcTest::isolate(), script)); | 
|  1697   CHECK(try_catch.HasCaught()); |  1697   CHECK(try_catch.HasCaught()); | 
|  1698   v8::String::Utf8Value exception(try_catch.Exception()); |  1698   v8::String::Utf8Value exception(try_catch.Exception()); | 
| (...skipping 4518 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  6217   RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, |  6217   RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, | 
|  6218                     arraysize(always_flags)); |  6218                     arraysize(always_flags)); | 
|  6219 } |  6219 } | 
|  6220  |  6220  | 
|  6221  |  6221  | 
|  6222 TEST(StrongModeFreeVariablesDeclaredByPreviousScript) { |  6222 TEST(StrongModeFreeVariablesDeclaredByPreviousScript) { | 
|  6223   i::FLAG_strong_mode = true; |  6223   i::FLAG_strong_mode = true; | 
|  6224   v8::V8::Initialize(); |  6224   v8::V8::Initialize(); | 
|  6225   v8::HandleScope scope(CcTest::isolate()); |  6225   v8::HandleScope scope(CcTest::isolate()); | 
|  6226   v8::Context::Scope context_scope(v8::Context::New(CcTest::isolate())); |  6226   v8::Context::Scope context_scope(v8::Context::New(CcTest::isolate())); | 
|  6227   v8::TryCatch try_catch; |  6227   v8::TryCatch try_catch(CcTest::isolate()); | 
|  6228  |  6228  | 
|  6229   // Introduce a bunch of variables, in all language modes. |  6229   // Introduce a bunch of variables, in all language modes. | 
|  6230   const char* script1 = |  6230   const char* script1 = | 
|  6231       "var my_var1 = 0;        \n" |  6231       "var my_var1 = 0;        \n" | 
|  6232       "function my_func1() { } \n" |  6232       "function my_func1() { } \n" | 
|  6233       "const my_const1 = 0;    \n"; |  6233       "const my_const1 = 0;    \n"; | 
|  6234   CompileRun(v8_str(script1)); |  6234   CompileRun(v8_str(script1)); | 
|  6235   CHECK(!try_catch.HasCaught()); |  6235   CHECK(!try_catch.HasCaught()); | 
|  6236  |  6236  | 
|  6237   const char* script2 = |  6237   const char* script2 = | 
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  6276   CompileRun(v8_str(script5)); |  6276   CompileRun(v8_str(script5)); | 
|  6277   CHECK(!try_catch.HasCaught()); |  6277   CHECK(!try_catch.HasCaught()); | 
|  6278 } |  6278 } | 
|  6279  |  6279  | 
|  6280  |  6280  | 
|  6281 TEST(StrongModeFreeVariablesDeclaredByLanguage) { |  6281 TEST(StrongModeFreeVariablesDeclaredByLanguage) { | 
|  6282   i::FLAG_strong_mode = true; |  6282   i::FLAG_strong_mode = true; | 
|  6283   v8::V8::Initialize(); |  6283   v8::V8::Initialize(); | 
|  6284   v8::HandleScope scope(CcTest::isolate()); |  6284   v8::HandleScope scope(CcTest::isolate()); | 
|  6285   v8::Context::Scope context_scope(v8::Context::New(CcTest::isolate())); |  6285   v8::Context::Scope context_scope(v8::Context::New(CcTest::isolate())); | 
|  6286   v8::TryCatch try_catch; |  6286   v8::TryCatch try_catch(CcTest::isolate()); | 
|  6287  |  6287  | 
|  6288   const char* script1 = |  6288   const char* script1 = | 
|  6289       "\"use strong\";         \n" |  6289       "\"use strong\";         \n" | 
|  6290       "Math;                   \n" |  6290       "Math;                   \n" | 
|  6291       "RegExp;                 \n"; |  6291       "RegExp;                 \n"; | 
|  6292   CompileRun(v8_str(script1)); |  6292   CompileRun(v8_str(script1)); | 
|  6293   CHECK(!try_catch.HasCaught()); |  6293   CHECK(!try_catch.HasCaught()); | 
|  6294 } |  6294 } | 
|  6295  |  6295  | 
|  6296  |  6296  | 
|  6297 TEST(StrongModeFreeVariablesDeclaredInGlobalPrototype) { |  6297 TEST(StrongModeFreeVariablesDeclaredInGlobalPrototype) { | 
|  6298   i::FLAG_strong_mode = true; |  6298   i::FLAG_strong_mode = true; | 
|  6299   v8::V8::Initialize(); |  6299   v8::V8::Initialize(); | 
|  6300   v8::HandleScope scope(CcTest::isolate()); |  6300   v8::HandleScope scope(CcTest::isolate()); | 
|  6301   v8::Context::Scope context_scope(v8::Context::New(CcTest::isolate())); |  6301   v8::Context::Scope context_scope(v8::Context::New(CcTest::isolate())); | 
|  6302   v8::TryCatch try_catch; |  6302   v8::TryCatch try_catch(CcTest::isolate()); | 
|  6303  |  6303  | 
|  6304   const char* script1 = "this.__proto__.my_var = 0;\n"; |  6304   const char* script1 = "this.__proto__.my_var = 0;\n"; | 
|  6305   CompileRun(v8_str(script1)); |  6305   CompileRun(v8_str(script1)); | 
|  6306   CHECK(!try_catch.HasCaught()); |  6306   CHECK(!try_catch.HasCaught()); | 
|  6307  |  6307  | 
|  6308   const char* script2 = |  6308   const char* script2 = | 
|  6309       "\"use strong\";         \n" |  6309       "\"use strong\";         \n" | 
|  6310       "my_var;                 \n"; |  6310       "my_var;                 \n"; | 
|  6311   CompileRun(v8_str(script2)); |  6311   CompileRun(v8_str(script2)); | 
|  6312   CHECK(!try_catch.HasCaught()); |  6312   CHECK(!try_catch.HasCaught()); | 
|  6313 } |  6313 } | 
|  6314  |  6314  | 
|  6315  |  6315  | 
|  6316 TEST(StrongModeFreeVariablesNotDeclared) { |  6316 TEST(StrongModeFreeVariablesNotDeclared) { | 
|  6317   i::FLAG_strong_mode = true; |  6317   i::FLAG_strong_mode = true; | 
|  6318   v8::V8::Initialize(); |  6318   v8::V8::Initialize(); | 
|  6319   v8::HandleScope scope(CcTest::isolate()); |  6319   v8::HandleScope scope(CcTest::isolate()); | 
|  6320   v8::Context::Scope context_scope(v8::Context::New(CcTest::isolate())); |  6320   v8::Context::Scope context_scope(v8::Context::New(CcTest::isolate())); | 
|  6321   v8::TryCatch try_catch; |  6321   v8::TryCatch try_catch(CcTest::isolate()); | 
|  6322  |  6322  | 
|  6323   // Test that referencing unintroduced variables in sloppy mode is ok. |  6323   // Test that referencing unintroduced variables in sloppy mode is ok. | 
|  6324   const char* script1 = |  6324   const char* script1 = | 
|  6325       "if (false) {            \n" |  6325       "if (false) {            \n" | 
|  6326       "  not_there1;           \n" |  6326       "  not_there1;           \n" | 
|  6327       "}                       \n"; |  6327       "}                       \n"; | 
|  6328   CompileRun(v8_str(script1)); |  6328   CompileRun(v8_str(script1)); | 
|  6329   CHECK(!try_catch.HasCaught()); |  6329   CHECK(!try_catch.HasCaught()); | 
|  6330  |  6330  | 
|  6331   // But not in strong mode. |  6331   // But not in strong mode. | 
|  6332   { |  6332   { | 
|  6333     const char* script2 = |  6333     const char* script2 = | 
|  6334         "\"use strong\";         \n" |  6334         "\"use strong\";         \n" | 
|  6335         "if (false) {            \n" |  6335         "if (false) {            \n" | 
|  6336         "  not_there2;           \n" |  6336         "  not_there2;           \n" | 
|  6337         "}                       \n"; |  6337         "}                       \n"; | 
|  6338     v8::TryCatch try_catch2; |  6338     v8::TryCatch try_catch2(CcTest::isolate()); | 
|  6339     v8::Script::Compile(v8_str(script2)); |  6339     v8::Script::Compile(v8_str(script2)); | 
|  6340     CHECK(try_catch2.HasCaught()); |  6340     CHECK(try_catch2.HasCaught()); | 
|  6341     v8::String::Utf8Value exception(try_catch2.Exception()); |  6341     v8::String::Utf8Value exception(try_catch2.Exception()); | 
|  6342     CHECK_EQ(0, |  6342     CHECK_EQ(0, | 
|  6343              strcmp( |  6343              strcmp( | 
|  6344                  "ReferenceError: In strong mode, using an undeclared global " |  6344                  "ReferenceError: In strong mode, using an undeclared global " | 
|  6345                  "variable 'not_there2' is not allowed", |  6345                  "variable 'not_there2' is not allowed", | 
|  6346                  *exception)); |  6346                  *exception)); | 
|  6347   } |  6347   } | 
|  6348  |  6348  | 
|  6349   // Check that the variable reference is detected inside a strong function too, |  6349   // Check that the variable reference is detected inside a strong function too, | 
|  6350   // even if the script scope is not strong. |  6350   // even if the script scope is not strong. | 
|  6351   { |  6351   { | 
|  6352     const char* script3 = |  6352     const char* script3 = | 
|  6353         "(function not_lazy() {  \n" |  6353         "(function not_lazy() {  \n" | 
|  6354         "  \"use strong\";       \n" |  6354         "  \"use strong\";       \n" | 
|  6355         "  if (false) {          \n" |  6355         "  if (false) {          \n" | 
|  6356         "    not_there3;         \n" |  6356         "    not_there3;         \n" | 
|  6357         "  }                     \n" |  6357         "  }                     \n" | 
|  6358         "})();                   \n"; |  6358         "})();                   \n"; | 
|  6359     v8::TryCatch try_catch2; |  6359     v8::TryCatch try_catch2(CcTest::isolate()); | 
|  6360     v8::Script::Compile(v8_str(script3)); |  6360     v8::Script::Compile(v8_str(script3)); | 
|  6361     CHECK(try_catch2.HasCaught()); |  6361     CHECK(try_catch2.HasCaught()); | 
|  6362     v8::String::Utf8Value exception(try_catch2.Exception()); |  6362     v8::String::Utf8Value exception(try_catch2.Exception()); | 
|  6363     CHECK_EQ(0, |  6363     CHECK_EQ(0, | 
|  6364              strcmp( |  6364              strcmp( | 
|  6365                  "ReferenceError: In strong mode, using an undeclared global " |  6365                  "ReferenceError: In strong mode, using an undeclared global " | 
|  6366                  "variable 'not_there3' is not allowed", |  6366                  "variable 'not_there3' is not allowed", | 
|  6367                  *exception)); |  6367                  *exception)); | 
|  6368   } |  6368   } | 
|  6369 } |  6369 } | 
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  6601     "[a, ...]", |  6601     "[a, ...]", | 
|  6602     "[..., ]", |  6602     "[..., ]", | 
|  6603     "[..., ...]", |  6603     "[..., ...]", | 
|  6604     "[ (...a)]", |  6604     "[ (...a)]", | 
|  6605     NULL}; |  6605     NULL}; | 
|  6606   // clang-format on |  6606   // clang-format on | 
|  6607   static const ParserFlag always_flags[] = {kAllowHarmonySpreadArrays}; |  6607   static const ParserFlag always_flags[] = {kAllowHarmonySpreadArrays}; | 
|  6608   RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, |  6608   RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, | 
|  6609                     arraysize(always_flags)); |  6609                     arraysize(always_flags)); | 
|  6610 } |  6610 } | 
| OLD | NEW |