OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 // See: http://code.google.com/p/v8/issues/detail?id=3926 |
| 6 |
| 7 // Switch statements should disable hole check elimination |
| 8 |
| 9 'use strict'; |
| 10 |
| 11 function f(x) { |
| 12 var z; |
| 13 switch (x) { |
| 14 case 1: |
| 15 let y = 1; |
| 16 case 2: |
| 17 y = 2; |
| 18 case 3: |
| 19 z = y; |
| 20 } |
| 21 return z; |
| 22 } |
| 23 assertEquals(2, f(1)); |
| 24 assertThrows(function() {f(2)}, ReferenceError); |
| 25 assertThrows(function() {f(3)}, ReferenceError); |
| 26 |
| 27 assertThrows(function() { |
| 28 switch (1) { |
| 29 case 0: |
| 30 let x = 2; |
| 31 case 1: |
| 32 { // this block, plus the let below, adds another linear lexical scope |
| 33 let y = 3; |
| 34 x; |
| 35 } |
| 36 } |
| 37 }, ReferenceError); |
OLD | NEW |