Home | History | Annotate | Download | only in harmony
      1 // Copyright 2016 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 // Flags: --harmony-restrictive-generators
      6 
      7 // Generators don't get sloppy-mode block-scoped function hoisting
      8 
      9 // No hoisting to the global scope
     10 
     11 {
     12   function* foo() {}
     13   assertEquals('function', typeof foo);
     14 }
     15 assertEquals('undefined', typeof foo);
     16 
     17 // No hoisting within a function scope
     18 (function() {
     19   { function* bar() {} }
     20   assertEquals('undefined', typeof bar);
     21 })();
     22 
     23 // Lexical shadowing allowed, no hoisting
     24 (function() {
     25   function* x() { yield 1; }
     26   { function* x() { yield 2 } }
     27   assertEquals(1, x().next().value);
     28 })();
     29