| Index: test/mjsunit/harmony/block-let-declaration.js
|
| diff --git a/test/mjsunit/harmony/block-scoping.js b/test/mjsunit/harmony/block-let-declaration.js
|
| similarity index 65%
|
| copy from test/mjsunit/harmony/block-scoping.js
|
| copy to test/mjsunit/harmony/block-let-declaration.js
|
| index f974de82b5ce35b94dc58acb0ed651246014e1f9..19c943f14c0b1313c842f21ee7dc090d1a812b12 100644
|
| --- a/test/mjsunit/harmony/block-scoping.js
|
| +++ b/test/mjsunit/harmony/block-let-declaration.js
|
| @@ -25,34 +25,43 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -// Flags: --allow-natives-syntax --harmony-block-scoping
|
| -// Test functionality of block scopes.
|
| -
|
| -// Hoisting of var declarations.
|
| -function f1() {
|
| - {
|
| - var x = 1;
|
| - var y;
|
| - }
|
| - assertEquals(1, x)
|
| - assertEquals(undefined, y)
|
| +// Flags: --harmony-block-scoping
|
| +
|
| +// Test let declarations in various settings.
|
| +
|
| +// Global
|
| +let x;
|
| +let y = 2;
|
| +
|
| +// Block local
|
| +{
|
| + let y;
|
| + let x = 3;
|
| +}
|
| +
|
| +assertEquals(undefined, x);
|
| +assertEquals(2,y);
|
| +
|
| +if (true) {
|
| + let y;
|
| + assertEquals(undefined, y);
|
| }
|
| -f1();
|
| -
|
| -// Dynamic lookup through block scopes.
|
| -function f2(one) {
|
| - var x = one + 1;
|
| - // TODO(keuchel): introduce let
|
| - // let y = one + 2;
|
| - if (one == 1) {
|
| - // Parameter
|
| - assertEquals(1, eval('one'));
|
| - // Function local var variable
|
| - assertEquals(2, eval('x'));
|
| - // Function local let variable
|
| - // TODO(keuchel): introduce let
|
| - // assertEquals(3, eval('y'));
|
| - }
|
| +
|
| +function TestLocalThrows(str, expect) {
|
| + assertThrows("(function(){" + str + "})()", expect);
|
| }
|
| -f2(1);
|
|
|
| +function TestLocalDoesNotThrow(str) {
|
| + assertDoesNotThrow("(function(){" + str + "})()");
|
| +}
|
| +
|
| +// Unprotected statement
|
| +TestLocalThrows("if (true) let x;", SyntaxError);
|
| +TestLocalThrows("with ({}) let x;", SyntaxError);
|
| +TestLocalThrows("do let x; while (false)", SyntaxError);
|
| +TestLocalThrows("while (false) let x;", SyntaxError);
|
| +
|
| +TestLocalDoesNotThrow("if (true) var x;");
|
| +TestLocalDoesNotThrow("with ({}) var x;");
|
| +TestLocalDoesNotThrow("do var x; while (false)");
|
| +TestLocalDoesNotThrow("while (false) var x;");
|
|
|