arkanalyzer 1.0.76 → 1.0.78

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.
Files changed (48) hide show
  1. package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts +12 -9
  2. package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts.map +1 -1
  3. package/lib/callgraph/pointerAnalysis/PTAUtils.js +19 -9
  4. package/lib/callgraph/pointerAnalysis/Pag.d.ts +10 -0
  5. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  6. package/lib/callgraph/pointerAnalysis/Pag.js +124 -4
  7. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +24 -7
  8. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  9. package/lib/callgraph/pointerAnalysis/PagBuilder.js +163 -42
  10. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  11. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +3 -1
  12. package/lib/callgraph/pointerAnalysis/context/Context.d.ts +1 -0
  13. package/lib/callgraph/pointerAnalysis/context/Context.d.ts.map +1 -1
  14. package/lib/callgraph/pointerAnalysis/context/Context.js +5 -1
  15. package/lib/callgraph/pointerAnalysis/context/ContextSelector.d.ts +1 -1
  16. package/lib/callgraph/pointerAnalysis/context/ContextSelector.d.ts.map +1 -1
  17. package/lib/callgraph/pointerAnalysis/context/ContextSelector.js +1 -2
  18. package/lib/callgraph/pointerAnalysis/plugins/ContainerPlugin.d.ts.map +1 -1
  19. package/lib/callgraph/pointerAnalysis/plugins/ContainerPlugin.js +11 -9
  20. package/lib/core/common/ArkIRTransformer.js +1 -1
  21. package/lib/core/common/Builtin.d.ts +2 -0
  22. package/lib/core/common/Builtin.d.ts.map +1 -1
  23. package/lib/core/common/Builtin.js +2 -0
  24. package/lib/core/common/IRInference.d.ts +4 -0
  25. package/lib/core/common/IRInference.d.ts.map +1 -1
  26. package/lib/core/common/IRInference.js +100 -0
  27. package/lib/core/common/ModelUtils.d.ts +3 -2
  28. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  29. package/lib/core/common/ModelUtils.js +28 -13
  30. package/lib/core/graph/builder/CfgBuilder.d.ts +24 -0
  31. package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
  32. package/lib/core/graph/builder/CfgBuilder.js +179 -0
  33. package/lib/core/graph/builder/ConditionBuilder.d.ts +4 -4
  34. package/lib/core/graph/builder/ConditionBuilder.d.ts.map +1 -1
  35. package/lib/core/graph/builder/ConditionBuilder.js +27 -61
  36. package/lib/core/graph/builder/SwitchBuilder.d.ts.map +1 -1
  37. package/lib/core/graph/builder/SwitchBuilder.js +5 -15
  38. package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -1
  39. package/lib/core/graph/builder/TrapBuilder.js +18 -54
  40. package/lib/core/inference/ValueInference.d.ts +1 -3
  41. package/lib/core/inference/ValueInference.d.ts.map +1 -1
  42. package/lib/core/inference/ValueInference.js +23 -76
  43. package/lib/core/model/ArkMethod.d.ts +2 -1
  44. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  45. package/lib/core/model/ArkMethod.js +5 -1
  46. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  47. package/lib/core/model/builder/ArkMethodBuilder.js +5 -1
  48. package/package.json +2 -2
@@ -44,6 +44,7 @@ const Ref_1 = require("../../base/Ref");
44
44
  const Type_1 = require("../../base/Type");
45
45
  const Position_1 = require("../../base/Position");
46
46
  const Stmt_1 = require("../../base/Stmt");
47
+ const CfgBuilder_1 = require("./CfgBuilder");
47
48
  const logger_1 = __importStar(require("../../../utils/logger"));
48
49
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'TrapBuilder');
49
50
  /**
@@ -197,22 +198,9 @@ class TrapBuilder {
197
198
  if (!this.shouldRemoveEmptyBlockBeforeTry(blockBuilderBeforeTry)) {
198
199
  return;
199
200
  }
200
- const headBlockBuilderWithinTry = blockBuilderBeforeTry.nexts[0];
201
- const headBlockWithinTry = this.blockBuilderToCfgBlock.get(headBlockBuilderWithinTry);
202
- headBlockWithinTry.getPredecessors().splice(0, 1);
203
- const prevsOfBlockBuilderBeforeTry = blockBuilderBeforeTry.lasts;
204
- for (const prevBlockBuilder of prevsOfBlockBuilderBeforeTry) {
205
- const prevBlock = this.blockBuilderToCfgBlock.get(prevBlockBuilder);
206
- for (let j = 0; j < prevBlockBuilder.nexts.length; j++) {
207
- if (prevBlockBuilder.nexts[j] === blockBuilderBeforeTry) {
208
- prevBlockBuilder.nexts[j] = headBlockBuilderWithinTry;
209
- prevBlock.setSuccessorBlock(j, headBlockWithinTry);
210
- break;
211
- }
212
- }
213
- headBlockWithinTry.addPredecessorBlock(prevBlock);
214
- }
215
- headBlockBuilderWithinTry.lasts.splice(0, 1, ...prevsOfBlockBuilderBeforeTry);
201
+ const blockBeforeTry = this.blockBuilderToCfgBlock.get(blockBuilderBeforeTry);
202
+ CfgBuilder_1.CfgBuilder.pruneBlockBuilder(blockBuilderBeforeTry);
203
+ CfgBuilder_1.CfgBuilder.pruneBasicBlock(blockBeforeTry);
216
204
  this.basicBlockSet.delete(this.blockBuilderToCfgBlock.get(blockBuilderBeforeTry));
217
205
  this.blockBuilderToCfgBlock.delete(blockBuilderBeforeTry);
218
206
  }
@@ -221,43 +209,25 @@ class TrapBuilder {
221
209
  // This BlockBuilder contains only one redundant TryStatementBuilder, so the BlockBuilder can be deleted.
222
210
  return stmtsCnt === 1;
223
211
  }
224
- buildTrapsIfNoFinally(tryBfsBlocks, tryTailBlocks, catchBfsBlocks, catchTailBlocks, finallyBlockBuilder) {
212
+ buildTrapsIfNoFinally(tryBfsBlocks, tryTailBlocks, catchBfsBlocks, catchTailBlocks, dummyFinallyBlockBuilder) {
225
213
  if (catchBfsBlocks.length === 0) {
226
214
  logger.error(`catch block expected.`);
227
215
  return [];
228
216
  }
229
- const blockBuilderAfterFinally = finallyBlockBuilder.nexts[0];
217
+ const dummyFinallyBlock = this.blockBuilderToCfgBlock.get(dummyFinallyBlockBuilder);
218
+ CfgBuilder_1.CfgBuilder.pruneBasicBlock(dummyFinallyBlock);
219
+ this.basicBlockSet.delete(dummyFinallyBlock);
220
+ const blockBuilderAfterFinally = dummyFinallyBlockBuilder.nexts[0];
230
221
  let blockAfterFinally = this.blockBuilderToCfgBlock.get(blockBuilderAfterFinally);
231
- if (!this.blockBuilderToCfgBlock.has(finallyBlockBuilder)) {
222
+ if (!this.blockBuilderToCfgBlock.has(dummyFinallyBlockBuilder)) {
232
223
  logger.error(`can't find basicBlock corresponding to the blockBuilder.`);
233
224
  return [];
234
225
  }
235
- const finallyBlock = this.blockBuilderToCfgBlock.get(finallyBlockBuilder);
236
- let dummyFinallyIdxInPredecessors = -1;
237
- for (let i = 0; i < blockAfterFinally.getPredecessors().length; i++) {
238
- if (blockAfterFinally.getPredecessors()[i] === finallyBlock) {
239
- dummyFinallyIdxInPredecessors = i;
240
- break;
241
- }
242
- }
243
- if (dummyFinallyIdxInPredecessors === -1) {
244
- logger.error(`Dummy finally block isn't a predecessor of block after finally block.`);
245
- return [];
246
- }
247
- blockAfterFinally.getPredecessors().splice(dummyFinallyIdxInPredecessors, 1);
248
- for (const tryTailBlock of tryTailBlocks) {
249
- const finallyIndex = tryTailBlock.getSuccessors().findIndex(succ => succ === finallyBlock);
250
- tryTailBlock.setSuccessorBlock(finallyIndex, blockAfterFinally);
251
- blockAfterFinally.addPredecessorBlock(tryTailBlock);
252
- }
253
- this.basicBlockSet.delete(finallyBlock);
254
226
  for (const catchTailBlock of catchTailBlocks) {
255
- catchTailBlock.addSuccessorBlock(blockAfterFinally);
256
- blockAfterFinally.addPredecessorBlock(catchTailBlock);
227
+ CfgBuilder_1.CfgBuilder.linkBasicBlock(catchTailBlock, blockAfterFinally);
257
228
  }
258
229
  for (const tryTailBlock of tryTailBlocks) {
259
- tryTailBlock.addExceptionalSuccessorBlock(catchBfsBlocks[0]);
260
- catchBfsBlocks[0].addExceptionalPredecessorBlock(tryTailBlock);
230
+ CfgBuilder_1.CfgBuilder.linkExceptionalBasicBlock(tryTailBlock, catchBfsBlocks[0]);
261
231
  }
262
232
  return [new Trap_1.Trap(tryBfsBlocks, catchBfsBlocks)];
263
233
  }
@@ -271,27 +241,23 @@ class TrapBuilder {
271
241
  const copyFinallyBfsBlocks = this.copyFinallyBlocks(finallyBfsBlocks, finallyTailBlocks);
272
242
  if (catchBfsBlocks.length !== 0) {
273
243
  for (const catchTailBlock of catchTailBlocks) {
274
- catchTailBlock.addSuccessorBlock(finallyBfsBlocks[0]);
275
- finallyBfsBlocks[0].addPredecessorBlock(catchTailBlock);
244
+ CfgBuilder_1.CfgBuilder.linkBasicBlock(catchTailBlock, finallyBfsBlocks[0]);
276
245
  }
277
246
  // try -> catch trap
278
247
  for (const tryTailBlock of tryTailBlocks) {
279
- tryTailBlock.addExceptionalSuccessorBlock(catchBfsBlocks[0]);
280
- catchBfsBlocks[0].addExceptionalPredecessorBlock(tryTailBlock);
248
+ CfgBuilder_1.CfgBuilder.linkExceptionalBasicBlock(tryTailBlock, catchBfsBlocks[0]);
281
249
  }
282
250
  traps.push(new Trap_1.Trap(tryBfsBlocks, catchBfsBlocks));
283
251
  // catch -> finally trap
284
252
  for (const catchTailBlock of catchTailBlocks) {
285
- catchTailBlock.addExceptionalSuccessorBlock(copyFinallyBfsBlocks[0]);
286
- copyFinallyBfsBlocks[0].addExceptionalPredecessorBlock(catchTailBlock);
253
+ CfgBuilder_1.CfgBuilder.linkExceptionalBasicBlock(catchTailBlock, copyFinallyBfsBlocks[0]);
287
254
  }
288
255
  traps.push(new Trap_1.Trap(catchBfsBlocks, copyFinallyBfsBlocks));
289
256
  }
290
257
  else {
291
258
  // try -> finally trap
292
259
  for (const tryTailBlock of tryTailBlocks) {
293
- tryTailBlock.addExceptionalSuccessorBlock(copyFinallyBfsBlocks[0]);
294
- copyFinallyBfsBlocks[0].addExceptionalPredecessorBlock(tryTailBlock);
260
+ CfgBuilder_1.CfgBuilder.linkExceptionalBasicBlock(tryTailBlock, copyFinallyBfsBlocks[0]);
295
261
  }
296
262
  traps.push(new Trap_1.Trap(tryBfsBlocks, copyFinallyBfsBlocks));
297
263
  }
@@ -335,15 +301,13 @@ class TrapBuilder {
335
301
  const caughtExceptionRef = new Ref_1.ArkCaughtExceptionRef(Type_1.UnknownType.getInstance());
336
302
  const { value: exceptionValue, stmts: exceptionAssignStmts, } = this.arkIRTransformer.generateAssignStmtForValue(caughtExceptionRef, [Position_1.FullPosition.DEFAULT]);
337
303
  copyFinallyBfsBlocks[0].addHead(exceptionAssignStmts);
338
- const finallyPredecessorsCnt = copyFinallyBfsBlocks[0].getPredecessors().length;
339
- copyFinallyBfsBlocks[0].getPredecessors().splice(0, finallyPredecessorsCnt);
304
+ CfgBuilder_1.CfgBuilder.unlinkPredecessorsOfBasicBlock(copyFinallyBfsBlocks[0]);
340
305
  const throwStmt = new Stmt_1.ArkThrowStmt(exceptionValue);
341
306
  let copyFinallyTailBlocks = copyFinallyBfsBlocks.splice(copyFinallyBfsBlocks.length - finallyTailBlocks.length, finallyTailBlocks.length);
342
307
  if (copyFinallyTailBlocks.length > 1) {
343
308
  const newCopyFinallyTailBlock = new BasicBlock_1.BasicBlock();
344
309
  copyFinallyTailBlocks.forEach((copyFinallyTailBlock) => {
345
- copyFinallyTailBlock.addSuccessorBlock(newCopyFinallyTailBlock);
346
- newCopyFinallyTailBlock.addPredecessorBlock(copyFinallyTailBlock);
310
+ CfgBuilder_1.CfgBuilder.linkBasicBlock(copyFinallyTailBlock, newCopyFinallyTailBlock);
347
311
  });
348
312
  copyFinallyBfsBlocks.push(...copyFinallyTailBlocks);
349
313
  copyFinallyTailBlocks = [newCopyFinallyTailBlock];
@@ -6,7 +6,6 @@ import { Type } from '../base/Type';
6
6
  import { ArkMethod } from '../model/ArkMethod';
7
7
  import { AbstractInvokeExpr, AliasTypeExpr, ArkCastExpr, ArkConditionExpr, ArkInstanceInvokeExpr, ArkInstanceOfExpr, ArkNewArrayExpr, ArkNewExpr, ArkNormalBinopExpr, ArkPtrInvokeExpr, ArkStaticInvokeExpr } from '../base/Expr';
8
8
  import { Local } from '../base/Local';
9
- import { Scene } from '../../Scene';
10
9
  export declare enum InferLanguage {
11
10
  UNKNOWN = -1,
12
11
  COMMON = 0,
@@ -167,8 +166,7 @@ export declare class InstanceInvokeExprInference extends ValueInference<ArkInsta
167
166
  */
168
167
  postInfer(value: ArkInstanceInvokeExpr, newValue: Value, stmt: Stmt): void;
169
168
  getMethodName(expr: AbstractInvokeExpr, arkMethod: ArkMethod): string;
170
- static inferInvokeExpr(baseType: Type, expr: AbstractInvokeExpr, arkMethod: ArkMethod, methodName: string): AbstractInvokeExpr | null;
171
- static inferMethodFromBase(baseType: Type, expr: AbstractInvokeExpr, scene: Scene, methodName: string): AbstractInvokeExpr | null;
169
+ static inferInvokeExpr(baseType: Type, expr: AbstractInvokeExpr, arkMethod: ArkMethod): AbstractInvokeExpr | null;
172
170
  }
173
171
  export declare class StaticInvokeExprInference extends InstanceInvokeExprInference {
174
172
  getValueName(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"ValueInference.d.ts","sourceRoot":"","sources":["../../../src/core/inference/ValueInference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ValueInference.d.ts","sourceRoot":"","sources":["../../../src/core/inference/ValueInference.ts"],"names":[],"mappings":"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"}
@@ -56,13 +56,13 @@ const TSConst_1 = require("../common/TSConst");
56
56
  const Expr_1 = require("../base/Expr");
57
57
  const ModelUtils_1 = require("../common/ModelUtils");
58
58
  const Local_1 = require("../base/Local");
59
- const Builtin_1 = require("../common/Builtin");
60
59
  const ArkClass_1 = require("../model/ArkClass");
61
60
  const Constant_1 = require("../base/Constant");
62
61
  const logger_1 = __importStar(require("../../utils/logger"));
63
62
  const ArkSignature_1 = require("../model/ArkSignature");
64
63
  const ArkImport_1 = require("../model/ArkImport");
65
64
  const ArkField_1 = require("../model/ArkField");
65
+ const Builtin_1 = require("../common/Builtin");
66
66
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ValueInference');
67
67
  var InferLanguage;
68
68
  (function (InferLanguage) {
@@ -225,27 +225,11 @@ let FieldRefInference = class FieldRefInference extends ValueInference {
225
225
  * or undefined for regular instance fields
226
226
  */
227
227
  infer(value, stmt) {
228
- const baseType = TypeInference_1.TypeInference.replaceAliasType(value.getBase().getType());
228
+ const baseType = value.getBase().getType();
229
229
  const arkMethod = stmt.getCfg().getDeclaringMethod();
230
- // Special handling for array types with dynamic field access
231
- if (baseType instanceof Type_1.ArrayType && value.isDynamic()) {
232
- const index = TypeInference_1.TypeInference.getLocalFromMethodBody(value.getFieldName(), arkMethod);
233
- if (index) {
234
- return new Ref_1.ArkArrayRef(value.getBase(), index);
235
- }
236
- else {
237
- return new Ref_1.ArkArrayRef(value.getBase(), ValueUtil_1.ValueUtil.createConst(value.getFieldName()));
238
- }
239
- }
240
230
  // Generate updated field signature based on current context
241
- const newFieldSignature = IRInference_1.IRInference.generateNewFieldSignature(value, arkMethod.getDeclaringArkClass(), baseType);
242
- if (newFieldSignature) {
243
- value.setFieldSignature(newFieldSignature);
244
- if (newFieldSignature.isStatic()) {
245
- return new Ref_1.ArkStaticFieldRef(newFieldSignature);
246
- }
247
- }
248
- return undefined;
231
+ const result = IRInference_1.IRInference.inferInstanceMember(baseType, value, arkMethod, IRInference_1.IRInference.updateRefSignature);
232
+ return !result || result === value ? undefined : result;
249
233
  }
250
234
  };
251
235
  FieldRefInference = __decorate([
@@ -277,19 +261,13 @@ let StaticFieldRefInference = class StaticFieldRefInference extends ValueInferen
277
261
  infer(value, stmt) {
278
262
  const baseSignature = value.getFieldSignature().getDeclaringSignature();
279
263
  const baseName = baseSignature instanceof ArkSignature_1.ClassSignature ? baseSignature.getClassName() : baseSignature.getNamespaceName();
280
- const arkClass = stmt.getCfg().getDeclaringMethod().getDeclaringArkClass();
281
- const baseType = TypeInference_1.TypeInference.inferBaseType(baseName, arkClass);
264
+ const arkMethod = stmt.getCfg().getDeclaringMethod();
265
+ const baseType = TypeInference_1.TypeInference.inferBaseType(baseName, arkMethod.getDeclaringArkClass());
282
266
  if (!baseType) {
283
267
  return undefined;
284
268
  }
285
- const newFieldSignature = IRInference_1.IRInference.generateNewFieldSignature(value, arkClass, baseType);
286
- if (newFieldSignature) {
287
- value.setFieldSignature(newFieldSignature);
288
- if (newFieldSignature.isStatic()) {
289
- return new Ref_1.ArkStaticFieldRef(newFieldSignature);
290
- }
291
- }
292
- return undefined;
269
+ const result = IRInference_1.IRInference.inferInstanceMember(baseType, value, arkMethod, IRInference_1.IRInference.updateRefSignature);
270
+ return !result || result === value ? undefined : result;
293
271
  }
294
272
  };
295
273
  StaticFieldRefInference = __decorate([
@@ -320,7 +298,7 @@ let InstanceInvokeExprInference = InstanceInvokeExprInference_1 = class Instance
320
298
  */
321
299
  infer(value, stmt) {
322
300
  const arkMethod = stmt.getCfg().getDeclaringMethod();
323
- const result = InstanceInvokeExprInference_1.inferInvokeExpr(value.getBase().getType(), value, arkMethod, this.getMethodName(value, arkMethod));
301
+ const result = IRInference_1.IRInference.inferInstanceMember(value.getBase().getType(), value, arkMethod, InstanceInvokeExprInference_1.inferInvokeExpr);
324
302
  return !result || result === value ? undefined : result;
325
303
  }
326
304
  /**
@@ -344,49 +322,21 @@ let InstanceInvokeExprInference = InstanceInvokeExprInference_1 = class Instance
344
322
  getMethodName(expr, arkMethod) {
345
323
  return expr.getMethodSignature().getMethodSubSignature().getMethodName();
346
324
  }
347
- static inferInvokeExpr(baseType, expr, arkMethod, methodName) {
348
- var _a;
349
- // Handle baseType
350
- if (baseType instanceof Type_1.AliasType) {
351
- baseType = TypeInference_1.TypeInference.replaceAliasType(baseType);
352
- }
353
- else if (baseType instanceof Type_1.UnionType) {
354
- for (let type of baseType.flatType()) {
355
- if (type instanceof Type_1.UndefinedType || type instanceof Type_1.NullType) {
356
- continue;
357
- }
358
- let result = this.inferInvokeExpr(type, expr, arkMethod, methodName);
359
- if (result) {
360
- return result;
361
- }
362
- }
363
- }
364
- else if (baseType instanceof Type_1.ArrayType) {
365
- const arrayClass = arkMethod.getDeclaringArkFile().getScene().getSdkGlobal(Builtin_1.Builtin.ARRAY);
366
- if (arrayClass instanceof ArkClass_1.ArkClass) {
367
- baseType = new Type_1.ClassType(arrayClass.getSignature(), [baseType.getBaseType()]);
368
- }
369
- }
370
- else if (baseType instanceof Type_1.GenericType) {
371
- const newType = (_a = baseType.getDefaultType()) !== null && _a !== void 0 ? _a : baseType.getConstraint();
372
- if (!newType) {
373
- return null;
325
+ static inferInvokeExpr(baseType, expr, arkMethod) {
326
+ const methodName = expr.getMethodSignature().getMethodSubSignature().getMethodName();
327
+ const scene = arkMethod.getDeclaringArkFile().getScene();
328
+ if (baseType instanceof Type_1.ArrayType || baseType instanceof Type_1.TupleType) {
329
+ const arrayInterface = scene.getSdkGlobal(Builtin_1.Builtin.ARRAY);
330
+ const realTypes = baseType instanceof Type_1.ArrayType ? [baseType.getBaseType()] : undefined;
331
+ if (arrayInterface instanceof ArkClass_1.ArkClass) {
332
+ baseType = new Type_1.ClassType(arrayInterface.getSignature(), realTypes);
374
333
  }
375
- return this.inferInvokeExpr(newType, expr, arkMethod, methodName);
376
- }
377
- else if (baseType instanceof Type_1.StringType || baseType instanceof Type_1.NumberType || baseType instanceof Type_1.BooleanType) {
378
- // Convert primitive types to their wrapper class types
379
- const name = baseType.getName();
380
- const className = name.charAt(0).toUpperCase() + name.slice(1);
381
- const arrayClass = arkMethod.getDeclaringArkFile().getScene().getSdkGlobal(className);
382
- if (arrayClass instanceof ArkClass_1.ArkClass) {
383
- baseType = new Type_1.ClassType(arrayClass.getSignature());
334
+ else if (methodName === Builtin_1.Builtin.ITERATOR_FUNCTION) {
335
+ expr.getMethodSignature().getMethodSubSignature().setReturnType(Builtin_1.Builtin.ITERATOR_CLASS_TYPE);
336
+ expr.setRealGenericTypes(realTypes !== null && realTypes !== void 0 ? realTypes : expr.getRealGenericTypes());
337
+ return expr;
384
338
  }
385
339
  }
386
- const scene = arkMethod.getDeclaringArkFile().getScene();
387
- return this.inferMethodFromBase(baseType, expr, scene, methodName);
388
- }
389
- static inferMethodFromBase(baseType, expr, scene, methodName) {
390
340
  // Dispatch to appropriate inference method based on resolved base type
391
341
  if (baseType instanceof Type_1.ClassType) {
392
342
  return IRInference_1.IRInference.inferInvokeExprWithDeclaredClass(expr, baseType, methodName, scene);
@@ -406,9 +356,6 @@ let InstanceInvokeExprInference = InstanceInvokeExprInference_1 = class Instance
406
356
  else if (baseType instanceof Type_1.FunctionType) {
407
357
  return IRInference_1.IRInference.inferInvokeExprWithFunction(methodName, expr, baseType, scene);
408
358
  }
409
- else if (baseType instanceof Type_1.ArrayType) {
410
- return IRInference_1.IRInference.inferInvokeExprWithArray(methodName, expr, baseType, scene);
411
- }
412
359
  return null;
413
360
  }
414
361
  };
@@ -447,7 +394,7 @@ let StaticInvokeExprInference = class StaticInvokeExprInference extends Instance
447
394
  return undefined;
448
395
  }
449
396
  const baseType = this.getBaseType(expr, arkMethod);
450
- const result = baseType ? InstanceInvokeExprInference.inferInvokeExpr(baseType, expr, arkMethod, methodName) :
397
+ const result = baseType ? IRInference_1.IRInference.inferInstanceMember(baseType, expr, arkMethod, InstanceInvokeExprInference.inferInvokeExpr) :
451
398
  IRInference_1.IRInference.inferStaticInvokeExprByMethodName(methodName, arkMethod, expr);
452
399
  return !result || result === expr ? undefined : result;
453
400
  }
@@ -690,7 +637,7 @@ let ArkTsInstanceInvokeExprInference = class ArkTsInstanceInvokeExprInference ex
690
637
  var _a;
691
638
  const arkMethod = stmt.getCfg().getDeclaringMethod();
692
639
  TypeInference_1.TypeInference.inferRealGenericTypes(value.getRealGenericTypes(), arkMethod.getDeclaringArkClass());
693
- const result = (_a = InstanceInvokeExprInference.inferInvokeExpr(value.getBase().getType(), value, arkMethod, super.getMethodName(value, arkMethod))) !== null && _a !== void 0 ? _a : IRInference_1.IRInference.processExtendFunc(value, arkMethod, super.getMethodName(value, arkMethod));
640
+ const result = (_a = IRInference_1.IRInference.inferInstanceMember(value.getBase().getType(), value, arkMethod, InstanceInvokeExprInference.inferInvokeExpr)) !== null && _a !== void 0 ? _a : IRInference_1.IRInference.processExtendFunc(value, arkMethod, super.getMethodName(value, arkMethod));
694
641
  return !result || result === value ? undefined : result;
695
642
  }
696
643
  };
@@ -1,5 +1,5 @@
1
1
  import { ArkParameterRef } from '../base/Ref';
2
- import { Stmt } from '../base/Stmt';
2
+ import { ArkReturnVoidStmt, Stmt } from '../base/Stmt';
3
3
  import { GenericType, Type } from '../base/Type';
4
4
  import { Value } from '../base/Value';
5
5
  import { Cfg } from '../graph/Cfg';
@@ -249,6 +249,7 @@ export declare class ArkMethod extends ArkBaseModel implements ArkExport {
249
249
  getThisInstance(): Value | null;
250
250
  getReturnValues(): Value[];
251
251
  getReturnStmt(): Stmt[];
252
+ getReturnVoidStmt(): ArkReturnVoidStmt[];
252
253
  setViewTree(viewTree: ViewTree): void;
253
254
  getViewTree(): ViewTree | undefined;
254
255
  hasViewTree(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ArkMethod.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkMethod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArkMethod.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkMethod.ts"],"names":[],"mappings":"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"}
@@ -456,7 +456,11 @@ class ArkMethod extends ArkBaseModel_1.ArkBaseModel {
456
456
  }
457
457
  getReturnStmt() {
458
458
  var _a, _b;
459
- return (_b = (_a = this.getCfg()) === null || _a === void 0 ? void 0 : _a.getStmts().filter(stmt => stmt instanceof Stmt_1.ArkReturnStmt)) !== null && _b !== void 0 ? _b : [];
459
+ return ((_b = (_a = this.getCfg()) === null || _a === void 0 ? void 0 : _a.getStmts().filter(stmt => stmt instanceof Stmt_1.ArkReturnStmt)) !== null && _b !== void 0 ? _b : []);
460
+ }
461
+ getReturnVoidStmt() {
462
+ var _a, _b;
463
+ return ((_b = (_a = this.getCfg()) === null || _a === void 0 ? void 0 : _a.getStmts().filter(stmt => stmt instanceof Stmt_1.ArkReturnVoidStmt)) !== null && _b !== void 0 ? _b : []);
460
464
  }
461
465
  setViewTree(viewTree) {
462
466
  this.viewTree = viewTree;
@@ -1 +1 @@
1
- {"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"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"}
@@ -76,7 +76,11 @@ function buildDefaultArkMethodFromArkClass(declaringClass, mtd, sourceFile, node
76
76
  exports.buildDefaultArkMethodFromArkClass = buildDefaultArkMethodFromArkClass;
77
77
  function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile, declaringMethod) {
78
78
  mtd.setDeclaringArkClass(declaringClass);
79
- declaringMethod !== undefined && mtd.setOuterMethod(declaringMethod);
79
+ if (declaringMethod !== undefined && !declaringMethod.isGenerated() && !declaringMethod.isDefaultArkMethod()) {
80
+ // If declaringMethod is %dflt, %instInit, %statInit, then the method should be taken as nested method of them.
81
+ // Otherwise, it will fail to handle global vars of this method or failed to do the free of bodyBuilder.
82
+ mtd.setOuterMethod(declaringMethod);
83
+ }
80
84
  ohos_typescript_1.default.isFunctionDeclaration(methodNode) && mtd.setAsteriskToken(methodNode.asteriskToken !== undefined);
81
85
  // All MethodLikeNode except FunctionTypeNode have questionToken.
82
86
  !ohos_typescript_1.default.isFunctionTypeNode(methodNode) && mtd.setQuestionToken(methodNode.questionToken !== undefined);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "arkanalyzer",
3
- "version": "1.0.76",
4
- "commit_id": "6dc392d2",
3
+ "version": "1.0.78",
4
+ "commit_id": "63ef60f6",
5
5
  "files": [
6
6
  "docs",
7
7
  "lib",