OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <fstream> | 5 #include <fstream> |
6 | 6 |
7 #include "src/v8.h" | 7 #include "src/v8.h" |
8 | 8 |
9 #include "src/compiler.h" | 9 #include "src/compiler.h" |
10 #include "src/interpreter/bytecode-array-iterator.h" | 10 #include "src/interpreter/bytecode-array-iterator.h" |
(...skipping 1478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1489 | 1489 |
1490 "function f(a, ...restArgs) { return restArgs[0]; }", | 1490 "function f(a, ...restArgs) { return restArgs[0]; }", |
1491 | 1491 |
1492 "function f(a, ...restArgs) { return restArgs[0] + arguments[0]; }", | 1492 "function f(a, ...restArgs) { return restArgs[0] + arguments[0]; }", |
1493 }; | 1493 }; |
1494 | 1494 |
1495 CHECK_EQ(BuildActual(printer, snippets, "", "\nf();"), | 1495 CHECK_EQ(BuildActual(printer, snippets, "", "\nf();"), |
1496 LoadGolden("CreateRestParameter.golden")); | 1496 LoadGolden("CreateRestParameter.golden")); |
1497 } | 1497 } |
1498 | 1498 |
1499 TEST(IllegalRedeclaration) { | |
1500 bool old_legacy_const_flag = FLAG_legacy_const; | |
1501 FLAG_legacy_const = true; | |
1502 | |
1503 CHECK_GE(MessageTemplate::kVarRedeclaration, 128); | |
1504 // Must adapt bytecode if this changes. | |
1505 | |
1506 InitializedIgnitionHandleScope scope; | |
1507 BytecodeExpectationsPrinter printer(CcTest::isolate(), | |
1508 ConstantPoolType::kMixed); | |
1509 const char* snippets[] = {"const a = 1; { var a = 2; }"}; | |
1510 | |
1511 CHECK_EQ(BuildActual(printer, snippets), | |
1512 LoadGolden("IllegalRedeclaration.golden")); | |
1513 | |
1514 FLAG_legacy_const = old_legacy_const_flag; | |
1515 } | |
1516 | |
1517 TEST(ForIn) { | 1499 TEST(ForIn) { |
1518 InitializedIgnitionHandleScope scope; | 1500 InitializedIgnitionHandleScope scope; |
1519 BytecodeExpectationsPrinter printer(CcTest::isolate(), | 1501 BytecodeExpectationsPrinter printer(CcTest::isolate(), |
1520 ConstantPoolType::kMixed); | 1502 ConstantPoolType::kMixed); |
1521 const char* snippets[] = { | 1503 const char* snippets[] = { |
1522 "for (var p in null) {}", | 1504 "for (var p in null) {}", |
1523 | 1505 |
1524 "for (var p in undefined) {}", | 1506 "for (var p in undefined) {}", |
1525 | 1507 |
1526 "for (var p in undefined) {}", | 1508 "for (var p in undefined) {}", |
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1995 "let x = 10; return x;", | 1977 "let x = 10; return x;", |
1996 | 1978 |
1997 "let x = (x = 20);", | 1979 "let x = (x = 20);", |
1998 | 1980 |
1999 "let x = 10; x = 20;", | 1981 "let x = 10; x = 20;", |
2000 }; | 1982 }; |
2001 | 1983 |
2002 CHECK_EQ(BuildActual(printer, snippets), LoadGolden("LetVariable.golden")); | 1984 CHECK_EQ(BuildActual(printer, snippets), LoadGolden("LetVariable.golden")); |
2003 } | 1985 } |
2004 | 1986 |
2005 TEST(LegacyConstVariable) { | |
2006 bool old_legacy_const_flag = FLAG_legacy_const; | |
2007 FLAG_legacy_const = true; | |
2008 | |
2009 InitializedIgnitionHandleScope scope; | |
2010 BytecodeExpectationsPrinter printer(CcTest::isolate(), | |
2011 ConstantPoolType::kString); | |
2012 const char* snippets[] = { | |
2013 "const x = 10;", | |
2014 | |
2015 "const x = 10; return x;", | |
2016 | |
2017 "const x = ( x = 20);", | |
2018 | |
2019 "const x = 10; x = 20;", | |
2020 }; | |
2021 | |
2022 CHECK_EQ(BuildActual(printer, snippets), | |
2023 LoadGolden("LegacyConstVariable.golden")); | |
2024 | |
2025 FLAG_legacy_const = old_legacy_const_flag; | |
2026 } | |
2027 | |
2028 TEST(ConstVariableContextSlot) { | 1987 TEST(ConstVariableContextSlot) { |
2029 // TODO(mythria): Add tests for initialization of this via super calls. | 1988 // TODO(mythria): Add tests for initialization of this via super calls. |
2030 // TODO(mythria): Add tests that walk the context chain. | 1989 // TODO(mythria): Add tests that walk the context chain. |
2031 InitializedIgnitionHandleScope scope; | 1990 InitializedIgnitionHandleScope scope; |
2032 BytecodeExpectationsPrinter printer(CcTest::isolate(), | 1991 BytecodeExpectationsPrinter printer(CcTest::isolate(), |
2033 ConstantPoolType::kMixed); | 1992 ConstantPoolType::kMixed); |
2034 const char* snippets[] = { | 1993 const char* snippets[] = { |
2035 "const x = 10; function f1() {return x;}", | 1994 "const x = 10; function f1() {return x;}", |
2036 | 1995 |
2037 "const x = 10; function f1() {return x;} return x;", | 1996 "const x = 10; function f1() {return x;} return x;", |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2191 "})();\n", | 2150 "})();\n", |
2192 }; | 2151 }; |
2193 | 2152 |
2194 CHECK_EQ(BuildActual(printer, snippets), | 2153 CHECK_EQ(BuildActual(printer, snippets), |
2195 LoadGolden("ClassAndSuperClass.golden")); | 2154 LoadGolden("ClassAndSuperClass.golden")); |
2196 } | 2155 } |
2197 | 2156 |
2198 } // namespace interpreter | 2157 } // namespace interpreter |
2199 } // namespace internal | 2158 } // namespace internal |
2200 } // namespace v8 | 2159 } // namespace v8 |
OLD | NEW |