| // 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 |