tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

methods-gen-yield-as-expression-with-rhs.js (3090B)


      1 // Copyright (C) 2013 the V8 project authors. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 description: >
      6    `yield` is a valid expression within generator function bodies.
      7 features: [generators]
      8 es6id: 14.4
      9 ---*/
     10 
     11 var iter, result;
     12 class A {
     13  *g1() { (yield 1) }
     14  *g2() { [yield 1] }
     15  *g3() { {yield 1} }
     16  *g4() { yield 1, yield 2; }
     17  *g5() { (yield 1) ? yield 2 : yield 3; }
     18 }
     19 
     20 iter = A.prototype.g1();
     21 result = iter.next();
     22 assert.sameValue(result.value, 1, 'Within grouping operator: result `value`');
     23 assert.sameValue(
     24  result.done, false, 'Within grouping operator: result `done` flag'
     25 );
     26 result = iter.next();
     27 assert.sameValue(
     28  result.value, undefined, 'Following grouping operator: result `value`'
     29 );
     30 assert.sameValue(
     31  result.done, true, 'Following grouping operator: result `done` flag'
     32 );
     33 
     34 iter = A.prototype.g2();
     35 result = iter.next();
     36 assert.sameValue(result.value, 1, 'Within array literal: result `value`');
     37 assert.sameValue(
     38  result.done, false, 'Within array literal: result `done` flag'
     39 );
     40 result = iter.next();
     41 assert.sameValue(
     42  result.value, undefined, 'Following array literal: result `value`'
     43 );
     44 assert.sameValue(
     45  result.done, true, 'Following array literal: result `done` flag'
     46 );
     47 
     48 iter = A.prototype.g3();
     49 result = iter.next();
     50 assert.sameValue(result.value, 1, 'Within object literal: result `value`');
     51 assert.sameValue(
     52  result.done, false, 'Within object literal: result `done` flag'
     53 );
     54 result = iter.next();
     55 assert.sameValue(
     56  result.value, undefined, 'Following object literal: result `value`'
     57 );
     58 assert.sameValue(
     59  result.done, true, 'Following object literal: result `done` flag'
     60 );
     61 
     62 iter = A.prototype.g4();
     63 result = iter.next();
     64 assert.sameValue(
     65  result.value, 1, 'First expression in comma expression: result `value`'
     66 );
     67 assert.sameValue(
     68  result.done,
     69  false,
     70  'First expression in comma expression: result `done` flag'
     71 );
     72 result = iter.next();
     73 assert.sameValue(
     74  result.value, 2, 'Second expression in comma expression: result `value`'
     75 );
     76 assert.sameValue(
     77  result.done,
     78  false,
     79  'Second expression in comma expression: result `done` flag'
     80 );
     81 result = iter.next();
     82 assert.sameValue(
     83  result.value, undefined, 'Following comma expression: result `value`'
     84 );
     85 assert.sameValue(
     86  result.done, true, 'Following comma expression: result `done` flag'
     87 );
     88 
     89 iter = A.prototype.g5();
     90 result = iter.next();
     91 assert.sameValue(
     92  result.value,
     93  1,
     94  'Conditional expression in conditional operator: result `value`'
     95 );
     96 assert.sameValue(
     97  result.done,
     98  false,
     99  'Conditional expression in conditional operator: result `done` flag'
    100 );
    101 result = iter.next();
    102 assert.sameValue(
    103  result.value,
    104  3,
    105  'Branch in conditional operator: result `value`'
    106 );
    107 assert.sameValue(
    108  result.done,
    109  false,
    110  'Branch in conditional operator: result `done` flag'
    111 );
    112 result = iter.next();
    113 assert.sameValue(
    114  result.value, undefined, 'Following conditional operator: result `value`'
    115 );
    116 assert.sameValue(
    117  result.done, true, 'Following conditional operator: result `done` flag'
    118 );
    119 
    120 reportCompare(0, 0);