| // Copyright 2019 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. | 
 |  | 
 | (function TestSloppynessPropagates() { | 
 |   let f = (function() { | 
 |     function Module() { | 
 |       "use asm"; | 
 |       function f() {} | 
 |       return {f: f} | 
 |     } | 
 |     return Module; | 
 |   })()().f; | 
 |   let p = Object.getOwnPropertyNames(f); | 
 |   assertArrayEquals(["length", "name", "arguments", "caller", "prototype"], p); | 
 |   assertEquals(null, f.arguments); | 
 |   assertEquals(null, f.caller); | 
 | })(); | 
 |  | 
 | (function TestStrictnessPropagates() { | 
 |   let f = (function() { | 
 |     "use strict"; | 
 |     function Module() { | 
 |       "use asm"; | 
 |       function f() {} | 
 |       return {f: f} | 
 |     } | 
 |     return Module; | 
 |   })()().f; | 
 |   let p = Object.getOwnPropertyNames(f); | 
 |   assertArrayEquals(["length", "name", "prototype"], p); | 
 |   assertThrows(() => f.arguments, TypeError); | 
 |   assertThrows(() => f.caller, TypeError); | 
 | })(); |