1/* 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 17function force(thunk:() => number) { 18 return thunk(); 19} 20 21function testConst(): void { 22 const c1 = 1; 23 const f1 = () => { 24 const c2 = c1; 25 return force(() => { 26 const c3 = c2; 27 return force(() => { 28 const c4 = c3; 29 return c1 + c2 + c3 + c4; 30 }); 31 }); 32 }; 33 assert 4 == force(f1); 34} 35 36function testConstShadow(): void { 37 const a = 1; 38 assert 3 == force(() => { 39 const a = 2; 40 return force(() => { 41 const a = 3; 42 return force(() => a); 43 }) 44 }); 45} 46 47function main(): void { 48 testConst(); 49 testConstShadow(); 50} 51