arkanalyzer 1.0.17 → 1.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/core/base/Decorator.d.ts +1 -0
- package/lib/core/base/Decorator.d.ts.map +1 -1
- package/lib/core/base/Decorator.js +4 -1
- package/lib/core/base/Type.d.ts +45 -3
- package/lib/core/base/Type.d.ts.map +1 -1
- package/lib/core/base/Type.js +84 -4
- package/lib/core/common/ArkIRTransformer.d.ts +1 -0
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +42 -23
- package/lib/core/common/ArkValueTransformer.d.ts +1 -0
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +45 -10
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +6 -0
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +5 -1
- package/lib/core/common/TypeInference.d.ts +1 -0
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +27 -8
- package/lib/core/{common → graph/builder}/CfgBuilder.d.ts +34 -46
- package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/CfgBuilder.js +1139 -0
- package/lib/core/graph/builder/ConditionBuilder.d.ts +16 -0
- package/lib/core/graph/builder/ConditionBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/ConditionBuilder.js +252 -0
- package/lib/core/graph/builder/LoopBuilder.d.ts +21 -0
- package/lib/core/graph/builder/LoopBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/LoopBuilder.js +251 -0
- package/lib/core/graph/builder/SwitchBuilder.d.ts +12 -0
- package/lib/core/graph/builder/SwitchBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/SwitchBuilder.js +152 -0
- package/lib/core/graph/builder/TrapBuilder.d.ts +17 -0
- package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/TrapBuilder.js +272 -0
- package/lib/core/model/ArkMethod.d.ts +1 -1
- package/lib/core/model/ArkMethod.js +1 -1
- package/lib/core/model/ArkSignature.d.ts +9 -1
- package/lib/core/model/ArkSignature.d.ts.map +1 -1
- package/lib/core/model/ArkSignature.js +17 -1
- package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkClassBuilder.js +2 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +1 -1
- package/lib/core/{common → model/builder}/BodyBuilder.d.ts +5 -5
- package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -0
- package/lib/core/{common → model/builder}/BodyBuilder.js +12 -12
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +31 -5
- package/lib/save/JsonPrinter.d.ts +1 -1
- package/lib/save/JsonPrinter.d.ts.map +1 -1
- package/lib/save/JsonPrinter.js +2 -2
- package/lib/save/PrinterBuilder.d.ts +22 -0
- package/lib/save/PrinterBuilder.d.ts.map +1 -1
- package/lib/save/PrinterBuilder.js +54 -1
- package/lib/save/arkir/ArkIRClassPrinter.d.ts +14 -0
- package/lib/save/arkir/ArkIRClassPrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRClassPrinter.js +92 -0
- package/lib/save/arkir/ArkIRFieldPrinter.d.ts +12 -0
- package/lib/save/arkir/ArkIRFieldPrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRFieldPrinter.js +64 -0
- package/lib/save/arkir/ArkIRFilePrinter.d.ts +13 -0
- package/lib/save/arkir/ArkIRFilePrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRFilePrinter.js +54 -0
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts +17 -0
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRMethodPrinter.js +159 -0
- package/lib/save/arkir/ArkIRNamespacePrinter.d.ts +12 -0
- package/lib/save/arkir/ArkIRNamespacePrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRNamespacePrinter.js +66 -0
- package/lib/save/base/BasePrinter.d.ts +24 -0
- package/lib/save/base/BasePrinter.d.ts.map +1 -0
- package/lib/save/base/BasePrinter.js +70 -0
- package/lib/save/base/ExportPrinter.d.ts +9 -0
- package/lib/save/base/ExportPrinter.d.ts.map +1 -0
- package/lib/save/base/ExportPrinter.js +67 -0
- package/lib/save/base/ImportPrinter.d.ts +10 -0
- package/lib/save/base/ImportPrinter.d.ts.map +1 -0
- package/lib/save/base/ImportPrinter.js +92 -0
- package/lib/save/{source/SourceUtils.d.ts → base/PrinterUtils.d.ts} +2 -2
- package/lib/save/{source/SourceUtils.d.ts.map → base/PrinterUtils.d.ts.map} +1 -1
- package/lib/save/{source/SourceUtils.js → base/PrinterUtils.js} +10 -10
- package/lib/save/source/SourceBase.d.ts +2 -11
- package/lib/save/source/SourceBase.d.ts.map +1 -1
- package/lib/save/source/SourceBase.js +3 -25
- package/lib/save/source/SourceBody.js +3 -3
- package/lib/save/source/SourceClass.d.ts +2 -1
- package/lib/save/source/SourceClass.d.ts.map +1 -1
- package/lib/save/source/SourceClass.js +18 -17
- package/lib/save/source/SourceFilePrinter.d.ts +1 -1
- package/lib/save/source/SourceFilePrinter.d.ts.map +1 -1
- package/lib/save/source/SourceFilePrinter.js +9 -10
- package/lib/save/source/SourceMethod.d.ts +1 -1
- package/lib/save/source/SourceMethod.d.ts.map +1 -1
- package/lib/save/source/SourceMethod.js +37 -22
- package/lib/save/source/SourceNamespace.d.ts.map +1 -1
- package/lib/save/source/SourceNamespace.js +6 -6
- package/lib/save/source/SourceStmt.d.ts +1 -1
- package/lib/save/source/SourceStmt.d.ts.map +1 -1
- package/lib/save/source/SourceStmt.js +29 -42
- package/lib/save/source/SourceTransformer.d.ts +3 -1
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +65 -29
- package/package.json +1 -1
- package/lib/core/common/BodyBuilder.d.ts.map +0 -1
- package/lib/core/common/CfgBuilder.d.ts.map +0 -1
- package/lib/core/common/CfgBuilder.js +0 -1886
- package/lib/save/source/SourceModule.d.ts +0 -16
- package/lib/save/source/SourceModule.d.ts.map +0 -1
- package/lib/save/source/SourceModule.js +0 -125
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Decorator.d.ts","sourceRoot":"","sources":["../../../src/core/base/Decorator.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,qBAAa,SAAS;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAM;IACrB,KAAK,EAAE,MAAM,CAAM;gBACP,IAAI,EAAE,MAAM;IAGjB,OAAO,IAAI,MAAM;IAGjB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAGjC,UAAU,IAAI,MAAM;IAGpB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAG7B,QAAQ,IAAI,MAAM;CAG5B"}
|
|
1
|
+
{"version":3,"file":"Decorator.d.ts","sourceRoot":"","sources":["../../../src/core/base/Decorator.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,qBAAa,SAAS;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAM;IACrB,KAAK,EAAE,MAAM,CAAM;gBACP,IAAI,EAAE,MAAM;IAGjB,OAAO,IAAI,MAAM;IAGjB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAGjC,UAAU,IAAI,MAAM;IAGpB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAG7B,QAAQ,IAAI,MAAM;IAGlB,QAAQ,IAAI,MAAM;CAG5B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -39,5 +39,8 @@ class Decorator {
|
|
|
39
39
|
getParam() {
|
|
40
40
|
return this.param;
|
|
41
41
|
}
|
|
42
|
+
toString() {
|
|
43
|
+
return `@${this.content}`;
|
|
44
|
+
}
|
|
42
45
|
}
|
|
43
46
|
exports.Decorator = Decorator;
|
package/lib/core/base/Type.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AliasTypeSignature, ClassSignature, MethodSignature, NamespaceSignature } from '../model/ArkSignature';
|
|
2
2
|
import { ArkExport, ExportType } from '../model/ArkExport';
|
|
3
3
|
import { ModifierType } from '../model/ArkBaseModel';
|
|
4
4
|
import { Local } from './Local';
|
|
@@ -110,6 +110,16 @@ export declare class UnionType extends Type {
|
|
|
110
110
|
getTypeString(): string;
|
|
111
111
|
flatType(): Type[];
|
|
112
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* intersection type
|
|
115
|
+
* @category core/base/type
|
|
116
|
+
*/
|
|
117
|
+
export declare class IntersectionType extends Type {
|
|
118
|
+
private types;
|
|
119
|
+
constructor(types: Type[]);
|
|
120
|
+
getTypes(): Type[];
|
|
121
|
+
getTypeString(): string;
|
|
122
|
+
}
|
|
113
123
|
/**
|
|
114
124
|
* types for function void return type
|
|
115
125
|
* @category core/base/type
|
|
@@ -162,9 +172,23 @@ export declare class ClassType extends Type {
|
|
|
162
172
|
setRealGenericTypes(types: Type[] | undefined): void;
|
|
163
173
|
getTypeString(): string;
|
|
164
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Array type
|
|
177
|
+
* @category core/base/type
|
|
178
|
+
* @extends Type
|
|
179
|
+
* @example
|
|
180
|
+
```typescript
|
|
181
|
+
// baseType is number, dimension is 1, readonlyFlag is true
|
|
182
|
+
let a: readonly number[] = [1, 2, 3];
|
|
183
|
+
|
|
184
|
+
// baseType is number, dimension is 1, readonlyFlag is undefined
|
|
185
|
+
let a: number[] = [1, 2, 3];
|
|
186
|
+
```
|
|
187
|
+
*/
|
|
165
188
|
export declare class ArrayType extends Type {
|
|
166
189
|
private baseType;
|
|
167
190
|
private dimension;
|
|
191
|
+
private readonlyFlag?;
|
|
168
192
|
constructor(baseType: Type, dimension: number);
|
|
169
193
|
/**
|
|
170
194
|
* Returns the base type of this array, such as `Any`, `Unknown`, `TypeParameter`, etc.
|
|
@@ -173,12 +197,30 @@ export declare class ArrayType extends Type {
|
|
|
173
197
|
getBaseType(): Type;
|
|
174
198
|
setBaseType(newType: Type): void;
|
|
175
199
|
getDimension(): number;
|
|
200
|
+
setReadonlyFlag(readonlyFlag: boolean): void;
|
|
201
|
+
getReadonlyFlag(): boolean | undefined;
|
|
176
202
|
getTypeString(): string;
|
|
177
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Tuple type
|
|
206
|
+
* @category core/base/type
|
|
207
|
+
* @extends Type
|
|
208
|
+
* @example
|
|
209
|
+
```typescript
|
|
210
|
+
// types are number and string, dimension is 1, readonlyFlag is true
|
|
211
|
+
let a: readonly number[] = [1, 2, 3];
|
|
212
|
+
|
|
213
|
+
// baseType is number, dimension is 1, readonlyFlag is undefined
|
|
214
|
+
let a: number[] = [1, 2, 3];
|
|
215
|
+
```
|
|
216
|
+
*/
|
|
178
217
|
export declare class TupleType extends Type {
|
|
179
218
|
private types;
|
|
219
|
+
private readonlyFlag?;
|
|
180
220
|
constructor(types: Type[]);
|
|
181
221
|
getTypes(): Type[];
|
|
222
|
+
setReadonlyFlag(readonlyFlag: boolean): void;
|
|
223
|
+
getReadonlyFlag(): boolean | undefined;
|
|
182
224
|
getTypeString(): string;
|
|
183
225
|
}
|
|
184
226
|
/**
|
|
@@ -206,7 +248,7 @@ export declare class AliasType extends Type implements ArkExport {
|
|
|
206
248
|
protected modifiers?: number;
|
|
207
249
|
private genericTypes?;
|
|
208
250
|
private realGenericTypes?;
|
|
209
|
-
constructor(name: string, originalType: Type, signature:
|
|
251
|
+
constructor(name: string, originalType: Type, signature: AliasTypeSignature, genericTypes?: GenericType[]);
|
|
210
252
|
getName(): string;
|
|
211
253
|
setOriginalType(type: Type): void;
|
|
212
254
|
getOriginalType(): Type;
|
|
@@ -217,7 +259,7 @@ export declare class AliasType extends Type implements ArkExport {
|
|
|
217
259
|
setModifiers(modifiers: number): void;
|
|
218
260
|
addModifier(modifier: ModifierType | number): void;
|
|
219
261
|
removeModifier(modifier: ModifierType): void;
|
|
220
|
-
getSignature():
|
|
262
|
+
getSignature(): AliasTypeSignature;
|
|
221
263
|
setGenericTypes(genericTypes: GenericType[]): void;
|
|
222
264
|
getGenericTypes(): GenericType[] | undefined;
|
|
223
265
|
setRealGenericTypes(realGenericTypes: Type[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Type.d.ts","sourceRoot":"","sources":["../../../src/core/base/Type.ts"],"names":[],"mappings":"AAeA,OAAO,
|
|
1
|
+
{"version":3,"file":"Type.d.ts","sourceRoot":"","sources":["../../../src/core/base/Type.ts"],"names":[],"mappings":"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"}
|
package/lib/core/base/Type.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.LexicalEnvType = exports.AnnotationTypeQueryType = exports.AnnotationNamespaceType = exports.AnnotationType = exports.GenericType = exports.AliasType = exports.TupleType = exports.ArrayType = exports.ClassType = exports.ClosureType = exports.FunctionType = exports.NeverType = exports.VoidType = exports.UnionType = exports.LiteralType = exports.UndefinedType = exports.NullType = exports.StringType = exports.NumberType = exports.BooleanType = exports.PrimitiveType = exports.UnclearReferenceType = exports.UnknownType = exports.AnyType = exports.Type = void 0;
|
|
17
|
+
exports.LexicalEnvType = exports.AnnotationTypeQueryType = exports.AnnotationNamespaceType = exports.AnnotationType = exports.GenericType = exports.AliasType = exports.TupleType = exports.ArrayType = exports.ClassType = exports.ClosureType = exports.FunctionType = exports.NeverType = exports.VoidType = exports.IntersectionType = exports.UnionType = exports.LiteralType = exports.UndefinedType = exports.NullType = exports.StringType = exports.NumberType = exports.BooleanType = exports.PrimitiveType = exports.UnclearReferenceType = exports.UnknownType = exports.AnyType = exports.Type = void 0;
|
|
18
18
|
const ArkSignature_1 = require("../model/ArkSignature");
|
|
19
19
|
const ArkExport_1 = require("../model/ArkExport");
|
|
20
20
|
const ArkBaseModel_1 = require("../model/ArkBaseModel");
|
|
@@ -201,8 +201,18 @@ class UnionType extends Type {
|
|
|
201
201
|
this.currType = newType;
|
|
202
202
|
}
|
|
203
203
|
getTypeString() {
|
|
204
|
-
|
|
204
|
+
let typesString = [];
|
|
205
|
+
this.getTypes().forEach((t) => {
|
|
206
|
+
if (t instanceof UnionType || t instanceof IntersectionType) {
|
|
207
|
+
typesString.push(`(${t.toString()})`);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
typesString.push(t.toString());
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
return typesString.join('|');
|
|
205
214
|
}
|
|
215
|
+
// TODO: Need to remove this function because of IntersectionType has been added.
|
|
206
216
|
flatType() {
|
|
207
217
|
const result = [];
|
|
208
218
|
this.types.forEach(t => {
|
|
@@ -217,6 +227,32 @@ class UnionType extends Type {
|
|
|
217
227
|
}
|
|
218
228
|
}
|
|
219
229
|
exports.UnionType = UnionType;
|
|
230
|
+
/**
|
|
231
|
+
* intersection type
|
|
232
|
+
* @category core/base/type
|
|
233
|
+
*/
|
|
234
|
+
class IntersectionType extends Type {
|
|
235
|
+
constructor(types) {
|
|
236
|
+
super();
|
|
237
|
+
this.types = [...types];
|
|
238
|
+
}
|
|
239
|
+
getTypes() {
|
|
240
|
+
return this.types;
|
|
241
|
+
}
|
|
242
|
+
getTypeString() {
|
|
243
|
+
let typesString = [];
|
|
244
|
+
this.getTypes().forEach((t) => {
|
|
245
|
+
if (t instanceof UnionType || t instanceof IntersectionType) {
|
|
246
|
+
typesString.push(`(${t.toString()})`);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
typesString.push(t.toString());
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
return typesString.join('&');
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
exports.IntersectionType = IntersectionType;
|
|
220
256
|
/**
|
|
221
257
|
* types for function void return type
|
|
222
258
|
* @category core/base/type
|
|
@@ -318,6 +354,19 @@ class ClassType extends Type {
|
|
|
318
354
|
}
|
|
319
355
|
}
|
|
320
356
|
exports.ClassType = ClassType;
|
|
357
|
+
/**
|
|
358
|
+
* Array type
|
|
359
|
+
* @category core/base/type
|
|
360
|
+
* @extends Type
|
|
361
|
+
* @example
|
|
362
|
+
```typescript
|
|
363
|
+
// baseType is number, dimension is 1, readonlyFlag is true
|
|
364
|
+
let a: readonly number[] = [1, 2, 3];
|
|
365
|
+
|
|
366
|
+
// baseType is number, dimension is 1, readonlyFlag is undefined
|
|
367
|
+
let a: number[] = [1, 2, 3];
|
|
368
|
+
```
|
|
369
|
+
*/
|
|
321
370
|
class ArrayType extends Type {
|
|
322
371
|
constructor(baseType, dimension) {
|
|
323
372
|
super();
|
|
@@ -337,9 +386,18 @@ class ArrayType extends Type {
|
|
|
337
386
|
getDimension() {
|
|
338
387
|
return this.dimension;
|
|
339
388
|
}
|
|
389
|
+
setReadonlyFlag(readonlyFlag) {
|
|
390
|
+
this.readonlyFlag = readonlyFlag;
|
|
391
|
+
}
|
|
392
|
+
getReadonlyFlag() {
|
|
393
|
+
return this.readonlyFlag;
|
|
394
|
+
}
|
|
340
395
|
getTypeString() {
|
|
341
396
|
const strs = [];
|
|
342
|
-
if (this.
|
|
397
|
+
if (this.getReadonlyFlag()) {
|
|
398
|
+
strs.push('readonly ');
|
|
399
|
+
}
|
|
400
|
+
if (this.baseType instanceof UnionType || this.baseType instanceof IntersectionType) {
|
|
343
401
|
strs.push('(' + this.baseType.toString() + ')');
|
|
344
402
|
}
|
|
345
403
|
else if (this.baseType) {
|
|
@@ -352,6 +410,19 @@ class ArrayType extends Type {
|
|
|
352
410
|
}
|
|
353
411
|
}
|
|
354
412
|
exports.ArrayType = ArrayType;
|
|
413
|
+
/**
|
|
414
|
+
* Tuple type
|
|
415
|
+
* @category core/base/type
|
|
416
|
+
* @extends Type
|
|
417
|
+
* @example
|
|
418
|
+
```typescript
|
|
419
|
+
// types are number and string, dimension is 1, readonlyFlag is true
|
|
420
|
+
let a: readonly number[] = [1, 2, 3];
|
|
421
|
+
|
|
422
|
+
// baseType is number, dimension is 1, readonlyFlag is undefined
|
|
423
|
+
let a: number[] = [1, 2, 3];
|
|
424
|
+
```
|
|
425
|
+
*/
|
|
355
426
|
class TupleType extends Type {
|
|
356
427
|
constructor(types) {
|
|
357
428
|
super();
|
|
@@ -360,7 +431,16 @@ class TupleType extends Type {
|
|
|
360
431
|
getTypes() {
|
|
361
432
|
return this.types;
|
|
362
433
|
}
|
|
434
|
+
setReadonlyFlag(readonlyFlag) {
|
|
435
|
+
this.readonlyFlag = readonlyFlag;
|
|
436
|
+
}
|
|
437
|
+
getReadonlyFlag() {
|
|
438
|
+
return this.readonlyFlag;
|
|
439
|
+
}
|
|
363
440
|
getTypeString() {
|
|
441
|
+
if (this.getReadonlyFlag()) {
|
|
442
|
+
return 'readonly [' + this.types.join(', ') + ']';
|
|
443
|
+
}
|
|
364
444
|
return '[' + this.types.join(', ') + ']';
|
|
365
445
|
}
|
|
366
446
|
}
|
|
@@ -43,6 +43,7 @@ export declare class ArkIRTransformer {
|
|
|
43
43
|
private addInvokeStmts;
|
|
44
44
|
private shouldGenerateExtraAssignStmt;
|
|
45
45
|
private typeAliasDeclarationToStmts;
|
|
46
|
+
private generateAliasTypeExpr;
|
|
46
47
|
private resolveImportTypeNode;
|
|
47
48
|
switchStatementToValueAndStmts(switchStatement: ts.SwitchStatement): ValueAndStmts[];
|
|
48
49
|
private forStatementToStmts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,EAOH,cAAc,EAGd,aAAa,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAA2E,SAAS,EAAE,MAAM,aAAa,CAAC;AACjH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EACH,sBAAsB,EAOtB,IAAI,EACP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAmE,MAAM,cAAc,CAAC;AAW1G,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU/C,OAAO,EAAE,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AASjE,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,sBAAsB,EAAE,YAAY,EAAE,CAAC;IACvC,KAAK,EAAE,IAAI,EAAE,CAAA;CAChB,CAAC;AAEF,qBAAa,SAAU,SAAQ,IAAI;gBACnB,IAAI,EAAE,MAAM;IAKjB,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,gBAAgB;IACzB,gBAAuB,2BAA2B,qBAAqB;IACvE,gBAAuB,0BAA0B,yBAAyB;IAC1E,gBAAuB,uCAAuC,SAA0D;IACxH,gBAAuB,wCAAwC,SAA2D;IAC1H,gBAAuB,mCAAmC,SAAuD;IAEjH,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,mBAAmB,CAAsB;gBAErC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS;IAO1D,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC;IAIvB,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAI3C,YAAY,IAAI,KAAK;IAIrB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAInE,aAAa,IAAI,IAAI,EAAE;IAgBvB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,EAAE;IA2CpC,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,aAAa;IAI1D,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,sBAAsB;IA0B9B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,0BAA0B;IAgBlC,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,6BAA6B;IAoBrC,OAAO,CAAC,2BAA2B;
|
|
1
|
+
{"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -254,17 +254,37 @@ class ArkIRTransformer {
|
|
|
254
254
|
return true;
|
|
255
255
|
}
|
|
256
256
|
typeAliasDeclarationToStmts(typeAliasDeclaration) {
|
|
257
|
-
var _a;
|
|
258
257
|
const aliasName = typeAliasDeclaration.name.text;
|
|
259
258
|
const rightOp = typeAliasDeclaration.type;
|
|
260
259
|
let rightType = this.arkValueTransformer.resolveTypeNode(rightOp);
|
|
261
|
-
const aliasType = new Type_1.AliasType(aliasName, rightType, new ArkSignature_1.
|
|
260
|
+
const aliasType = new Type_1.AliasType(aliasName, rightType, new ArkSignature_1.AliasTypeSignature(aliasName, this.declaringMethod.getSignature()));
|
|
262
261
|
if (typeAliasDeclaration.typeParameters) {
|
|
263
262
|
const genericTypes = (0, builderUtils_1.buildTypeParameters)(typeAliasDeclaration.typeParameters, this.sourceFile, this.declaringMethod);
|
|
264
263
|
aliasType.setGenericTypes(genericTypes);
|
|
265
264
|
aliasType.setOriginalType((0, builderUtils_1.buildGenericType)(rightType, aliasType));
|
|
266
265
|
rightType = aliasType.getOriginalType();
|
|
267
266
|
}
|
|
267
|
+
let expr = this.generateAliasTypeExpr(rightOp, aliasType);
|
|
268
|
+
if ((ts.isTypeQueryNode(rightOp) || ts.isTypeReferenceNode(rightOp)) && rightOp.typeArguments) {
|
|
269
|
+
let realGenericTypes = [];
|
|
270
|
+
rightOp.typeArguments.forEach(typeArgument => {
|
|
271
|
+
realGenericTypes.push(this.arkValueTransformer.resolveTypeNode(typeArgument));
|
|
272
|
+
});
|
|
273
|
+
expr.setRealGenericTypes(realGenericTypes);
|
|
274
|
+
}
|
|
275
|
+
const modifiers = typeAliasDeclaration.modifiers ? (0, builderUtils_1.buildModifiers)(typeAliasDeclaration) : 0;
|
|
276
|
+
aliasType.setModifiers(modifiers);
|
|
277
|
+
const aliasTypeDefineStmt = new Stmt_1.ArkAliasTypeDefineStmt(aliasType, expr);
|
|
278
|
+
const leftPosition = Position_1.FullPosition.buildFromNode(typeAliasDeclaration.name, this.sourceFile);
|
|
279
|
+
const rightPosition = Position_1.FullPosition.buildFromNode(rightOp, this.sourceFile);
|
|
280
|
+
const operandOriginalPositions = [leftPosition, rightPosition];
|
|
281
|
+
aliasTypeDefineStmt.setOperandOriginalPositions(operandOriginalPositions);
|
|
282
|
+
this.getAliasTypeMap().set(aliasName, [aliasType, aliasTypeDefineStmt]);
|
|
283
|
+
return [aliasTypeDefineStmt];
|
|
284
|
+
}
|
|
285
|
+
generateAliasTypeExpr(rightOp, aliasType) {
|
|
286
|
+
var _a;
|
|
287
|
+
let rightType = aliasType.getOriginalType();
|
|
268
288
|
let expr;
|
|
269
289
|
if (ts.isImportTypeNode(rightOp)) {
|
|
270
290
|
expr = this.resolveImportTypeNode(rightOp);
|
|
@@ -285,10 +305,18 @@ class ArkIRTransformer {
|
|
|
285
305
|
expr = new Expr_1.AliasTypeExpr(originalLocal, true);
|
|
286
306
|
}
|
|
287
307
|
}
|
|
288
|
-
else if (ts.isTypeReferenceNode(rightOp)
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
308
|
+
else if (ts.isTypeReferenceNode(rightOp)) {
|
|
309
|
+
// For type A = B<number> stmt and B is also an alias type with the same scope of A,
|
|
310
|
+
// rightType here is AliasType with real generic type number.
|
|
311
|
+
// The originalObject in expr should be the object without real generic type, so try to find it in this scope.
|
|
312
|
+
if (rightType instanceof Type_1.AliasType) {
|
|
313
|
+
const existAliasType = this.getAliasTypeMap().get(rightType.getName());
|
|
314
|
+
if (existAliasType) {
|
|
315
|
+
expr = new Expr_1.AliasTypeExpr(existAliasType[0], false);
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
expr = new Expr_1.AliasTypeExpr(rightType, false);
|
|
319
|
+
}
|
|
292
320
|
}
|
|
293
321
|
else {
|
|
294
322
|
expr = new Expr_1.AliasTypeExpr(rightType, false);
|
|
@@ -305,22 +333,7 @@ class ArkIRTransformer {
|
|
|
305
333
|
}
|
|
306
334
|
}
|
|
307
335
|
}
|
|
308
|
-
|
|
309
|
-
let realGenericTypes = [];
|
|
310
|
-
rightOp.typeArguments.forEach(typeArgument => {
|
|
311
|
-
realGenericTypes.push(this.arkValueTransformer.resolveTypeNode(typeArgument));
|
|
312
|
-
});
|
|
313
|
-
expr.setRealGenericTypes(realGenericTypes);
|
|
314
|
-
}
|
|
315
|
-
const modifiers = typeAliasDeclaration.modifiers ? (0, builderUtils_1.buildModifiers)(typeAliasDeclaration) : 0;
|
|
316
|
-
aliasType.setModifiers(modifiers);
|
|
317
|
-
const aliasTypeDefineStmt = new Stmt_1.ArkAliasTypeDefineStmt(aliasType, expr);
|
|
318
|
-
const leftPosition = Position_1.FullPosition.buildFromNode(typeAliasDeclaration.name, this.sourceFile);
|
|
319
|
-
const rightPosition = Position_1.FullPosition.buildFromNode(rightOp, this.sourceFile);
|
|
320
|
-
const operandOriginalPositions = [leftPosition, rightPosition];
|
|
321
|
-
aliasTypeDefineStmt.setOperandOriginalPositions(operandOriginalPositions);
|
|
322
|
-
this.getAliasTypeMap().set(aliasName, [aliasType, aliasTypeDefineStmt]);
|
|
323
|
-
return [aliasTypeDefineStmt];
|
|
336
|
+
return expr;
|
|
324
337
|
}
|
|
325
338
|
resolveImportTypeNode(importTypeNode) {
|
|
326
339
|
const importType = 'typeAliasDefine';
|
|
@@ -383,6 +396,12 @@ class ArkIRTransformer {
|
|
|
383
396
|
conditionStmts.forEach(stmt => stmts.push(stmt));
|
|
384
397
|
stmts.push(new Stmt_1.ArkIfStmt(conditionValue));
|
|
385
398
|
}
|
|
399
|
+
else {
|
|
400
|
+
// The omitted condition always evaluates to true.
|
|
401
|
+
const trueConstant = ValueUtil_1.ValueUtil.getBooleanConstant(true);
|
|
402
|
+
const conditionExpr = new Expr_1.ArkConditionExpr(trueConstant, trueConstant, Expr_1.RelationalBinaryOperator.Equality);
|
|
403
|
+
stmts.push(new Stmt_1.ArkIfStmt(conditionExpr));
|
|
404
|
+
}
|
|
386
405
|
if (forStatement.incrementor) {
|
|
387
406
|
this.tsNodeToValueAndStmts(forStatement.incrementor).stmts.forEach(stmt => stmts.push(stmt));
|
|
388
407
|
}
|
|
@@ -79,6 +79,7 @@ export declare class ArkValueTransformer {
|
|
|
79
79
|
private isLiteralNode;
|
|
80
80
|
resolveTypeNode(type: ts.TypeNode): Type;
|
|
81
81
|
private resolveTypeQueryNode;
|
|
82
|
+
private resolveTypeOperatorNode;
|
|
82
83
|
static resolveLiteralTypeNode(literalTypeNode: ts.LiteralTypeNode, sourceFile: ts.SourceFile): Type;
|
|
83
84
|
private resolveTemplateLiteralTypeNode;
|
|
84
85
|
private resolveTypeReferenceNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,sBAAsB,EAAiD,MAAM,cAAc,CAAC;AAuBrG,OAAO,EACH,SAAS,
|
|
1
|
+
{"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,sBAAsB,EAAiD,MAAM,cAAc,CAAC;AAuBrG,OAAO,EACH,SAAS,EAaT,IAAI,EAMP,MAAM,cAAc,CAAC;AAetB,OAAO,EAAyE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/G,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/C,OAAO,EAAE,gBAAgB,EAAa,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMhF,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAyB;IACzC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAA+D;IACnF,OAAO,CAAC,wBAAwB,CAAS;gBAE7B,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS;IAQ9F,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC;IAIvB,YAAY,IAAI,KAAK;IAIrB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAInE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,IAAgC,GAAG,KAAK;IAMlF,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAIlD,OAAO,CAAC,YAAY;IAOb,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,aAAa;IAkE1D,OAAO,CAAC,kCAAkC;IAY1C,OAAO,CAAC,6BAA6B;IAQrC,OAAO,CAAC,oCAAoC;IA2C5C,OAAO,CAAC,qCAAqC;IAsC7C,OAAO,CAAC,2BAA2B;IAmBnC,OAAO,CAAC,sBAAsB;IA+C9B,OAAO,CAAC,8BAA8B;IAatC,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,qCAAqC;IAY7C,OAAO,CAAC,8BAA8B;IAsBtC,OAAO,CAAC,iCAAiC;IAUzC,OAAO,CAAC,2BAA2B;IA+BnC,OAAO,CAAC,oBAAoB;IAwC5B,OAAO,CAAC,uCAAuC;IA+B/C,OAAO,CAAC,qBAAqB;IAsC7B,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,+BAA+B;IA0BvC,OAAO,CAAC,sCAAsC;IAoC9C,OAAO,CAAC,6BAA6B;IAMrC,OAAO,CAAC,2BAA2B;IAqDnC,OAAO,CAAC,8BAA8B;IAyBtC,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,2BAA2B;IAiBnC,OAAO,CAAC,4BAA4B;IA6CpC,OAAO,CAAC,iCAAiC;IAoCzC,OAAO,CAAC,qCAAqC;IAkC7C,OAAO,CAAC,yBAAyB;IA0BjC,OAAO,CAAC,oCAAoC;IAwC5C,OAAO,CAAC,qCAAqC;IAiC7C,OAAO,CAAC,8BAA8B;IAkBtC,OAAO,CAAC,8BAA8B;IActC,OAAO,CAAC,+BAA+B;IASvC,OAAO,CAAC,6BAA6B;IAQrC,OAAO,CAAC,gCAAgC;IAIxC,OAAO,CAAC,sCAAsC;IAI9C,OAAO,CAAC,+BAA+B;IAWvC,OAAO,CAAC,2BAA2B;IAenC,OAAO,CAAC,4BAA4B;IAW7B,sCAAsC,CAAC,uBAAuB,EAAE,EAAE,CAAC,uBAAuB,GAAG,aAAa;IAU1G,kCAAkC,CAAC,mBAAmB,EAAE,EAAE,CAAC,mBAAmB,EAC3C,OAAO,EAAE,OAAO,EAAE,WAAW,GAAE,OAAc,GAAG,aAAa;IAQvG,OAAO,CAAC,yBAAyB;IAgDjC,OAAO,CAAC,gCAAgC;IAsBxC,OAAO,CAAC,iCAAiC;IAwBzC,OAAO,CAAC,kCAAkC;IAsC1C,OAAO,CAAC,+BAA+B;IAqDvC,OAAO,CAAC,iCAAiC;IA4CzC,OAAO,CAAC,uCAAuC;IAsCxC,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,GAAG,aAAa;IA4BxE,OAAO,CAAC,0BAA0B;IA6ClC,OAAO,CAAC,gBAAgB;IAUjB,iBAAiB,CAAC,SAAS,GAAE,IAAgC,GAAG,KAAK;IAQ5E,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,aAAa;IAed,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,IAAI;IA6D/C,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,uBAAuB;WAoBjB,sBAAsB,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI;IAoB1G,OAAO,CAAC,8BAA8B;IA6CtC,OAAO,CAAC,wBAAwB;IA8BhC,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,uBAAuB;WAOjB,4BAA4B,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,GAAG,OAAO;CAoB/E"}
|
|
@@ -61,6 +61,7 @@ const Constant_1 = require("../base/Constant");
|
|
|
61
61
|
const Const_1 = require("./Const");
|
|
62
62
|
const ArkIRTransformer_1 = require("./ArkIRTransformer");
|
|
63
63
|
const logger_1 = __importStar(require("../../utils/logger"));
|
|
64
|
+
const TypeInference_1 = require("./TypeInference");
|
|
64
65
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkValueTransformer');
|
|
65
66
|
class ArkValueTransformer {
|
|
66
67
|
constructor(arkIRTransformer, sourceFile, declaringMethod) {
|
|
@@ -1266,6 +1267,11 @@ class ArkValueTransformer {
|
|
|
1266
1267
|
type.types.forEach(t => mayTypes.push(this.resolveTypeNode(t)));
|
|
1267
1268
|
return new Type_1.UnionType(mayTypes);
|
|
1268
1269
|
}
|
|
1270
|
+
case ts.SyntaxKind.IntersectionType: {
|
|
1271
|
+
const intersectionTypes = [];
|
|
1272
|
+
type.types.forEach(t => intersectionTypes.push(this.resolveTypeNode(t)));
|
|
1273
|
+
return new Type_1.IntersectionType(intersectionTypes);
|
|
1274
|
+
}
|
|
1269
1275
|
case ts.SyntaxKind.TupleType: {
|
|
1270
1276
|
const types = [];
|
|
1271
1277
|
type.elements.forEach(element => {
|
|
@@ -1287,6 +1293,10 @@ class ArkValueTransformer {
|
|
|
1287
1293
|
return Type_1.UnknownType.getInstance();
|
|
1288
1294
|
case ts.SyntaxKind.TypeQuery:
|
|
1289
1295
|
return this.resolveTypeQueryNode(type);
|
|
1296
|
+
case ts.SyntaxKind.ParenthesizedType:
|
|
1297
|
+
return this.resolveTypeNode(type.type);
|
|
1298
|
+
case ts.SyntaxKind.TypeOperator:
|
|
1299
|
+
return this.resolveTypeOperatorNode(type);
|
|
1290
1300
|
default:
|
|
1291
1301
|
return Type_1.UnknownType.getInstance();
|
|
1292
1302
|
}
|
|
@@ -1305,6 +1315,25 @@ class ArkValueTransformer {
|
|
|
1305
1315
|
}
|
|
1306
1316
|
return new Type_1.UnclearReferenceType(exprName, genericTypes);
|
|
1307
1317
|
}
|
|
1318
|
+
resolveTypeOperatorNode(typeOperatorNode) {
|
|
1319
|
+
switch (typeOperatorNode.operator) {
|
|
1320
|
+
case ts.SyntaxKind.ReadonlyKeyword: {
|
|
1321
|
+
let type = this.resolveTypeNode(typeOperatorNode.type);
|
|
1322
|
+
if (type instanceof Type_1.ArrayType || type instanceof Type_1.TupleType) {
|
|
1323
|
+
type.setReadonlyFlag(true);
|
|
1324
|
+
}
|
|
1325
|
+
return type;
|
|
1326
|
+
}
|
|
1327
|
+
case ts.SyntaxKind.KeyOfKeyword: {
|
|
1328
|
+
return Type_1.UnknownType.getInstance();
|
|
1329
|
+
}
|
|
1330
|
+
case ts.SyntaxKind.UniqueKeyword: {
|
|
1331
|
+
return Type_1.UnknownType.getInstance();
|
|
1332
|
+
}
|
|
1333
|
+
default:
|
|
1334
|
+
return Type_1.UnknownType.getInstance();
|
|
1335
|
+
}
|
|
1336
|
+
}
|
|
1308
1337
|
static resolveLiteralTypeNode(literalTypeNode, sourceFile) {
|
|
1309
1338
|
const literal = literalTypeNode.literal;
|
|
1310
1339
|
const kind = literal.kind;
|
|
@@ -1366,24 +1395,30 @@ class ArkValueTransformer {
|
|
|
1366
1395
|
return templateTypes[0];
|
|
1367
1396
|
}
|
|
1368
1397
|
resolveTypeReferenceNode(typeReferenceNode) {
|
|
1369
|
-
const typeReferenceFullName = typeReferenceNode.getText(this.sourceFile);
|
|
1370
|
-
const
|
|
1371
|
-
|
|
1398
|
+
const typeReferenceFullName = typeReferenceNode.typeName.getText(this.sourceFile);
|
|
1399
|
+
const aliasTypeAndStmt = this.aliasTypeMap.get(typeReferenceFullName);
|
|
1400
|
+
const genericTypes = [];
|
|
1401
|
+
if (typeReferenceNode.typeArguments) {
|
|
1402
|
+
for (const typeArgument of typeReferenceNode.typeArguments) {
|
|
1403
|
+
genericTypes.push(this.resolveTypeNode(typeArgument));
|
|
1404
|
+
}
|
|
1405
|
+
}
|
|
1406
|
+
if (!aliasTypeAndStmt) {
|
|
1372
1407
|
const typeName = typeReferenceNode.typeName.getText(this.sourceFile);
|
|
1373
1408
|
const local = this.locals.get(typeName);
|
|
1374
1409
|
if (local !== undefined) {
|
|
1375
1410
|
return local.getType();
|
|
1376
1411
|
}
|
|
1377
|
-
const genericTypes = [];
|
|
1378
|
-
if (typeReferenceNode.typeArguments) {
|
|
1379
|
-
for (const typeArgument of typeReferenceNode.typeArguments) {
|
|
1380
|
-
genericTypes.push(this.resolveTypeNode(typeArgument));
|
|
1381
|
-
}
|
|
1382
|
-
}
|
|
1383
1412
|
return new Type_1.UnclearReferenceType(typeName, genericTypes);
|
|
1384
1413
|
}
|
|
1385
1414
|
else {
|
|
1386
|
-
|
|
1415
|
+
if (genericTypes.length > 0) {
|
|
1416
|
+
const oldAlias = aliasTypeAndStmt[0];
|
|
1417
|
+
let alias = new Type_1.AliasType(oldAlias.getName(), TypeInference_1.TypeInference.replaceTypeWithReal(oldAlias.getOriginalType(), genericTypes), oldAlias.getSignature(), oldAlias.getGenericTypes());
|
|
1418
|
+
alias.setRealGenericTypes(genericTypes);
|
|
1419
|
+
return alias;
|
|
1420
|
+
}
|
|
1421
|
+
return aliasTypeAndStmt[0];
|
|
1387
1422
|
}
|
|
1388
1423
|
}
|
|
1389
1424
|
resolveTypeLiteralNode(typeLiteralNode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAKH,SAAS,EAIT,IAAI,EAIP,MAAM,cAAc,CAAC;AAGtB,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,EAGH,cAAc,EAEd,eAAe,EAElB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAEH,WAAW,EAEX,mBAAmB,EAGtB,MAAM,aAAa,CAAC;AAYrB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C,qBAAa,WAAW;IAEpB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,MAAM,CAAC,gBAAgB;WAMjB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;WAwB9B,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;IA8BxG,OAAO,CAAC,MAAM,CAAC,iCAAiC;IAmChD,OAAO,CAAC,MAAM,CAAC,0BAA0B;WAU3B,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;WAsB9F,aAAa,CAAC,GAAG,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,WAAW;IAiBxF,OAAO,CAAC,MAAM,CAAC,SAAS;IAoBxB,OAAO,CAAC,MAAM,CAAC,QAAQ;WAqBT,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;WAehF,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI;IAgBxF,OAAO,CAAC,MAAM,CAAC,eAAe;IA0C9B,OAAO,CAAC,MAAM,CAAC,gCAAgC;IAgD/C,OAAO,CAAC,MAAM,CAAC,YAAY;WAYb,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,GAAG,eAAe;IAcvG,OAAO,CAAC,MAAM,CAAC,cAAc;IAmB7B,OAAO,CAAC,MAAM,CAAC,UAAU;IAsBzB,OAAO,CAAC,MAAM,CAAC,yBAAyB;WA4C1B,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,IAAI;IA+B/H,OAAO,CAAC,MAAM,CAAC,eAAe;WA+BhB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,YAAY;
|
|
1
|
+
{"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAKH,SAAS,EAIT,IAAI,EAIP,MAAM,cAAc,CAAC;AAGtB,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,EAGH,cAAc,EAEd,eAAe,EAElB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAEH,WAAW,EAEX,mBAAmB,EAGtB,MAAM,aAAa,CAAC;AAYrB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C,qBAAa,WAAW;IAEpB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,MAAM,CAAC,gBAAgB;WAMjB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;WAwB9B,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;IA8BxG,OAAO,CAAC,MAAM,CAAC,iCAAiC;IAmChD,OAAO,CAAC,MAAM,CAAC,0BAA0B;WAU3B,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;WAsB9F,aAAa,CAAC,GAAG,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,WAAW;IAiBxF,OAAO,CAAC,MAAM,CAAC,SAAS;IAoBxB,OAAO,CAAC,MAAM,CAAC,QAAQ;WAqBT,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;WAehF,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI;IAgBxF,OAAO,CAAC,MAAM,CAAC,eAAe;IA0C9B,OAAO,CAAC,MAAM,CAAC,gCAAgC;IAgD/C,OAAO,CAAC,MAAM,CAAC,YAAY;WAYb,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,GAAG,eAAe;IAcvG,OAAO,CAAC,MAAM,CAAC,cAAc;IAmB7B,OAAO,CAAC,MAAM,CAAC,UAAU;IAsBzB,OAAO,CAAC,MAAM,CAAC,yBAAyB;WA4C1B,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,IAAI;IA+B/H,OAAO,CAAC,MAAM,CAAC,eAAe;WA+BhB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,YAAY;CA6B5F"}
|
|
@@ -557,10 +557,16 @@ class IRInference {
|
|
|
557
557
|
}
|
|
558
558
|
else if (originalObject instanceof Type_1.Type) {
|
|
559
559
|
const type = TypeInference_1.TypeInference.inferUnclearedType(originalObject, arkMethod.getDeclaringArkClass());
|
|
560
|
+
// If original Object is ClassType, AliasType or UnclearReferenceType with real generic types,
|
|
561
|
+
// the type after infer should be revert back to the object itself.
|
|
560
562
|
if (type instanceof Type_1.ClassType) {
|
|
561
563
|
const scene = arkMethod.getDeclaringArkFile().getScene();
|
|
562
564
|
model = ModelUtils_1.ModelUtils.findArkModelBySignature(type.getClassSignature(), scene);
|
|
563
565
|
}
|
|
566
|
+
else if (type instanceof Type_1.AliasType) {
|
|
567
|
+
const scene = arkMethod.getDeclaringArkFile().getScene();
|
|
568
|
+
model = ModelUtils_1.ModelUtils.findArkModelBySignature(type.getSignature(), scene);
|
|
569
|
+
}
|
|
564
570
|
else if (type) {
|
|
565
571
|
model = type;
|
|
566
572
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/ModelUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/ModelUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAEH,cAAc,EAKd,eAAe,EAEf,SAAS,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAc,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C,OAAO,EAA2B,SAAS,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,qBAAa,UAAU;IACnB,OAAc,2BAA2B,EAAE,GAAG,CAAC,SAAS,CAAC,CAAa;WAExD,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;WAS9F,sCAAsC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,GAAG,QAAQ,GAAG,IAAI;WAiB5F,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAwBhG;;OAEG;WACW,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAWvF,yCAAyC;WAC3B,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI;WAQ5E,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI;IAQhG,qDAAqD;WACvC,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;IAIhG,kEAAkE;WACpD,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI;WA2B7E,6BAA6B,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI;WAc9F,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI;WAarF,0BAA0B,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI;WASxF,gCAAgC,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI;WAQ9F,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI;WAelF,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;WAWrF,mCAAmC,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;WAQ3F,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI;WAS/E,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE;WASxD,2BAA2B,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,IAAI;WAO5F,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE;WAQjD,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE;WAQlD,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;WAiBnD,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI;WAUvE,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;WAIpD,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI;WA2BvE,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS;WASrF,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI;WAmBlF,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,GAAE,MAAU,GAAG,KAAK,GAAG,IAAI;WAqCtF,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI;WAmB/E,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI;WA4BvF,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI;CAyBzG;AAMD,eAAO,MAAM,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAA8B,CAAC;AAE7E;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CA6BnE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI,CA4BpE;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CA4BlF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAiB7F;AAiED,wBAAgB,iBAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,CAK9F"}
|
|
@@ -425,7 +425,7 @@ class ModelUtils {
|
|
|
425
425
|
return model;
|
|
426
426
|
}
|
|
427
427
|
static findArkModelBySignature(signature, scene) {
|
|
428
|
-
var _a, _b, _c, _d;
|
|
428
|
+
var _a, _b, _c, _d, _e, _f;
|
|
429
429
|
if (signature instanceof ArkSignature_1.ClassSignature) {
|
|
430
430
|
return scene.getClass(signature);
|
|
431
431
|
}
|
|
@@ -449,6 +449,10 @@ class ModelUtils {
|
|
|
449
449
|
const declare = scene.getMethod(signature.getDeclaringMethodSignature());
|
|
450
450
|
return (_d = (_b = (_a = declare === null || declare === void 0 ? void 0 : declare.getBody()) === null || _a === void 0 ? void 0 : _a.getLocals().get(signature.getName())) !== null && _b !== void 0 ? _b : (_c = declare === null || declare === void 0 ? void 0 : declare.getBody()) === null || _c === void 0 ? void 0 : _c.getAliasTypeByName(signature.getName())) !== null && _d !== void 0 ? _d : null;
|
|
451
451
|
}
|
|
452
|
+
else if (signature instanceof ArkSignature_1.AliasTypeSignature) {
|
|
453
|
+
const declare = scene.getMethod(signature.getDeclaringMethodSignature());
|
|
454
|
+
return (_f = (_e = declare === null || declare === void 0 ? void 0 : declare.getBody()) === null || _e === void 0 ? void 0 : _e.getAliasTypeByName(signature.getName())) !== null && _f !== void 0 ? _f : null;
|
|
455
|
+
}
|
|
452
456
|
return null;
|
|
453
457
|
}
|
|
454
458
|
}
|
|
@@ -45,6 +45,7 @@ export declare class TypeInference {
|
|
|
45
45
|
static resolveArkAssignStmt(stmt: Stmt, arkMethod: ArkMethod): void;
|
|
46
46
|
private static setValueType;
|
|
47
47
|
static isUnclearType(type: Type | null | undefined): boolean;
|
|
48
|
+
private static hasUnclearReferenceType;
|
|
48
49
|
static inferSimpleTypeInStmt(stmt: Stmt): void;
|
|
49
50
|
static buildTypeFromStr(typeStr: string): Type;
|
|
50
51
|
static inferValueType(value: Value, arkMethod: ArkMethod): Type | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/TypeInference.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAyC,IAAI,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAOH,YAAY,EACZ,WAAW,
|
|
1
|
+
{"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/TypeInference.ts"],"names":[],"mappings":"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"}
|