| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 // Test for conflicting variable bindings. | 5 // Test for conflicting variable bindings. |
| 6 | 6 |
| 7 // Flags: --no-legacy-const --harmony-sloppy --harmony-sloppy-let | 7 // Flags: --no-legacy-const --harmony-sloppy --harmony-sloppy-let |
| 8 | 8 |
| 9 function CheckException(e) { | 9 function CheckException(e) { |
| 10 var string = e.toString(); | 10 var string = e.toString(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 return eval("(function(){ {" + s + "} return " + e + "})")(); | 37 return eval("(function(){ {" + s + "} return " + e + "})")(); |
| 38 } catch (x) { | 38 } catch (x) { |
| 39 return CheckException(x); | 39 return CheckException(x); |
| 40 } | 40 } |
| 41 } | 41 } |
| 42 | 42 |
| 43 function TestAll(expected,s,opt_e) { | 43 function TestAll(expected,s,opt_e) { |
| 44 var e = ""; | 44 var e = ""; |
| 45 var msg = s; | 45 var msg = s; |
| 46 if (opt_e) { e = opt_e; msg += opt_e; } | 46 if (opt_e) { e = opt_e; msg += opt_e; } |
| 47 // TODO(littledan): https://code.google.com/p/v8/issues/detail?id=4288 | |
| 48 // It is also not clear whether these tests makes sense in sloppy mode. | |
| 49 // TODO(littledan): Add tests using Realm.eval to ensure that global eval | 47 // TODO(littledan): Add tests using Realm.eval to ensure that global eval |
| 50 // works as expected. | 48 // works as expected. |
| 51 // assertEquals(expected === 'LocalConflict' ? 'NoConflict' : expected, | 49 assertEquals(expected === 'LocalConflict' ? 'NoConflict' : expected, |
| 52 // TestGlobal(s,e), "global:'" + msg + "'"); | 50 TestGlobal(s,e), "global:'" + msg + "'"); |
| 53 assertEquals(expected === 'LocalConflict' ? 'NoConflict' : expected, | 51 assertEquals(expected === 'LocalConflict' ? 'NoConflict' : expected, |
| 54 TestFunction(s,e), "function:'" + msg + "'"); | 52 TestFunction(s,e), "function:'" + msg + "'"); |
| 55 assertEquals(expected === 'LocalConflict' ? 'Conflict' : expected, | 53 assertEquals(expected === 'LocalConflict' ? 'Conflict' : expected, |
| 56 TestBlock(s,e), "block:'" + msg + "'"); | 54 TestBlock(s,e), "block:'" + msg + "'"); |
| 57 } | 55 } |
| 58 | 56 |
| 59 | 57 |
| 60 function TestConflict(s) { | 58 function TestConflict(s) { |
| 61 TestAll('Conflict', s); | 59 TestAll('Conflict', s); |
| 62 // TODO(littledan): https://code.google.com/p/v8/issues/detail?id=4288 | 60 TestAll('Conflict', 'eval("' + s + '");'); |
| 63 // It is also not clear whether these tests makes sense in sloppy mode. | |
| 64 // TestAll('Conflict', 'eval("' + s + '");'); | |
| 65 } | 61 } |
| 66 | 62 |
| 67 function TestNoConflict(s) { | 63 function TestNoConflict(s) { |
| 68 TestAll('NoConflict', s, "'NoConflict'"); | 64 TestAll('NoConflict', s, "'NoConflict'"); |
| 69 // TODO(littledan): https://code.google.com/p/v8/issues/detail?id=4288 | 65 TestAll('NoConflict', 'eval("' + s + '");', "'NoConflict'"); |
| 70 // TestAll('NoConflict', 'eval("' + s + '");', "'NoConflict'"); | |
| 71 } | 66 } |
| 72 | 67 |
| 73 function TestLocalConflict(s) { | 68 function TestLocalConflict(s) { |
| 74 TestAll('LocalConflict', s, "'NoConflict'"); | 69 TestAll('LocalConflict', s, "'NoConflict'"); |
| 75 // TODO(littledan): https://code.google.com/p/v8/issues/detail?id=4288 | 70 TestAll('NoConflict', 'eval("' + s + '");', "'NoConflict'"); |
| 76 // It is also not clear whether these tests makes sense in sloppy mode. | |
| 77 // TestAll('NoConflict', 'eval("' + s + '");', "'NoConflict'"); | |
| 78 } | 71 } |
| 79 | 72 |
| 80 var letbinds = [ "let x;", | 73 var letbinds = [ "let x;", |
| 81 "let x = 0;", | 74 "let x = 0;", |
| 82 "let x = undefined;", | 75 "let x = undefined;", |
| 83 "let x = function() {};", | 76 "let x = function() {};", |
| 84 "let x, y;", | 77 "let x, y;", |
| 85 "let y, x;", | 78 "let y, x;", |
| 86 "const x = 0;", | 79 "const x = 0;", |
| 87 "const x = undefined;", | 80 "const x = undefined;", |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 // Test conflicting parameter/var bindings. | 158 // Test conflicting parameter/var bindings. |
| 166 for (var v = 0; v < varbinds.length; ++v) { | 159 for (var v = 0; v < varbinds.length; ++v) { |
| 167 TestNoConflict('(function (x) {' + varbinds[v] + '})();'); | 160 TestNoConflict('(function (x) {' + varbinds[v] + '})();'); |
| 168 } | 161 } |
| 169 | 162 |
| 170 // Test conflicting catch/function bindings. | 163 // Test conflicting catch/function bindings. |
| 171 TestNoConflict('try {} catch(x) {' + funbind + '}'); | 164 TestNoConflict('try {} catch(x) {' + funbind + '}'); |
| 172 | 165 |
| 173 // Test conflicting parameter/function bindings. | 166 // Test conflicting parameter/function bindings. |
| 174 TestNoConflict('(function (x) {' + funbind + '})();'); | 167 TestNoConflict('(function (x) {' + funbind + '})();'); |
| OLD | NEW |