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