|  | // Copyright 2018 the V8 project authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | // Flags: --compiler-dispatcher --parallel-compile-tasks --use-external-strings | 
|  |  | 
|  | (function(a) { | 
|  | assertEquals(a, "IIFE"); | 
|  | })("IIFE"); | 
|  |  | 
|  | (function(a, ...rest) { | 
|  | assertEquals(a, 1); | 
|  | assertEquals(rest.length, 2); | 
|  | assertEquals(rest[0], 2); | 
|  | assertEquals(rest[1], 3); | 
|  | })(1,2,3); | 
|  |  | 
|  | var outer_var = 42; | 
|  |  | 
|  | function lazy_outer() { | 
|  | return 42; | 
|  | } | 
|  |  | 
|  | var eager_outer = (function() { return 42; }); | 
|  |  | 
|  | (function() { | 
|  | assertEquals(outer_var, 42); | 
|  | assertEquals(lazy_outer(), 42); | 
|  | assertEquals(eager_outer(), 42); | 
|  | })(); | 
|  |  | 
|  | var gen = (function*() { | 
|  | yield 1; | 
|  | yield 2; | 
|  | })(); | 
|  |  | 
|  | assertEquals(gen.next().value, 1); | 
|  | assertEquals(gen.next().value, 2); | 
|  |  | 
|  | var result = (function recursive(a=0) { | 
|  | if (a == 1) { | 
|  | return 42; | 
|  | } | 
|  | return recursive(1); | 
|  | })(); | 
|  |  | 
|  | assertEquals(result, 42); | 
|  |  | 
|  | var a = 42; | 
|  | var b; | 
|  | var c = (a, b = (function z(){ return a+1; })()); | 
|  | assertEquals(b, 43); | 
|  | assertEquals(c, 43); | 
|  | var c = (a, b = (function z(){ return a+1; })()) => { return b; }; | 
|  | assertEquals(c(314), 315); | 
|  |  | 
|  | // http://crbug.com/898076 | 
|  | (function() { | 
|  | class foo {}; | 
|  | });  // Don't call IIFE so that it is compiled during idle time | 
|  |  | 
|  | // http://crbug.com/900535 | 
|  | (function() { | 
|  | "use asm"; | 
|  | function bar(i, j) { | 
|  | i = i|0; | 
|  | j = j|0; | 
|  | } | 
|  | return {bar: bar}; | 
|  | });  // Don't call IIFE so that it is compiled during idle time |