1/*
2 * Copyright (c) 2023 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
16class F {
17  #f = 1;
18  static #staticField = 2;
19  #m() { }
20  static #staticM() { }
21
22  goodRhs(v: any) {
23    const a = #f in v;
24
25    const b = #f in v.p1.p2;
26
27    const c = #f in (v as {});
28
29    const d = #f in (v as F);
30
31    const e = #f in (v as never);
32
33    for (let f in #f in v as any) { /**/ } // unlikely but valid
34  }
35  whitespace(v: any) {
36    const a = v && /*0*/#f/*1*/
37      /*2*/ in/*3*/
38          /*4*/v/*5*/
39  }
40}
41
42class FooSub extends F { subTypeOfFoo = true }
43class Bar { notFoo = true }
44