arkanalyzer 1.0.93 → 1.0.95

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 (78) hide show
  1. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
  2. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +1 -2
  3. package/lib/core/base/Expr.d.ts +9 -0
  4. package/lib/core/base/Expr.d.ts.map +1 -1
  5. package/lib/core/base/Expr.js +10 -0
  6. package/lib/core/base/Stmt.d.ts +8 -0
  7. package/lib/core/base/Stmt.d.ts.map +1 -1
  8. package/lib/core/base/Stmt.js +25 -2
  9. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  10. package/lib/core/common/ArkIRTransformer.js +10 -9
  11. package/lib/core/common/ArkValueTransformer.d.ts +2 -0
  12. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  13. package/lib/core/common/ArkValueTransformer.js +40 -7
  14. package/lib/core/common/SdkUtils.d.ts.map +1 -1
  15. package/lib/core/common/SdkUtils.js +22 -6
  16. package/lib/core/common/StmtUseReplacer.d.ts +1 -0
  17. package/lib/core/common/StmtUseReplacer.d.ts.map +1 -1
  18. package/lib/core/common/StmtUseReplacer.js +9 -0
  19. package/lib/core/common/StringUtils.d.ts +10 -1
  20. package/lib/core/common/StringUtils.d.ts.map +1 -1
  21. package/lib/core/common/StringUtils.js +29 -16
  22. package/lib/core/graph/builder/CfgBuilder.d.ts +1 -0
  23. package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
  24. package/lib/core/graph/builder/CfgBuilder.js +16 -7
  25. package/lib/core/graph/builder/TrapBuilder.d.ts +27 -0
  26. package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -1
  27. package/lib/core/graph/builder/TrapBuilder.js +417 -62
  28. package/lib/core/model/ArkClass.d.ts.map +1 -1
  29. package/lib/core/model/ArkClass.js +1 -2
  30. package/lib/core/model/ArkExport.d.ts.map +1 -1
  31. package/lib/core/model/ArkExport.js +1 -2
  32. package/lib/core/model/ArkField.d.ts.map +1 -1
  33. package/lib/core/model/ArkField.js +1 -2
  34. package/lib/core/model/ArkFile.d.ts +12 -0
  35. package/lib/core/model/ArkFile.d.ts.map +1 -1
  36. package/lib/core/model/ArkFile.js +20 -0
  37. package/lib/core/model/ArkImport.d.ts.map +1 -1
  38. package/lib/core/model/ArkImport.js +1 -2
  39. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  40. package/lib/core/model/ArkMethod.js +2 -3
  41. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  42. package/lib/core/model/ArkNamespace.js +2 -3
  43. package/lib/core/model/builder/ArkClassBuilder.js +3 -2
  44. package/package.json +1 -1
  45. package/lib/node_modules/ohos-typescript/README.OpenSource +0 -11
  46. package/lib/node_modules/ohos-typescript/README.md +0 -81
  47. package/lib/node_modules/ohos-typescript/SECURITY.md +0 -41
  48. package/lib/node_modules/ohos-typescript/ThirdPartyNoticeText.txt +0 -193
  49. package/lib/node_modules/ohos-typescript/bin/tsc +0 -2
  50. package/lib/node_modules/ohos-typescript/bin/tsserver +0 -2
  51. package/lib/node_modules/ohos-typescript/lib/README.md +0 -5
  52. package/lib/node_modules/ohos-typescript/lib/cancellationToken.js +0 -86
  53. package/lib/node_modules/ohos-typescript/lib/cs/diagnosticMessages.generated.json +0 -1880
  54. package/lib/node_modules/ohos-typescript/lib/de/diagnosticMessages.generated.json +0 -1880
  55. package/lib/node_modules/ohos-typescript/lib/es/diagnosticMessages.generated.json +0 -1880
  56. package/lib/node_modules/ohos-typescript/lib/fr/diagnosticMessages.generated.json +0 -1880
  57. package/lib/node_modules/ohos-typescript/lib/it/diagnosticMessages.generated.json +0 -1880
  58. package/lib/node_modules/ohos-typescript/lib/ja/diagnosticMessages.generated.json +0 -1880
  59. package/lib/node_modules/ohos-typescript/lib/ko/diagnosticMessages.generated.json +0 -1880
  60. package/lib/node_modules/ohos-typescript/lib/lib.dom.d.ts +0 -18505
  61. package/lib/node_modules/ohos-typescript/lib/lib.dom.iterable.d.ts +0 -341
  62. package/lib/node_modules/ohos-typescript/lib/lib.scripthost.d.ts +0 -327
  63. package/lib/node_modules/ohos-typescript/lib/lib.webworker.d.ts +0 -6192
  64. package/lib/node_modules/ohos-typescript/lib/lib.webworker.importscripts.d.ts +0 -26
  65. package/lib/node_modules/ohos-typescript/lib/lib.webworker.iterable.d.ts +0 -175
  66. package/lib/node_modules/ohos-typescript/lib/pl/diagnosticMessages.generated.json +0 -1880
  67. package/lib/node_modules/ohos-typescript/lib/pt-br/diagnosticMessages.generated.json +0 -1880
  68. package/lib/node_modules/ohos-typescript/lib/ru/diagnosticMessages.generated.json +0 -1880
  69. package/lib/node_modules/ohos-typescript/lib/tr/diagnosticMessages.generated.json +0 -1880
  70. package/lib/node_modules/ohos-typescript/lib/tsc.js +0 -114551
  71. package/lib/node_modules/ohos-typescript/lib/tsserver.js +0 -179691
  72. package/lib/node_modules/ohos-typescript/lib/tsserverlibrary.d.ts +0 -13648
  73. package/lib/node_modules/ohos-typescript/lib/tsserverlibrary.js +0 -178688
  74. package/lib/node_modules/ohos-typescript/lib/typesMap.json +0 -497
  75. package/lib/node_modules/ohos-typescript/lib/typingsInstaller.js +0 -39871
  76. package/lib/node_modules/ohos-typescript/lib/watchGuard.js +0 -49
  77. package/lib/node_modules/ohos-typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -1880
  78. package/lib/node_modules/ohos-typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -1880
@@ -249,19 +249,28 @@ class CfgBuilder {
249
249
  while (p && p !== this.astRoot) {
250
250
  if (ts.isWhileStatement(p) || ts.isDoStatement(p) || ts.isForStatement(p) || ts.isForInStatement(p) || ts.isForOfStatement(p)) {
251
251
  const lastLoopNextF = this.loopStack[this.loopStack.length - 1].nextF;
252
- this.judgeLastType(lastLoopNextF, lastStatement);
253
- lastLoopNextF.lasts.add(lastStatement);
252
+ this.linkAbruptCompletion(lastStatement, lastLoopNextF, 'breakStatement', c);
254
253
  return;
255
254
  }
256
255
  if (ts.isCaseClause(p) || ts.isDefaultClause(p)) {
257
256
  const lastSwitchExit = this.switchExitStack[this.switchExitStack.length - 1];
258
- this.judgeLastType(lastSwitchExit, lastStatement);
259
- lastSwitchExit.lasts.add(lastStatement);
257
+ this.linkAbruptCompletion(lastStatement, lastSwitchExit, 'breakStatement', c);
260
258
  return;
261
259
  }
262
260
  p = p.parent;
263
261
  }
264
262
  }
263
+ linkAbruptCompletion(lastStatement, target, kind, node) {
264
+ if (!(lastStatement instanceof TryStatementBuilder) && lastStatement.type !== 'catchOrNot') {
265
+ this.judgeLastType(target, lastStatement);
266
+ target.lasts.add(lastStatement);
267
+ return;
268
+ }
269
+ const abrupt = new StatementBuilder(kind, kind === 'breakStatement' ? 'break' : 'continue', node, lastStatement.scopeID);
270
+ this.judgeLastType(abrupt, lastStatement);
271
+ abrupt.next = target;
272
+ target.lasts.add(abrupt);
273
+ }
265
274
  ASTNodeIfStatement(c, lastStatement, scopeID) {
266
275
  let ifstm = new ConditionStatementBuilder('ifStatement', '', c, scopeID);
267
276
  this.judgeLastType(ifstm, lastStatement);
@@ -535,8 +544,7 @@ class CfgBuilder {
535
544
  }
536
545
  else if (ts.isContinueStatement(c)) {
537
546
  const lastLoop = this.loopStack[this.loopStack.length - 1];
538
- this.judgeLastType(lastLoop, lastStatement);
539
- lastLoop.lasts.add(lastStatement);
547
+ this.linkAbruptCompletion(lastStatement, lastLoop, 'continueStatement', c);
540
548
  return;
541
549
  }
542
550
  else if (ts.isIfStatement(c)) {
@@ -1108,9 +1116,10 @@ class CfgBuilder {
1108
1116
  this.linkBasicBlocks(blockBuilderToCfgBlock);
1109
1117
  this.adjustBlocks(blockBuilderToCfgBlock, blocksContainLoopCondition, basicBlockSet, blockBuildersContainSwitch, valueAndStmtsOfSwitchAndCasesAll, arkIRTransformer);
1110
1118
  const trapBuilder = new TrapBuilder_1.TrapBuilder(blockBuildersBeforeTry, blockBuilderToCfgBlock, arkIRTransformer, basicBlockSet);
1111
- const traps = trapBuilder.buildTraps();
1119
+ const builtTraps = trapBuilder.buildTraps();
1112
1120
  this.mergeLoopInitialBlocks(basicBlockSet);
1113
1121
  this.removeEmptyBlocks(basicBlockSet);
1122
+ const traps = trapBuilder.retainLiveTraps(builtTraps);
1114
1123
  const cfg = this.createCfg(blockBuilderToCfgBlock, basicBlockSet);
1115
1124
  return {
1116
1125
  cfg,
@@ -11,8 +11,10 @@ export declare class TrapBuilder {
11
11
  private basicBlockSet;
12
12
  private blockBuilderToCfgBlock;
13
13
  private blockBuildersBeforeTry;
14
+ private pendingFinallyPrunes;
14
15
  constructor(blockBuildersBeforeTry: Set<BlockBuilder>, blockBuilderToCfgBlock: Map<BlockBuilder, BasicBlock>, arkIRTransformer: ArkIRTransformer, basicBlockSet: Set<BasicBlock>);
15
16
  buildTraps(): Trap[];
17
+ retainLiveTraps(traps: Trap[]): Trap[];
16
18
  private buildTrapGroup;
17
19
  private shouldSkipProcessing;
18
20
  private handleEmptyTryBody;
@@ -27,8 +29,33 @@ export declare class TrapBuilder {
27
29
  private removeEmptyBlockBeforeTry;
28
30
  private shouldRemoveEmptyBlockBeforeTry;
29
31
  private buildTrapsIfNoFinally;
32
+ private findUniqueCatchTailTarget;
30
33
  private buildTrapsIfFinallyExist;
34
+ private connectExits;
31
35
  private getAllBlocksBFS;
36
+ private linkUnprotectedTails;
37
+ private collectRegionBasicBlocks;
38
+ private successorLeavesTryRegion;
39
+ private liveBlocks;
40
+ private hasPredecessorOutside;
41
+ private unlinkTryThrowFallThrough;
42
+ private spliceFinallyAfterAbort;
43
+ private isAbortTail;
44
+ private isReturnTerminator;
45
+ private endsWithThrow;
46
+ private linkFinallyCopyAfter;
47
+ private attachFinallyCopy;
48
+ private retargetBlock;
49
+ private takeReturnStmt;
50
+ private returnValueSlot;
51
+ private assignReturnSlot;
52
+ private duplicateFinally;
53
+ private fallThroughCopies;
54
+ private linkFallThrough;
55
+ private placeReturnAfterFinally;
56
+ private returnPositions;
57
+ private getCopiedTails;
58
+ private pruneOriginalFinallyIfUnreachable;
32
59
  private copyFinallyBlocks;
33
60
  private copyBlocks;
34
61
  private copyStmt;
@@ -1 +1 @@
1
- {"version":3,"file":"TrapBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/TrapBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAcvC,OAAO,EAAE,YAAY,EAAmC,MAAM,cAAc,CAAC;AAK7E;;GAEG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,+BAA+B,CAAoB;IAC3D,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,sBAAsB,CAAgC;IAC9D,OAAO,CAAC,sBAAsB,CAAoB;gBAEtC,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EACxG,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC;IAQ3B,UAAU,IAAI,IAAI,EAAE;IAS3B,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,qBAAqB;IAkC7B,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,+BAA+B;IAMvC,OAAO,CAAC,qBAAqB;IAiC7B,OAAO,CAAC,wBAAwB;IAyDhC,OAAO,CAAC,eAAe;IAsCvB,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,QAAQ;IAmChB,OAAO,CAAC,kBAAkB;CAM7B"}
1
+ {"version":3,"file":"TrapBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/TrapBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAkBvC,OAAO,EAAE,YAAY,EAAmC,MAAM,cAAc,CAAC;AAK7E;;GAEG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,+BAA+B,CAAoB;IAC3D,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,sBAAsB,CAAgC;IAC9D,OAAO,CAAC,sBAAsB,CAAoB;IAClD,OAAO,CAAC,oBAAoB,CAAsB;gBAEtC,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EACxG,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC;IAQ3B,UAAU,IAAI,IAAI,EAAE;IAapB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;IAgC7C,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,qBAAqB;IAkC7B,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,+BAA+B;IAMvC,OAAO,CAAC,qBAAqB;IA8C7B,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,wBAAwB;IA8ChC,OAAO,CAAC,YAAY;IA8CpB,OAAO,CAAC,eAAe;IAoDvB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iCAAiC;IA2BzC,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,UAAU;IAqClB,OAAO,CAAC,QAAQ;IAmChB,OAAO,CAAC,kBAAkB;CAM7B"}