• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2* Copyright (c) Microsoft Corporation. All rights reserved.
3* Copyright (c) 2023 Huawei Device Co., Ltd.
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7*
8*     http://www.apache.org/licenses/LICENSE-2.0
9*
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15*
16* This file has been modified by Huawei to verify type inference by adding verification statements.
17*/
18
19// === tests/cases/compiler/dottedSymbolResolution1.ts ===
20declare function AssertType(value:any, type:string):void;
21interface JQuery {
22    find(selector: string): JQuery;
23}
24
25interface JQueryStatic {
26
27    (selector: string): JQuery;
28    (object: JQuery): JQuery;
29}
30
31class Base { foo() { } }
32
33function each(collection: string, callback: (indexInArray: any, valueOfElement: any) => any): any;
34function each(collection: JQuery, callback: (indexInArray: number, valueOfElement: Base) => any): any;
35function each(collection: any, callback: (indexInArray: any, valueOfElement: any) => any): any {
36AssertType(null, "null");
37    return null;
38}
39
40function _setBarAndText(): void {
41    let x: JQuery, $: JQueryStatic
42AssertType(x, "JQuery");
43AssertType($, "JQueryStatic");
44
45    each(x.find(" "), function () {
46AssertType(each(x.find(" "), function () {        let $this: JQuery = $(''),            thisBar = $this.find(".fx-usagebars-calloutbar-this"); // bug lead to 'could not find dotted symbol' here    } ), "any");
47AssertType(each, "{ (string, (any, any) => any): any; (JQuery, (number, Base) => any): any; }");
48AssertType(x.find(" "), "JQuery");
49AssertType(x.find, "(string) => JQuery");
50AssertType(" ", "string");
51AssertType(function () {        let $this: JQuery = $(''),            thisBar = $this.find(".fx-usagebars-calloutbar-this"); // bug lead to 'could not find dotted symbol' here    }, "() => void");
52
53        let $this: JQuery = $(''),
54AssertType($this, "JQuery");
55AssertType($(''), "JQuery");
56AssertType($, "JQueryStatic");
57AssertType('', "string");
58
59            thisBar = $this.find(".fx-usagebars-calloutbar-this"); // bug lead to 'could not find dotted symbol' here
60AssertType(thisBar, "JQuery");
61AssertType($this.find(".fx-usagebars-calloutbar-this"), "JQuery");
62AssertType($this.find, "(string) => JQuery");
63AssertType(".fx-usagebars-calloutbar-this", "string");
64
65    } );
66}
67
68