arkanalyzer 1.0.56 → 1.0.58
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/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +5 -1
- package/lib/core/common/IRInference.d.ts +1 -0
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +39 -26
- package/lib/core/common/ModelUtils.d.ts +1 -0
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +25 -3
- 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 +30 -25
- package/lib/core/graph/builder/ConditionBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/ConditionBuilder.js +18 -9
- package/lib/core/model/ArkMethod.js +7 -6
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +3 -1
- package/lib/core/model/builder/BodyBuilder.d.ts +4 -0
- package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/BodyBuilder.js +7 -0
- package/lib/core/model/builder/builderUtils.d.ts +2 -1
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +5 -1
- package/lib/save/source/SourceStmt.d.ts.map +1 -1
- package/lib/save/source/SourceStmt.js +2 -1
- package/package.json +2 -2
|
@@ -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,EAAE,sBAAsB,EAA2F,IAAI,EAAE,MAAM,cAAc,CAAC;AACrJ,OAAO,EAAE,SAAS,EAA6E,MAAM,cAAc,CAAC;AAKpH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,OAAO,EAAE,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AAYjE,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,sBAAsB,EAAE,YAAY,EAAE,CAAC;IACvC,KAAK,EAAE,IAAI,EAAE,CAAC;CACjB,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;
|
|
1
|
+
{"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -95,11 +95,15 @@ class ArkIRTransformer {
|
|
|
95
95
|
return this.arkValueTransformer.getAliasTypeMap();
|
|
96
96
|
}
|
|
97
97
|
prebuildStmts() {
|
|
98
|
+
var _a, _b;
|
|
98
99
|
const stmts = [];
|
|
99
100
|
let index = 0;
|
|
100
101
|
for (const methodParameter of this.declaringMethod.getParameters()) {
|
|
101
102
|
const parameterRef = new Ref_1.ArkParameterRef(index, methodParameter.getType());
|
|
102
|
-
|
|
103
|
+
const stmt = new Stmt_1.ArkAssignStmt(this.arkValueTransformer.addNewLocal(methodParameter.getName(), parameterRef.getType()), parameterRef);
|
|
104
|
+
const paramPosition = (_b = (_a = this.declaringMethod.getBodyBuilder()) === null || _a === void 0 ? void 0 : _a.getParamsPositions().get(methodParameter.getName())) !== null && _b !== void 0 ? _b : Position_1.FullPosition.DEFAULT;
|
|
105
|
+
stmt.setOperandOriginalPositions([paramPosition, paramPosition]);
|
|
106
|
+
stmts.push(stmt);
|
|
103
107
|
index++;
|
|
104
108
|
}
|
|
105
109
|
const thisRef = new Ref_1.ArkThisRef(this.arkValueTransformer.getThisLocal().getType());
|
|
@@ -33,6 +33,7 @@ export declare class IRInference {
|
|
|
33
33
|
private static inferInvokeExprWithArray;
|
|
34
34
|
private static inferInvokeExprWithFunction;
|
|
35
35
|
private static inferInvokeExprWithDeclaredClass;
|
|
36
|
+
private static changePtrInvokeExpr;
|
|
36
37
|
private static getRealTypes;
|
|
37
38
|
static replaceMethodSignature(init: MethodSignature, declared: MethodSignature): MethodSignature;
|
|
38
39
|
private static processForEach;
|
|
@@ -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,EAKT,IAAI,EAKP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EAErB,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,EACnB,eAAe,EAElB,MAAM,aAAa,CAAC;AAarB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAoB,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,7 @@ const Const_1 = require("./Const");
|
|
|
58
58
|
const ValueUtil_1 = require("./ValueUtil");
|
|
59
59
|
const TypeExpr_1 = require("../base/TypeExpr");
|
|
60
60
|
const ArkBaseModel_1 = require("../model/ArkBaseModel");
|
|
61
|
+
const SdkUtils_1 = require("./SdkUtils");
|
|
61
62
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'IRInference');
|
|
62
63
|
class IRInference {
|
|
63
64
|
static inferExportInfos(file) {
|
|
@@ -382,7 +383,10 @@ class IRInference {
|
|
|
382
383
|
}
|
|
383
384
|
static inferArgTypeWithSdk(sdkType, scene, argType) {
|
|
384
385
|
var _a, _b;
|
|
385
|
-
|
|
386
|
+
const sdkProjectName = sdkType.getClassSignature().getDeclaringFileSignature().getProjectName();
|
|
387
|
+
const className = sdkType.getClassSignature().getClassName();
|
|
388
|
+
// When leftOp is local with Function annotation, the rightOp is a lambda function, which should be inferred as method later.
|
|
389
|
+
if (!scene.getProjectSdkMap().has(sdkProjectName) || (sdkProjectName === SdkUtils_1.SdkUtils.BUILT_IN_NAME && className === 'Function')) {
|
|
386
390
|
return;
|
|
387
391
|
}
|
|
388
392
|
if (argType instanceof Type_1.UnionType) {
|
|
@@ -464,10 +468,7 @@ class IRInference {
|
|
|
464
468
|
return null;
|
|
465
469
|
}
|
|
466
470
|
static inferInvokeExprWithDeclaredClass(expr, baseType, methodName, scene) {
|
|
467
|
-
var _a;
|
|
468
|
-
if (Builtin_1.Builtin.isBuiltinClass(baseType.getClassSignature().getClassName())) {
|
|
469
|
-
expr.setMethodSignature(new ArkSignature_1.MethodSignature(baseType.getClassSignature(), expr.getMethodSignature().getMethodSubSignature()));
|
|
470
|
-
}
|
|
471
|
+
var _a, _b;
|
|
471
472
|
let declaredClass = scene.getClass(baseType.getClassSignature());
|
|
472
473
|
if (!declaredClass) {
|
|
473
474
|
const globalClass = scene.getSdkGlobal(baseType.getClassSignature().getClassName());
|
|
@@ -487,29 +488,20 @@ class IRInference {
|
|
|
487
488
|
return expr;
|
|
488
489
|
}
|
|
489
490
|
else if (method instanceof ArkField_1.ArkField) {
|
|
490
|
-
|
|
491
|
-
let methodSignature;
|
|
492
|
-
if (type instanceof Type_1.FunctionType) {
|
|
493
|
-
methodSignature = type.getMethodSignature();
|
|
494
|
-
}
|
|
495
|
-
else if (type instanceof Type_1.ClassType && type.getClassSignature().getClassName().endsWith(EtsConst_1.CALL_BACK)) {
|
|
496
|
-
const callback = (_a = scene.getClass(type.getClassSignature())) === null || _a === void 0 ? void 0 : _a.getMethodWithName(Const_1.CALL_SIGNATURE_NAME);
|
|
497
|
-
if (callback) {
|
|
498
|
-
methodSignature = callback.getSignature();
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
if (methodSignature) {
|
|
502
|
-
const ptr = expr instanceof Expr_1.ArkInstanceInvokeExpr
|
|
503
|
-
? new Ref_1.ArkInstanceFieldRef(expr.getBase(), method.getSignature())
|
|
504
|
-
: new Ref_1.ArkStaticFieldRef(method.getSignature());
|
|
505
|
-
expr = new Expr_1.ArkPtrInvokeExpr(methodSignature, ptr, expr.getArgs(), expr.getRealGenericTypes());
|
|
506
|
-
}
|
|
507
|
-
return expr;
|
|
491
|
+
return (_a = this.changePtrInvokeExpr(method, scene, expr)) !== null && _a !== void 0 ? _a : expr;
|
|
508
492
|
}
|
|
509
493
|
else if (methodName === TSConst_1.CONSTRUCTOR_NAME) {
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
494
|
+
const constructor = (_b = declaredClass === null || declaredClass === void 0 ? void 0 : declaredClass.getMethodWithName('construct-signature')) !== null && _b !== void 0 ? _b : declaredClass === null || declaredClass === void 0 ? void 0 : declaredClass.getMethodWithName(Const_1.CALL_SIGNATURE_NAME);
|
|
495
|
+
if (constructor) {
|
|
496
|
+
const methodSignature = constructor.matchMethodSignature(expr.getArgs());
|
|
497
|
+
TypeInference_1.TypeInference.inferSignatureReturnType(methodSignature, constructor);
|
|
498
|
+
expr.setMethodSignature(this.replaceMethodSignature(expr.getMethodSignature(), methodSignature));
|
|
499
|
+
expr.setRealGenericTypes(IRInference.getRealTypes(expr, declaredClass, baseType, constructor));
|
|
500
|
+
}
|
|
501
|
+
else {
|
|
502
|
+
const subSignature = new ArkSignature_1.MethodSubSignature(methodName, [], new Type_1.ClassType(baseType.getClassSignature()));
|
|
503
|
+
expr.setMethodSignature(new ArkSignature_1.MethodSignature(baseType.getClassSignature(), subSignature));
|
|
504
|
+
}
|
|
513
505
|
return expr;
|
|
514
506
|
}
|
|
515
507
|
else if (methodName === Builtin_1.Builtin.ITERATOR_NEXT &&
|
|
@@ -520,6 +512,27 @@ class IRInference {
|
|
|
520
512
|
}
|
|
521
513
|
return null;
|
|
522
514
|
}
|
|
515
|
+
static changePtrInvokeExpr(method, scene, expr) {
|
|
516
|
+
var _a;
|
|
517
|
+
const type = method.getType();
|
|
518
|
+
let methodSignature;
|
|
519
|
+
if (type instanceof Type_1.FunctionType) {
|
|
520
|
+
methodSignature = type.getMethodSignature();
|
|
521
|
+
}
|
|
522
|
+
else if (type instanceof Type_1.ClassType && type.getClassSignature().getClassName().endsWith(EtsConst_1.CALL_BACK)) {
|
|
523
|
+
const callback = (_a = scene.getClass(type.getClassSignature())) === null || _a === void 0 ? void 0 : _a.getMethodWithName(Const_1.CALL_SIGNATURE_NAME);
|
|
524
|
+
if (callback) {
|
|
525
|
+
methodSignature = callback.getSignature();
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
if (methodSignature) {
|
|
529
|
+
const ptr = expr instanceof Expr_1.ArkInstanceInvokeExpr
|
|
530
|
+
? new Ref_1.ArkInstanceFieldRef(expr.getBase(), method.getSignature())
|
|
531
|
+
: new Ref_1.ArkStaticFieldRef(method.getSignature());
|
|
532
|
+
return new Expr_1.ArkPtrInvokeExpr(methodSignature, ptr, expr.getArgs(), expr.getRealGenericTypes());
|
|
533
|
+
}
|
|
534
|
+
return null;
|
|
535
|
+
}
|
|
523
536
|
static getRealTypes(expr, declaredClass, baseType, method) {
|
|
524
537
|
var _a;
|
|
525
538
|
let realTypes;
|
|
@@ -29,6 +29,7 @@ export declare class ModelUtils {
|
|
|
29
29
|
static getNamespaceWithNameFromClass(namespaceName: string, startFrom: ArkClass): ArkNamespace | null;
|
|
30
30
|
static getNamespaceWithName(namespaceName: string, thisClass: ArkClass): ArkNamespace | null;
|
|
31
31
|
static getNamespaceInFileWithName(namespaceName: string, arkFile: ArkFile): ArkNamespace | null;
|
|
32
|
+
static findSymbolInFileWithName(symbolName: string, arkClass: ArkClass, onlyType?: boolean): ArkExport | null;
|
|
32
33
|
static getNamespaceInImportInfoWithName(namespaceName: string, arkFile: ArkFile): ArkNamespace | null;
|
|
33
34
|
static getStaticMethodWithName(methodName: string, thisClass: ArkClass): ArkMethod | null;
|
|
34
35
|
static getStaticMethodInFileWithName(methodName: string, arkFile: ArkFile): ArkMethod | null;
|
|
@@ -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,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,
|
|
1
|
+
{"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/ModelUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -211,6 +211,28 @@ class ModelUtils {
|
|
|
211
211
|
}
|
|
212
212
|
return null;
|
|
213
213
|
}
|
|
214
|
+
static findSymbolInFileWithName(symbolName, arkClass, onlyType = false) {
|
|
215
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
216
|
+
let currNamespace = arkClass.getDeclaringArkNamespace();
|
|
217
|
+
let result;
|
|
218
|
+
while (currNamespace) {
|
|
219
|
+
result = (_e = (_a = currNamespace.getClassWithName(symbolName)) !== null && _a !== void 0 ? _a : (_d = (_c = (_b = currNamespace.getDefaultClass()) === null || _b === void 0 ? void 0 : _b.getDefaultArkMethod()) === null || _c === void 0 ? void 0 : _c.getBody()) === null || _d === void 0 ? void 0 : _d.getAliasTypeByName(symbolName)) !== null && _e !== void 0 ? _e : (_j = (_h = (_g = (_f = currNamespace.getDefaultClass()) === null || _f === void 0 ? void 0 : _f.getDefaultArkMethod()) === null || _g === void 0 ? void 0 : _g.getBody()) === null || _h === void 0 ? void 0 : _h.getLocals()) === null || _j === void 0 ? void 0 : _j.get(symbolName);
|
|
220
|
+
if (!result && !onlyType) {
|
|
221
|
+
result = (_l = (_k = (currNamespace.getName() === symbolName ? currNamespace : null)) !== null && _k !== void 0 ? _k : currNamespace.getNamespaceWithName(symbolName)) !== null && _l !== void 0 ? _l : currNamespace.getDefaultClass().getMethodWithName(symbolName);
|
|
222
|
+
}
|
|
223
|
+
if (result) {
|
|
224
|
+
return result;
|
|
225
|
+
}
|
|
226
|
+
currNamespace = currNamespace.getDeclaringArkNamespace();
|
|
227
|
+
}
|
|
228
|
+
const file = arkClass.getDeclaringArkFile();
|
|
229
|
+
result =
|
|
230
|
+
(_q = (_m = file.getClassWithName(symbolName)) !== null && _m !== void 0 ? _m : (_p = (_o = file.getDefaultClass().getDefaultArkMethod()) === null || _o === void 0 ? void 0 : _o.getBody()) === null || _p === void 0 ? void 0 : _p.getAliasTypeByName(symbolName)) !== null && _q !== void 0 ? _q : (_t = (_s = (_r = file.getDefaultClass()) === null || _r === void 0 ? void 0 : _r.getDefaultArkMethod()) === null || _s === void 0 ? void 0 : _s.getBody()) === null || _t === void 0 ? void 0 : _t.getLocals().get(symbolName);
|
|
231
|
+
if (!result && !onlyType) {
|
|
232
|
+
result = (_u = file.getNamespaceWithName(symbolName)) !== null && _u !== void 0 ? _u : file.getDefaultClass().getMethodWithName(symbolName);
|
|
233
|
+
}
|
|
234
|
+
return result || null;
|
|
235
|
+
}
|
|
214
236
|
static getNamespaceInImportInfoWithName(namespaceName, arkFile) {
|
|
215
237
|
let arkExport = this.getArkExportInImportInfoWithName(namespaceName, arkFile);
|
|
216
238
|
if (arkExport instanceof ArkNamespace_1.ArkNamespace) {
|
|
@@ -354,7 +376,7 @@ class ModelUtils {
|
|
|
354
376
|
return null;
|
|
355
377
|
}
|
|
356
378
|
static findDeclaredLocal(local, arkMethod, times = 0) {
|
|
357
|
-
var _a, _b
|
|
379
|
+
var _a, _b;
|
|
358
380
|
if (arkMethod.getDeclaringArkFile().getScene().getOptions().isScanAbc) {
|
|
359
381
|
return null;
|
|
360
382
|
}
|
|
@@ -389,8 +411,8 @@ class ModelUtils {
|
|
|
389
411
|
.getClassWithName(className.substring(outerStart + 1, outerEnd))) === null || _b === void 0 ? void 0 : _b.getMethodWithName(className.substring(outerEnd + 1));
|
|
390
412
|
}
|
|
391
413
|
else {
|
|
392
|
-
const
|
|
393
|
-
|
|
414
|
+
const symbol = this.findSymbolInFileWithName(name, arkMethod.getDeclaringArkClass(), true);
|
|
415
|
+
return symbol instanceof Local_1.Local ? symbol : null;
|
|
394
416
|
}
|
|
395
417
|
}
|
|
396
418
|
if (invokeMethod) {
|
|
@@ -50,6 +50,7 @@ export declare class TypeInference {
|
|
|
50
50
|
*/
|
|
51
51
|
static resolveArkAssignStmt(stmt: Stmt, arkMethod: ArkMethod): void;
|
|
52
52
|
private static resolveLeftOp;
|
|
53
|
+
private static inferLeftOpType;
|
|
53
54
|
private static setValueType;
|
|
54
55
|
static isUnclearType(type: Type | null | undefined): boolean;
|
|
55
56
|
static checkType(type: Type, check: (t: Type) => boolean, visited?: Set<Type>): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/TypeInference.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAwD,IAAI,EAAE,MAAM,cAAc,CAAC;AAC1F,OAAO,EASH,YAAY,EACZ,WAAW,EAOX,IAAI,EACJ,oBAAoB,EAKvB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAiB,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAuBtC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAsB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/TypeInference.ts"],"names":[],"mappings":"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"}
|
|
@@ -366,6 +366,28 @@ class TypeInference {
|
|
|
366
366
|
}
|
|
367
367
|
static resolveLeftOp(stmt, arkClass, rightType, arkMethod) {
|
|
368
368
|
var _a;
|
|
369
|
+
let leftType = this.inferLeftOpType(stmt, arkClass, rightType, arkMethod);
|
|
370
|
+
const leftOp = stmt.getLeftOp();
|
|
371
|
+
if (leftType && !this.isUnclearType(leftType)) {
|
|
372
|
+
this.setValueType(leftOp, leftType);
|
|
373
|
+
if (leftOp instanceof Local_1.Local && ((_a = stmt.getOriginalText()) === null || _a === void 0 ? void 0 : _a.startsWith(leftOp.getName()))) {
|
|
374
|
+
let localDef = ModelUtils_1.ModelUtils.findDeclaredLocal(leftOp, arkMethod);
|
|
375
|
+
if (localDef && this.isUnclearType(localDef.getType())) {
|
|
376
|
+
localDef.setType(leftType);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
if (rightType) {
|
|
380
|
+
IRInference_1.IRInference.inferRightWithSdkType(leftType, rightType, arkClass);
|
|
381
|
+
}
|
|
382
|
+
if (leftOp instanceof Ref_1.AbstractFieldRef) {
|
|
383
|
+
const declaringSignature = leftOp.getFieldSignature().getDeclaringSignature();
|
|
384
|
+
if (declaringSignature instanceof ArkSignature_1.NamespaceSignature && declaringSignature.getNamespaceName() === TSConst_1.GLOBAL_THIS_NAME) {
|
|
385
|
+
SdkUtils_1.SdkUtils.computeGlobalThis(leftOp, arkMethod);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
static inferLeftOpType(stmt, arkClass, rightType, arkMethod) {
|
|
369
391
|
const leftOp = stmt.getLeftOp();
|
|
370
392
|
let leftType = leftOp.getType();
|
|
371
393
|
if (this.isUnclearType(leftType)) {
|
|
@@ -386,24 +408,11 @@ class TypeInference {
|
|
|
386
408
|
leftType = rightType;
|
|
387
409
|
}
|
|
388
410
|
}
|
|
389
|
-
if (leftType && !this.isUnclearType(
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
let localDef = ModelUtils_1.ModelUtils.findDeclaredLocal(leftOp, arkMethod);
|
|
393
|
-
if (localDef && this.isUnclearType(localDef.getType())) {
|
|
394
|
-
localDef.setType(leftType);
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
if (rightType) {
|
|
398
|
-
IRInference_1.IRInference.inferRightWithSdkType(leftType, rightType, arkClass);
|
|
399
|
-
}
|
|
400
|
-
if (leftOp instanceof Ref_1.AbstractFieldRef) {
|
|
401
|
-
const declaringSignature = leftOp.getFieldSignature().getDeclaringSignature();
|
|
402
|
-
if (declaringSignature instanceof ArkSignature_1.NamespaceSignature && declaringSignature.getNamespaceName() === TSConst_1.GLOBAL_THIS_NAME) {
|
|
403
|
-
SdkUtils_1.SdkUtils.computeGlobalThis(leftOp, arkMethod);
|
|
404
|
-
}
|
|
405
|
-
}
|
|
411
|
+
else if (leftType instanceof Type_1.FunctionType && !this.isUnclearType(rightType) &&
|
|
412
|
+
leftType.getMethodSignature().getMethodSubSignature().getMethodName().startsWith(Const_1.ANONYMOUS_METHOD_PREFIX)) {
|
|
413
|
+
leftType = rightType;
|
|
406
414
|
}
|
|
415
|
+
return leftType || null;
|
|
407
416
|
}
|
|
408
417
|
static setValueType(value, type) {
|
|
409
418
|
if (value instanceof Local_1.Local || value instanceof Ref_1.ArkParameterRef) {
|
|
@@ -781,26 +790,22 @@ class TypeInference {
|
|
|
781
790
|
* @returns
|
|
782
791
|
*/
|
|
783
792
|
static inferBaseType(baseName, arkClass) {
|
|
784
|
-
var _a, _b
|
|
793
|
+
var _a, _b;
|
|
785
794
|
if (TSConst_1.SUPER_NAME === baseName) {
|
|
786
795
|
return this.parseArkExport2Type(arkClass.getSuperClass());
|
|
787
796
|
}
|
|
788
797
|
else if (TSConst_1.DEFAULT === baseName) {
|
|
789
798
|
return this.parseArkExport2Type((_a = arkClass.getDeclaringArkFile().getExportInfoBy(TSConst_1.DEFAULT)) === null || _a === void 0 ? void 0 : _a.getArkExport());
|
|
790
799
|
}
|
|
791
|
-
|
|
792
|
-
if (field && !this.isUnclearType(field.getType())) {
|
|
793
|
-
return field.getType();
|
|
794
|
-
}
|
|
795
|
-
let arkExport = (_o = (_l = (_k = (_f = ModelUtils_1.ModelUtils.getClassWithName(baseName, arkClass)) !== null && _f !== void 0 ? _f : (_j = (_h = (_g = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _g === void 0 ? void 0 : _g.getDefaultArkMethod()) === null || _h === void 0 ? void 0 : _h.getBody()) === null || _j === void 0 ? void 0 : _j.getAliasTypeByName(baseName)) !== null && _k !== void 0 ? _k : ModelUtils_1.ModelUtils.getNamespaceWithName(baseName, arkClass)) !== null && _l !== void 0 ? _l : (_m = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _m === void 0 ? void 0 : _m.getMethodWithName(baseName)) !== null && _o !== void 0 ? _o : ModelUtils_1.ModelUtils.getArkExportInImportInfoWithName(baseName, arkClass.getDeclaringArkFile());
|
|
800
|
+
let arkExport = (_b = ModelUtils_1.ModelUtils.findSymbolInFileWithName(baseName, arkClass)) !== null && _b !== void 0 ? _b : ModelUtils_1.ModelUtils.getArkExportInImportInfoWithName(baseName, arkClass.getDeclaringArkFile());
|
|
796
801
|
if (!arkExport && !arkClass.getDeclaringArkFile().getImportInfoBy(baseName)) {
|
|
797
802
|
arkExport = arkClass.getDeclaringArkFile().getScene().getSdkGlobal(baseName);
|
|
798
803
|
}
|
|
799
804
|
return this.parseArkExport2Type(arkExport);
|
|
800
805
|
}
|
|
801
806
|
static inferTypeByName(typeName, arkClass) {
|
|
802
|
-
var _a
|
|
803
|
-
let arkExport = (
|
|
807
|
+
var _a;
|
|
808
|
+
let arkExport = (_a = ModelUtils_1.ModelUtils.findSymbolInFileWithName(typeName, arkClass, true)) !== null && _a !== void 0 ? _a : ModelUtils_1.ModelUtils.getArkExportInImportInfoWithName(typeName, arkClass.getDeclaringArkFile());
|
|
804
809
|
if (!arkExport && !arkClass.getDeclaringArkFile().getImportInfoBy(typeName)) {
|
|
805
810
|
arkExport = arkClass.getDeclaringArkFile().getScene().getSdkGlobal(typeName);
|
|
806
811
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/ConditionBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAK3C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ConditionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/ConditionBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAK3C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C;;GAEG;AACH,qBAAa,gBAAgB;IAClB,uCAAuC,CAC1C,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EACrD,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,EAC9B,cAAc,EAAE,OAAO,GACxB,IAAI;IAgDP,OAAO,CAAC,kDAAkD;IAuB1D,OAAO,CAAC,6CAA6C;IAmCrD,OAAO,CAAC,8CAA8C;IA8CtD,OAAO,CAAC,uCAAuC;IAc/C,OAAO,CAAC,kCAAkC;IAW1C,OAAO,CAAC,4BAA4B;IAyBpC,OAAO,CAAC,4CAA4C;IAoCpD,OAAO,CAAC,sBAAsB;CAuDjC"}
|
|
@@ -178,11 +178,13 @@ class ConditionBuilder {
|
|
|
178
178
|
return { firstIfTruePos, firstIfFalsePos, firstEndPos };
|
|
179
179
|
}
|
|
180
180
|
removeUnnecessaryBlocksInConditionalOperator(bottomBlock, allBlocks) {
|
|
181
|
+
var _a;
|
|
181
182
|
const firstStmtInBottom = bottomBlock.getHead();
|
|
182
183
|
if (!(firstStmtInBottom instanceof Stmt_1.ArkAssignStmt)) {
|
|
183
184
|
return [bottomBlock];
|
|
184
185
|
}
|
|
185
186
|
const targetValue = firstStmtInBottom.getLeftOp();
|
|
187
|
+
const targetValuePosition = (_a = firstStmtInBottom.getOperandOriginalPosition(targetValue)) !== null && _a !== void 0 ? _a : undefined;
|
|
186
188
|
const tempResultValue = firstStmtInBottom.getRightOp();
|
|
187
189
|
if (!(targetValue instanceof Local_1.Local && IRUtils_1.IRUtils.isTempLocal(tempResultValue))) {
|
|
188
190
|
return [bottomBlock];
|
|
@@ -191,7 +193,7 @@ class ConditionBuilder {
|
|
|
191
193
|
const newPredecessors = [];
|
|
192
194
|
for (const predecessor of oldPredecessors) {
|
|
193
195
|
predecessor.removeSuccessorBlock(bottomBlock);
|
|
194
|
-
newPredecessors.push(...this.replaceTempRecursively(predecessor, targetValue, tempResultValue, allBlocks));
|
|
196
|
+
newPredecessors.push(...this.replaceTempRecursively(predecessor, targetValue, tempResultValue, allBlocks, targetValuePosition));
|
|
195
197
|
}
|
|
196
198
|
bottomBlock.remove(firstStmtInBottom);
|
|
197
199
|
if (bottomBlock.getStmts().length === 0) {
|
|
@@ -208,18 +210,25 @@ class ConditionBuilder {
|
|
|
208
210
|
});
|
|
209
211
|
return [bottomBlock];
|
|
210
212
|
}
|
|
211
|
-
replaceTempRecursively(currBottomBlock, targetLocal, tempResultLocal, allBlocks) {
|
|
213
|
+
replaceTempRecursively(currBottomBlock, targetLocal, tempResultLocal, allBlocks, targetValuePosition) {
|
|
214
|
+
var _a;
|
|
212
215
|
const stmts = currBottomBlock.getStmts();
|
|
213
216
|
const stmtsCnt = stmts.length;
|
|
214
217
|
let tempResultReassignStmt = null;
|
|
215
218
|
for (let i = stmtsCnt - 1; i >= 0; i--) {
|
|
216
219
|
const stmt = stmts[i];
|
|
217
|
-
if (stmt instanceof Stmt_1.ArkAssignStmt
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
220
|
+
if (!(stmt instanceof Stmt_1.ArkAssignStmt) || stmt.getLeftOp() !== tempResultLocal) {
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
if (IRUtils_1.IRUtils.isTempLocal(stmt.getRightOp())) {
|
|
224
|
+
tempResultReassignStmt = stmt;
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
stmt.setLeftOp(targetLocal);
|
|
228
|
+
if (targetValuePosition) {
|
|
229
|
+
const restPositions = (_a = stmt.getOperandOriginalPositions()) === null || _a === void 0 ? void 0 : _a.slice(1);
|
|
230
|
+
if (restPositions) {
|
|
231
|
+
stmt.setOperandOriginalPositions([targetValuePosition, ...restPositions]);
|
|
223
232
|
}
|
|
224
233
|
}
|
|
225
234
|
}
|
|
@@ -230,7 +239,7 @@ class ConditionBuilder {
|
|
|
230
239
|
const prevTempResultLocal = tempResultReassignStmt.getRightOp();
|
|
231
240
|
for (const predecessor of oldPredecessors) {
|
|
232
241
|
predecessor.removeSuccessorBlock(currBottomBlock);
|
|
233
|
-
newPredecessors.push(...this.replaceTempRecursively(predecessor, targetLocal, prevTempResultLocal, allBlocks));
|
|
242
|
+
newPredecessors.push(...this.replaceTempRecursively(predecessor, targetLocal, prevTempResultLocal, allBlocks, targetValuePosition));
|
|
234
243
|
}
|
|
235
244
|
currBottomBlock.remove(tempResultReassignStmt);
|
|
236
245
|
if (currBottomBlock.getStmts().length === 0) {
|
|
@@ -563,15 +563,16 @@ class ArkMethod extends ArkBaseModel_1.ArkBaseModel {
|
|
|
563
563
|
}
|
|
564
564
|
return true;
|
|
565
565
|
}
|
|
566
|
-
matchParam(paramType,
|
|
566
|
+
matchParam(paramType, argument) {
|
|
567
567
|
var _a, _b;
|
|
568
|
-
|
|
569
|
-
arg = ArkMethod.parseArg(arg);
|
|
570
|
-
}
|
|
568
|
+
const arg = ArkMethod.parseArg(argument, paramType);
|
|
571
569
|
const argType = arg.getType();
|
|
572
570
|
if (paramType instanceof Type_1.AliasType && !(argType instanceof Type_1.AliasType)) {
|
|
573
571
|
paramType = TypeInference_1.TypeInference.replaceAliasType(paramType);
|
|
574
572
|
}
|
|
573
|
+
else if (!(paramType instanceof Type_1.AliasType) && argType instanceof Type_1.AliasType) {
|
|
574
|
+
paramType = TypeInference_1.TypeInference.replaceAliasType(paramType);
|
|
575
|
+
}
|
|
575
576
|
if (paramType instanceof Type_1.UnionType) {
|
|
576
577
|
return !!paramType.getTypes().find(p => this.matchParam(p, arg));
|
|
577
578
|
}
|
|
@@ -604,8 +605,8 @@ class ArkMethod extends ArkBaseModel_1.ArkBaseModel {
|
|
|
604
605
|
}
|
|
605
606
|
return argType.constructor === paramType.constructor;
|
|
606
607
|
}
|
|
607
|
-
static parseArg(arg) {
|
|
608
|
-
if (arg instanceof Local_1.Local) {
|
|
608
|
+
static parseArg(arg, paramType) {
|
|
609
|
+
if ((paramType instanceof Type_1.EnumValueType || paramType instanceof Type_1.LiteralType) && arg instanceof Local_1.Local) {
|
|
609
610
|
const stmt = arg.getDeclaringStmt();
|
|
610
611
|
const argType = arg.getType();
|
|
611
612
|
if (argType instanceof Type_1.EnumValueType && argType.getConstant()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAa,IAAI,EAAe,MAAM,iBAAiB,CAAC;AAG/D,OAAO,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAgBjC,OAAO,EAAkE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvG,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,7 +89,8 @@ function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile,
|
|
|
89
89
|
// build methodDeclareSignatures and methodSignature as well as corresponding positions
|
|
90
90
|
const methodName = buildMethodName(methodNode, declaringClass, sourceFile, declaringMethod);
|
|
91
91
|
const methodParameters = [];
|
|
92
|
-
|
|
92
|
+
let paramsPosition = new Map();
|
|
93
|
+
(0, builderUtils_1.buildParameters)(methodNode.parameters, mtd, sourceFile, paramsPosition).forEach(parameter => {
|
|
93
94
|
(0, builderUtils_1.buildGenericType)(parameter.getType(), mtd);
|
|
94
95
|
methodParameters.push(parameter);
|
|
95
96
|
});
|
|
@@ -105,6 +106,7 @@ function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile,
|
|
|
105
106
|
mtd.setLine(line + 1);
|
|
106
107
|
mtd.setColumn(character + 1);
|
|
107
108
|
let bodyBuilder = new BodyBuilder_1.BodyBuilder(mtd.getSignature(), methodNode, mtd, sourceFile);
|
|
109
|
+
bodyBuilder.setParamsPositions(paramsPosition);
|
|
108
110
|
mtd.setBodyBuilder(bodyBuilder);
|
|
109
111
|
}
|
|
110
112
|
else {
|
|
@@ -4,14 +4,18 @@ import { MethodSignature } from '../ArkSignature';
|
|
|
4
4
|
import { CfgBuilder } from '../../graph/builder/CfgBuilder';
|
|
5
5
|
import * as ts from 'ohos-typescript';
|
|
6
6
|
import { GlobalRef } from '../../base/Ref';
|
|
7
|
+
import { FullPosition } from '../../base/Position';
|
|
7
8
|
export declare class BodyBuilder {
|
|
8
9
|
private cfgBuilder;
|
|
9
10
|
private globals?;
|
|
11
|
+
private paramsPosition;
|
|
10
12
|
constructor(methodSignature: MethodSignature, sourceAstNode: ts.Node, declaringMethod: ArkMethod, sourceFile: ts.SourceFile);
|
|
11
13
|
build(): ArkBody | null;
|
|
12
14
|
getCfgBuilder(): CfgBuilder;
|
|
13
15
|
getGlobals(): Map<string, GlobalRef> | undefined;
|
|
14
16
|
setGlobals(globals: Map<string, GlobalRef>): void;
|
|
17
|
+
getParamsPositions(): Map<string, FullPosition>;
|
|
18
|
+
setParamsPositions(paramsPosition: Map<string, FullPosition>): void;
|
|
15
19
|
/**
|
|
16
20
|
* Find out all locals in the parent method which are used by the childrenChain, these locals are the closures of the root node of the childrenChain.
|
|
17
21
|
* childrenChain contains all nested method from the root node of the childrenChain.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BodyBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/BodyBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAkB,eAAe,EAA8C,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAItC,OAAO,EAAuD,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"BodyBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/BodyBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAkB,eAAe,EAA8C,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAItC,OAAO,EAAuD,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD,qBAAa,WAAW;IACpB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAC,CAAyB;IACzC,OAAO,CAAC,cAAc,CAA4B;gBAEtC,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU;IAKpH,KAAK,IAAI,OAAO,GAAG,IAAI;IAkBvB,aAAa,IAAI,UAAU;IAI3B,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS;IAIhD,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAIjD,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAI/C,kBAAkB,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI;IAI1E;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAiChC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA2BvB;;;;;OAKG;IACI,sBAAsB,IAAI,IAAI;IAwDrC,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,6BAA6B;IASrC,OAAO,CAAC,sCAAsC;IA4B9C,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,8BAA8B;IAmBtC,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,6BAA6B;IAyCrC,OAAO,CAAC,8BAA8B;IAkBtC,OAAO,CAAC,6BAA6B;IA2BrC,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,4BAA4B;IAqBpC,OAAO,CAAC,2BAA2B;IAwBnC,OAAO,CAAC,oCAAoC;IA+B5C,OAAO,CAAC,8BAA8B;IAWtC,OAAO,CAAC,qCAAqC;IA8B7C,OAAO,CAAC,2BAA2B;CA8CtC"}
|
|
@@ -28,6 +28,7 @@ const Expr_1 = require("../../base/Expr");
|
|
|
28
28
|
class BodyBuilder {
|
|
29
29
|
constructor(methodSignature, sourceAstNode, declaringMethod, sourceFile) {
|
|
30
30
|
this.cfgBuilder = new CfgBuilder_1.CfgBuilder(sourceAstNode, methodSignature.getMethodSubSignature().getMethodName(), declaringMethod, sourceFile);
|
|
31
|
+
this.paramsPosition = new Map();
|
|
31
32
|
}
|
|
32
33
|
build() {
|
|
33
34
|
this.cfgBuilder.buildCfgBuilder();
|
|
@@ -55,6 +56,12 @@ class BodyBuilder {
|
|
|
55
56
|
setGlobals(globals) {
|
|
56
57
|
this.globals = globals;
|
|
57
58
|
}
|
|
59
|
+
getParamsPositions() {
|
|
60
|
+
return this.paramsPosition;
|
|
61
|
+
}
|
|
62
|
+
setParamsPositions(paramsPosition) {
|
|
63
|
+
this.paramsPosition = paramsPosition;
|
|
64
|
+
}
|
|
58
65
|
/**
|
|
59
66
|
* Find out all locals in the parent method which are used by the childrenChain, these locals are the closures of the root node of the childrenChain.
|
|
60
67
|
* childrenChain contains all nested method from the root node of the childrenChain.
|
|
@@ -5,13 +5,14 @@ import { ArkClass } from '../ArkClass';
|
|
|
5
5
|
import { ArkMethod } from '../ArkMethod';
|
|
6
6
|
import { Decorator } from '../../base/Decorator';
|
|
7
7
|
import { MethodParameter } from './ArkMethodBuilder';
|
|
8
|
+
import { FullPosition } from '../../base/Position';
|
|
8
9
|
export declare function handleQualifiedName(node: ts.QualifiedName): string;
|
|
9
10
|
export declare function handlePropertyAccessExpression(node: ts.PropertyAccessExpression): string;
|
|
10
11
|
export declare function buildDecorators(node: ts.Node, sourceFile: ts.SourceFile): Set<Decorator>;
|
|
11
12
|
export declare function buildModifiers(node: ts.Node): number;
|
|
12
13
|
export declare function buildHeritageClauses(heritageClauses?: ts.NodeArray<HeritageClause>): Map<string, string>;
|
|
13
14
|
export declare function buildTypeParameters(typeParameters: ts.NodeArray<TypeParameterDeclaration>, sourceFile: ts.SourceFile, arkInstance: ArkMethod | ArkClass): GenericType[];
|
|
14
|
-
export declare function buildParameters(params: ts.NodeArray<ParameterDeclaration>, arkInstance: ArkMethod | ArkField, sourceFile: ts.SourceFile): MethodParameter[];
|
|
15
|
+
export declare function buildParameters(params: ts.NodeArray<ParameterDeclaration>, arkInstance: ArkMethod | ArkField, sourceFile: ts.SourceFile, paramsPosition: Map<string, FullPosition>): MethodParameter[];
|
|
15
16
|
export declare function buildGenericType(type: Type, arkInstance: ArkMethod | ArkField | AliasType): Type;
|
|
16
17
|
export declare function buildReturnType(node: TypeNode, sourceFile: ts.SourceFile, method: ArkMethod): Type;
|
|
17
18
|
export declare function tsNode2Type(typeNode: ts.TypeNode | ts.TypeParameterDeclaration, sourceFile: ts.SourceFile, arkInstance: ArkMethod | ArkClass | ArkField): Type;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builderUtils.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/builderUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EACH,SAAS,EAIT,WAAW,EAGX,IAAI,EAIP,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAGH,eAAe,EAElB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"builderUtils.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/builderUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EACH,SAAS,EAIT,WAAW,EAGX,IAAI,EAIP,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAGH,eAAe,EAElB,MAAM,oBAAoB,CAAC;AAsB5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,GAAG,MAAM,CAUlE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,GAAG,MAAM,CAYxF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAUxF;AA2BD,wBAAgB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAUpD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxG;AAED,wBAAgB,mBAAmB,CAC/B,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,WAAW,EAAE,SAAS,GAAG,QAAQ,GAClC,WAAW,EAAE,CAyBf;AA4ED,wBAAgB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EACxG,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,eAAe,EAAE,CAkD5F;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAsDhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAMlG;AAED,wBAAgB,WAAW,CACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,EACnD,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAC7C,IAAI,CA8FN;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAiDxD"}
|
|
@@ -59,6 +59,7 @@ const TSConst_1 = require("../../common/TSConst");
|
|
|
59
59
|
const ArkSignatureBuilder_1 = require("./ArkSignatureBuilder");
|
|
60
60
|
const Ref_1 = require("../../base/Ref");
|
|
61
61
|
const Local_1 = require("../../base/Local");
|
|
62
|
+
const Position_1 = require("../../base/Position");
|
|
62
63
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'builderUtils');
|
|
63
64
|
function handleQualifiedName(node) {
|
|
64
65
|
let right = node.right.text;
|
|
@@ -251,19 +252,22 @@ function buildArrayBindingPatternParam(methodParameter, paramNameNode) {
|
|
|
251
252
|
});
|
|
252
253
|
methodParameter.setArrayElements(elements);
|
|
253
254
|
}
|
|
254
|
-
function buildParameters(params, arkInstance, sourceFile) {
|
|
255
|
+
function buildParameters(params, arkInstance, sourceFile, paramsPosition) {
|
|
255
256
|
let parameters = [];
|
|
256
257
|
params.forEach(parameter => {
|
|
257
258
|
let methodParameter = new ArkMethodBuilder_1.MethodParameter();
|
|
258
259
|
// name
|
|
259
260
|
if (ohos_typescript_1.default.isIdentifier(parameter.name)) {
|
|
260
261
|
methodParameter.setName(parameter.name.text);
|
|
262
|
+
paramsPosition.set(parameter.name.text, Position_1.FullPosition.buildFromNode(parameter.name, sourceFile));
|
|
261
263
|
}
|
|
262
264
|
else if (ohos_typescript_1.default.isObjectBindingPattern(parameter.name)) {
|
|
263
265
|
buildObjectBindingPatternParam(methodParameter, parameter.name);
|
|
266
|
+
paramsPosition.set('ObjectBindingPattern', Position_1.FullPosition.buildFromNode(parameter.name, sourceFile));
|
|
264
267
|
}
|
|
265
268
|
else if (ohos_typescript_1.default.isArrayBindingPattern(parameter.name)) {
|
|
266
269
|
buildArrayBindingPatternParam(methodParameter, parameter.name);
|
|
270
|
+
paramsPosition.set('ArrayBindingPattern', Position_1.FullPosition.buildFromNode(parameter.name, sourceFile));
|
|
267
271
|
}
|
|
268
272
|
else {
|
|
269
273
|
logger.warn('Parameter name is not identifier, ObjectBindingPattern nor ArrayBindingPattern, please contact developers to support this!');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceStmt.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceStmt.ts"],"names":[],"mappings":"AAgBA,OAAO,EAEH,eAAe,EAIlB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAQ9C,OAAO,EAEH,aAAa,EACb,SAAS,EACT,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,IAAI,EACP,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAmB,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAQ5E,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAK3C,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC1D,aAAa,IAAI,UAAU,CAAC;IAE5B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAEpC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAE9B,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEhC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEhC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;IAEtC,iBAAiB,IAAI,OAAO,CAAC;CAChC;AAED,8BAAsB,UAAW,YAAW,IAAI;IAC5C,QAAQ,EAAE,IAAI,CAAC;IACf,OAAO,EAAE,kBAAkB,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAM;IAClB,WAAW,EAAE,iBAAiB,CAAC;gBAEnB,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI;IAOhD,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,IAAI,IAAI,MAAM;IAOrB,SAAS,CAAC,UAAU,IAAI,IAAI;IAE5B,SAAS,CAAC,SAAS,IAAI,IAAI;IAE3B,SAAS,CAAC,MAAM,IAAI,MAAM;IAe1B,SAAS,KAAK,OAAO,IAAI,aAAa,CAErC;IAEM,QAAQ,IAAI,MAAM;IAIzB,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIrC,SAAS,CAAC,SAAS,IAAI,MAAM;aAIb,WAAW,IAAI,IAAI;IAEnC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;CAOpD;AASD,qBAAa,gBAAiB,SAAQ,UAAU;IAC5C,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAqB;IACtC,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa;IAKzD,WAAW,IAAI,IAAI;IAiE1B,SAAS,CAAC,UAAU,IAAI,IAAI;IAqC5B,SAAS,CAAC,SAAS,IAAI,IAAI;IAM3B,OAAO,CAAC,kBAAkB;IAa1B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"SourceStmt.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceStmt.ts"],"names":[],"mappings":"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"}
|
|
@@ -254,7 +254,8 @@ class SourceAssignStmt extends SourceStmt {
|
|
|
254
254
|
let rollback = true;
|
|
255
255
|
if (stmt instanceof Stmt_1.ArkAssignStmt && stmt.getRightOp() instanceof Expr_1.ArkInstanceInvokeExpr) {
|
|
256
256
|
let instanceInvokeExpr = stmt.getRightOp();
|
|
257
|
-
|
|
257
|
+
const methodName = instanceInvokeExpr.getMethodSignature().getMethodSubSignature().getMethodName();
|
|
258
|
+
if (('constructor' === methodName || 'construct-signature' === methodName) &&
|
|
258
259
|
instanceInvokeExpr.getBase().getName() === this.leftOp.getName()) {
|
|
259
260
|
this.handleConstructorInvoke(instanceInvokeExpr, originType);
|
|
260
261
|
return;
|