1425bb815Sopenharmony_ci// Copyright JS Foundation and other contributors, http://js.foundation
2425bb815Sopenharmony_ci//
3425bb815Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License");
4425bb815Sopenharmony_ci// you may not use this file except in compliance with the License.
5425bb815Sopenharmony_ci// You may obtain a copy of the License at
6425bb815Sopenharmony_ci//
7425bb815Sopenharmony_ci//     http://www.apache.org/licenses/LICENSE-2.0
8425bb815Sopenharmony_ci//
9425bb815Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software
10425bb815Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS
11425bb815Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12425bb815Sopenharmony_ci// See the License for the specific language governing permissions and
13425bb815Sopenharmony_ci// limitations under the License.
14425bb815Sopenharmony_ci
15425bb815Sopenharmony_civar d = 1
16425bb815Sopenharmony_cifunction f(a = function () { return d })
17425bb815Sopenharmony_ci{
18425bb815Sopenharmony_ci  var d = 2
19425bb815Sopenharmony_ci  assert(d === 2)
20425bb815Sopenharmony_ci  assert(a() === 1)
21425bb815Sopenharmony_ci}
22425bb815Sopenharmony_cif()
23425bb815Sopenharmony_ci
24425bb815Sopenharmony_civar g = (a = () => d) => {
25425bb815Sopenharmony_ci  var d = 2
26425bb815Sopenharmony_ci  assert(d === 2)
27425bb815Sopenharmony_ci  assert(a() === 1)
28425bb815Sopenharmony_ci}
29425bb815Sopenharmony_cig()
30425bb815Sopenharmony_ci
31425bb815Sopenharmony_civar h = ([{a}] = [{a: function () { return d }}]) => {
32425bb815Sopenharmony_ci  var d = 2
33425bb815Sopenharmony_ci  assert(d === 2)
34425bb815Sopenharmony_ci  assert(a() === 1)
35425bb815Sopenharmony_ci}
36425bb815Sopenharmony_cih()
37425bb815Sopenharmony_ci
38425bb815Sopenharmony_cifunction i(a = ((eval))("(function () { return d })"))
39425bb815Sopenharmony_ci{
40425bb815Sopenharmony_ci  var d = 2
41425bb815Sopenharmony_ci  assert(d === 2)
42425bb815Sopenharmony_ci  assert(a() === 1)
43425bb815Sopenharmony_ci}
44425bb815Sopenharmony_cii()
45425bb815Sopenharmony_ci
46425bb815Sopenharmony_cifunction j(a = (([1, ((() => d))])[1]))
47425bb815Sopenharmony_ci{
48425bb815Sopenharmony_ci  var d = 2
49425bb815Sopenharmony_ci  assert(d === 2)
50425bb815Sopenharmony_ci  assert(a() === 1)
51425bb815Sopenharmony_ci}
52425bb815Sopenharmony_cij()
53425bb815Sopenharmony_ci
54425bb815Sopenharmony_civar m = 0
55425bb815Sopenharmony_cifunction l(a)
56425bb815Sopenharmony_ci{
57425bb815Sopenharmony_ci  m = a
58425bb815Sopenharmony_ci  return m
59425bb815Sopenharmony_ci}
60425bb815Sopenharmony_ci
61425bb815Sopenharmony_cifunction k(a = l(() => d))
62425bb815Sopenharmony_ci{
63425bb815Sopenharmony_ci  var d = 2
64425bb815Sopenharmony_ci  assert(d === 2)
65425bb815Sopenharmony_ci  assert(a() === 1)
66425bb815Sopenharmony_ci  assert(m() === 1)
67425bb815Sopenharmony_ci}
68425bb815Sopenharmony_cik()
69