• 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/conformance/internalModules/codeGeneration/importStatements.ts ===
20declare function AssertType(value:any, type:string):void;
21module A {
22    export class Point {
23        constructor(public x: number, public y: number) { }
24    }
25
26    export let Origin = new Point(0, 0);
27}
28
29// no code gen expected
30module B {
31    import a = A; //Error generates 'let <Alias> = <EntityName>;'
32}
33
34// no code gen expected
35module C {
36    import a = A; //Error generates 'let <Alias> = <EntityName>;'
37    let m: typeof a;
38    let p: a.Point;
39    let p = {x:0, y:0 };
40}
41
42// code gen expected
43module D {
44    import a = A;
45
46    let p = new a.Point(1, 1);
47}
48
49module E {
50    import a = A;
51    export function xDist(x: a.Point) {
52AssertType((a.Origin.x - x.x), "number");
53AssertType(a.Origin.x - x.x, "number");
54AssertType(a.Origin.x, "number");
55AssertType(a.Origin, "a.Point");
56AssertType(x.x, "number");
57        return (a.Origin.x - x.x);
58    }
59}
60
61