1/* 2 * Copyright (c) 2024-2025 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 16declare class CIterator implements Iterator<string> { 17 18 public ind_: int; 19 public base_: C; 20 21 constructor (base: C) 22 23 override next(): IteratorResult<string> 24} 25 26declare class C { 27 protected y: string[]; 28 29 [Symbol.iterator](): CIterator 30} 31 32function main(): void { 33 34 let c = new C(); 35 let i: int = 0; 36 37 for (let it of c) { 38 it += ": in for"; 39 40 if (i == 0) { 41 assertEQ(it, "one, in for"); 42 } else if (i == 1) { 43 assertEQ(it, "two, in for"); 44 } else if (i == 2) { 45 assertEQ(it, "three, in for"); 46 } else { 47 assertTrue(false); 48 } 49 50 ++i; 51 } 52}