arkanalyzer 1.0.42 → 1.0.44

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/Scene.d.ts +1 -2
  2. package/lib/Scene.d.ts.map +1 -1
  3. package/lib/Scene.js +59 -47
  4. package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts +11 -5
  5. package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts.map +1 -1
  6. package/lib/callgraph/pointerAnalysis/PTAUtils.js +42 -24
  7. package/lib/callgraph/pointerAnalysis/Pag.d.ts +6 -11
  8. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  9. package/lib/callgraph/pointerAnalysis/Pag.js +26 -23
  10. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +11 -63
  11. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  12. package/lib/callgraph/pointerAnalysis/PagBuilder.js +62 -495
  13. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  14. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +4 -2
  15. package/lib/callgraph/pointerAnalysis/plugins/ContainerPlugin.d.ts +24 -0
  16. package/lib/callgraph/pointerAnalysis/plugins/ContainerPlugin.d.ts.map +1 -0
  17. package/lib/callgraph/pointerAnalysis/plugins/ContainerPlugin.js +167 -0
  18. package/lib/callgraph/pointerAnalysis/plugins/FunctionPlugin.d.ts +26 -0
  19. package/lib/callgraph/pointerAnalysis/plugins/FunctionPlugin.d.ts.map +1 -0
  20. package/lib/callgraph/pointerAnalysis/plugins/FunctionPlugin.js +151 -0
  21. package/lib/callgraph/pointerAnalysis/plugins/IPagPlugin.d.ts +15 -0
  22. package/lib/callgraph/pointerAnalysis/plugins/IPagPlugin.d.ts.map +1 -0
  23. package/lib/callgraph/pointerAnalysis/plugins/IPagPlugin.js +16 -0
  24. package/lib/callgraph/pointerAnalysis/plugins/PluginManager.d.ts +25 -0
  25. package/lib/callgraph/pointerAnalysis/plugins/PluginManager.d.ts.map +1 -0
  26. package/lib/callgraph/pointerAnalysis/plugins/PluginManager.js +66 -0
  27. package/lib/callgraph/pointerAnalysis/plugins/SdkPlugin.d.ts +37 -0
  28. package/lib/callgraph/pointerAnalysis/plugins/SdkPlugin.d.ts.map +1 -0
  29. package/lib/callgraph/pointerAnalysis/plugins/SdkPlugin.js +160 -0
  30. package/lib/callgraph/pointerAnalysis/plugins/StoragePlugin.d.ts +68 -0
  31. package/lib/callgraph/pointerAnalysis/plugins/StoragePlugin.d.ts.map +1 -0
  32. package/lib/callgraph/pointerAnalysis/plugins/StoragePlugin.js +288 -0
  33. package/lib/core/common/DummyMainCreater.js +1 -1
  34. package/lib/core/common/IRInference.d.ts.map +1 -1
  35. package/lib/core/common/IRInference.js +4 -0
  36. package/lib/core/common/SdkUtils.d.ts +1 -1
  37. package/lib/core/common/SdkUtils.d.ts.map +1 -1
  38. package/lib/core/common/SdkUtils.js +18 -18
  39. package/lib/core/common/TypeInference.d.ts.map +1 -1
  40. package/lib/core/common/TypeInference.js +11 -2
  41. package/lib/core/graph/builder/CfgBuilder.js +1 -1
  42. package/lib/core/graph/builder/ConditionBuilder.js +1 -1
  43. package/lib/core/model/ArkClass.d.ts.map +1 -1
  44. package/lib/core/model/ArkClass.js +2 -1
  45. package/lib/core/model/builder/ArkMethodBuilder.d.ts +1 -0
  46. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  47. package/lib/core/model/builder/ArkMethodBuilder.js +40 -5
  48. package/lib/core/model/builder/BodyBuilder.js +1 -1
  49. package/lib/pass/Dispatcher.d.ts +2 -2
  50. package/lib/pass/Dispatcher.d.ts.map +1 -1
  51. package/lib/pass/Pass.d.ts +3 -3
  52. package/lib/pass/Pass.d.ts.map +1 -1
  53. package/lib/pass/ScenePassMgr.d.ts +4 -4
  54. package/lib/pass/ScenePassMgr.d.ts.map +1 -1
  55. package/lib/pass/validators/Exprs.d.ts +9 -0
  56. package/lib/pass/validators/Exprs.d.ts.map +1 -0
  57. package/lib/pass/validators/Exprs.js +40 -0
  58. package/lib/pass/validators/Models.d.ts +14 -0
  59. package/lib/pass/validators/Models.d.ts.map +1 -0
  60. package/lib/pass/validators/Models.js +42 -0
  61. package/lib/pass/validators/SceneValidator.d.ts +19 -0
  62. package/lib/pass/validators/SceneValidator.d.ts.map +1 -0
  63. package/lib/pass/validators/SceneValidator.js +77 -0
  64. package/lib/pass/validators/Stmts.d.ts +7 -0
  65. package/lib/pass/validators/Stmts.d.ts.map +1 -0
  66. package/lib/pass/validators/Stmts.js +36 -0
  67. package/lib/pass/{SceneValidator.d.ts → validators/Validator.d.ts} +100 -108
  68. package/lib/pass/validators/Validator.d.ts.map +1 -0
  69. package/lib/pass/{SceneValidator.js → validators/Validator.js} +147 -143
  70. package/lib/pass/validators/Values.d.ts +7 -0
  71. package/lib/pass/validators/Values.d.ts.map +1 -0
  72. package/lib/pass/validators/Values.js +34 -0
  73. package/lib/save/source/SourceStmt.js +1 -1
  74. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  75. package/lib/save/source/SourceTransformer.js +16 -1
  76. package/lib/utils/FileUtils.js +1 -1
  77. package/package.json +2 -2
  78. package/lib/pass/SceneValidator.d.ts.map +0 -1
@@ -224,12 +224,21 @@ class TypeInference {
224
224
  * such as ArkInstanceInvokeExpr ArkStaticInvokeExpr ArkNewExpr
225
225
  */
226
226
  static resolveExprsInStmt(stmt, arkMethod) {
227
+ var _a;
227
228
  for (const expr of stmt.getExprs()) {
228
229
  const newExpr = expr.inferType(arkMethod);
229
230
  if (stmt.containsInvokeExpr() &&
230
231
  ((expr instanceof Expr_1.ArkInstanceInvokeExpr && newExpr instanceof Expr_1.ArkStaticInvokeExpr) || newExpr instanceof Expr_1.ArkPtrInvokeExpr)) {
231
232
  stmt.replaceUse(expr, newExpr);
232
233
  }
234
+ // After infer the invoke method, it should replace the super.foo() to this.foo() while the foo is with super class as declaring class.
235
+ if (newExpr instanceof Expr_1.ArkInstanceInvokeExpr && newExpr.getBase().getName() === TSConst_1.SUPER_NAME) {
236
+ const thisLocal = (_a = arkMethod.getBody()) === null || _a === void 0 ? void 0 : _a.getLocals().get(TSConst_1.THIS_NAME);
237
+ if (thisLocal) {
238
+ newExpr.setBase(thisLocal);
239
+ thisLocal.addUsedStmt(stmt);
240
+ }
241
+ }
233
242
  }
234
243
  if (stmt instanceof Stmt_1.ArkAliasTypeDefineStmt && this.isUnclearType(stmt.getAliasType().getOriginalType())) {
235
244
  stmt.getAliasType().setOriginalType(stmt.getAliasTypeExpr().getType());
@@ -752,8 +761,8 @@ class TypeInference {
752
761
  return this.parseArkExport2Type(arkExport);
753
762
  }
754
763
  static inferTypeByName(typeName, arkClass) {
755
- var _a, _b, _c, _d, _e;
756
- let arkExport = (_e = (_a = ModelUtils_1.ModelUtils.getClassWithName(typeName, arkClass)) !== null && _a !== void 0 ? _a : (_d = (_c = (_b = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _b === void 0 ? void 0 : _b.getDefaultArkMethod()) === null || _c === void 0 ? void 0 : _c.getBody()) === null || _d === void 0 ? void 0 : _d.getAliasTypeByName(typeName)) !== null && _e !== void 0 ? _e : ModelUtils_1.ModelUtils.getArkExportInImportInfoWithName(typeName, arkClass.getDeclaringArkFile());
764
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
765
+ let arkExport = (_k = (_f = (_a = ModelUtils_1.ModelUtils.getClassWithName(typeName, arkClass)) !== null && _a !== void 0 ? _a : (_e = (_d = (_c = (_b = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _b === void 0 ? void 0 : _b.getDefaultArkMethod()) === null || _c === void 0 ? void 0 : _c.getBody()) === null || _d === void 0 ? void 0 : _d.getLocals()) === null || _e === void 0 ? void 0 : _e.get(typeName)) !== 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(typeName)) !== null && _k !== void 0 ? _k : ModelUtils_1.ModelUtils.getArkExportInImportInfoWithName(typeName, arkClass.getDeclaringArkFile());
757
766
  if (!arkExport && !arkClass.getDeclaringArkFile().getImportInfoBy(typeName)) {
758
767
  arkExport = arkClass.getDeclaringArkFile().getScene().getSdkGlobal(typeName);
759
768
  }
@@ -1192,7 +1192,7 @@ class CfgBuilder {
1192
1192
  }
1193
1193
  const cfg = new Cfg_1.Cfg();
1194
1194
  const startingBasicBlock = blockBuilderToCfgBlock.get(this.blocks[0]);
1195
- cfg.setStartingStmt(startingBasicBlock.getStmts()[0]);
1195
+ cfg.setStartingStmt(startingBasicBlock.getHead());
1196
1196
  currBlockId = 0;
1197
1197
  for (const basicBlock of basicBlockSet) {
1198
1198
  basicBlock.setId(currBlockId++);
@@ -178,7 +178,7 @@ class ConditionBuilder {
178
178
  return { firstIfTruePos, firstIfFalsePos, firstEndPos };
179
179
  }
180
180
  removeUnnecessaryBlocksInConditionalOperator(bottomBlock, allBlocks) {
181
- const firstStmtInBottom = bottomBlock.getStmts()[0];
181
+ const firstStmtInBottom = bottomBlock.getHead();
182
182
  if (!(firstStmtInBottom instanceof Stmt_1.ArkAssignStmt)) {
183
183
  return [bottomBlock];
184
184
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ArkClass.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkClass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArkClass.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkClass.ts"],"names":[],"mappings":"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"}
@@ -166,12 +166,13 @@ class ArkClass extends ArkBaseModel_1.ArkBaseModel {
166
166
  return null;
167
167
  }
168
168
  getHeritageClass(heritageClassName) {
169
+ var _a;
169
170
  if (!heritageClassName) {
170
171
  return null;
171
172
  }
172
173
  let superClass = this.heritageClasses.get(heritageClassName);
173
174
  if (superClass === undefined) {
174
- let type = TypeInference_1.TypeInference.inferUnclearRefName(heritageClassName, this);
175
+ let type = (_a = TypeInference_1.TypeInference.inferUnclearRefName(heritageClassName, this)) !== null && _a !== void 0 ? _a : TypeInference_1.TypeInference.inferUnclearRefName(heritageClassName, this.getDeclaringArkFile().getDefaultClass());
175
176
  if (type) {
176
177
  type = TypeInference_1.TypeInference.replaceAliasType(type);
177
178
  }
@@ -61,4 +61,5 @@ export declare function buildInitMethod(initMethod: ArkMethod, fieldInitializerS
61
61
  export declare function addInitInConstructor(constructor: ArkMethod): void;
62
62
  export declare function isMethodImplementation(node: MethodLikeNode): boolean;
63
63
  export declare function checkAndUpdateMethod(method: ArkMethod, cls: ArkClass): void;
64
+ export declare function replaceSuper2Constructor(constructor: ArkMethod): void;
64
65
  //# sourceMappingURL=ArkMethodBuilder.d.ts.map
@@ -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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"}
@@ -40,7 +40,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
40
  return (mod && mod.__esModule) ? mod : { "default": mod };
41
41
  };
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.checkAndUpdateMethod = exports.isMethodImplementation = exports.addInitInConstructor = exports.buildInitMethod = exports.buildDefaultConstructor = exports.MethodParameter = exports.ArrayBindingPatternParameter = exports.ObjectBindingPatternParameter = exports.buildArkMethodFromArkClass = exports.buildDefaultArkMethodFromArkClass = void 0;
43
+ exports.replaceSuper2Constructor = exports.checkAndUpdateMethod = exports.isMethodImplementation = exports.addInitInConstructor = exports.buildInitMethod = exports.buildDefaultConstructor = exports.MethodParameter = exports.ArrayBindingPatternParameter = exports.ObjectBindingPatternParameter = exports.buildArkMethodFromArkClass = exports.buildDefaultArkMethodFromArkClass = void 0;
44
44
  const Type_1 = require("../../base/Type");
45
45
  const BodyBuilder_1 = require("./BodyBuilder");
46
46
  const ViewTreeBuilder_1 = require("../../graph/builder/ViewTreeBuilder");
@@ -337,9 +337,7 @@ function buildDefaultConstructor(arkClass) {
337
337
  }
338
338
  basicBlock.addStmt(new Stmt_1.ArkAssignStmt(thisLocal, new Ref_1.ArkThisRef(new Type_1.ClassType(arkClass.getSignature()))));
339
339
  if (superConstructor) {
340
- const superMethodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.SUPER_NAME, parameters, superConstructor.getReturnType());
341
- const superMethodSignature = new ArkSignature_1.MethodSignature(arkClass.getSignature(), superMethodSubSignature);
342
- const superInvokeExpr = new Expr_1.ArkStaticInvokeExpr(superMethodSignature, parameterArgs);
340
+ const superInvokeExpr = new Expr_1.ArkInstanceInvokeExpr(thisLocal, superConstructor.getSignature(), parameterArgs);
343
341
  basicBlock.addStmt(new Stmt_1.ArkInvokeStmt(superInvokeExpr));
344
342
  }
345
343
  const methodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.CONSTRUCTOR_NAME, parameters, thisLocal.getType(), defaultConstructor.isStatic());
@@ -395,7 +393,7 @@ function addInitInConstructor(constructor) {
395
393
  let index = 0;
396
394
  for (let i = 0; i < firstBlockStmts.length; i++) {
397
395
  const stmt = firstBlockStmts[i];
398
- if (stmt instanceof Stmt_1.ArkInvokeStmt && stmt.getInvokeExpr().getMethodSignature().getMethodSubSignature().getMethodName() === TSConst_1.SUPER_NAME) {
396
+ if (stmt instanceof Stmt_1.ArkInvokeStmt && stmt.getInvokeExpr().getMethodSignature().getMethodSubSignature().getMethodName() === TSConst_1.CONSTRUCTOR_NAME) {
399
397
  index++;
400
398
  continue;
401
399
  }
@@ -468,3 +466,40 @@ function checkAndUpdateMethod(method, cls) {
468
466
  }
469
467
  }
470
468
  exports.checkAndUpdateMethod = checkAndUpdateMethod;
469
+ function replaceSuper2Constructor(constructor) {
470
+ var _a, _b;
471
+ if (constructor.getName() !== TSConst_1.CONSTRUCTOR_NAME) {
472
+ return;
473
+ }
474
+ const superClass = constructor.getDeclaringArkClass().getSuperClass();
475
+ if (superClass === null) {
476
+ return;
477
+ }
478
+ const superConstructor = superClass.getMethodWithName(TSConst_1.CONSTRUCTOR_NAME);
479
+ if (superConstructor === null) {
480
+ logger.error(`Can not find constructor method for class ${superClass.getSignature().toString()}`);
481
+ return;
482
+ }
483
+ const startingBlock = (_a = constructor.getBody()) === null || _a === void 0 ? void 0 : _a.getCfg().getStartingBlock();
484
+ if (startingBlock === undefined) {
485
+ return;
486
+ }
487
+ for (const stmt of startingBlock.getStmts()) {
488
+ if (stmt instanceof Stmt_1.ArkInvokeStmt) {
489
+ let invokeExpr = stmt.getInvokeExpr();
490
+ const methodSignature = invokeExpr.getMethodSignature();
491
+ if (methodSignature.getMethodSubSignature().getMethodName() !== TSConst_1.SUPER_NAME) {
492
+ continue;
493
+ }
494
+ let base = (_b = constructor.getBody()) === null || _b === void 0 ? void 0 : _b.getLocals().get(TSConst_1.THIS_NAME);
495
+ if (base === undefined) {
496
+ logger.error(`Can not find local this in constructor method ${constructor.getSignature().toString()}`);
497
+ return;
498
+ }
499
+ const newInvokeExpr = new Expr_1.ArkInstanceInvokeExpr(base, superConstructor.getSignature(), invokeExpr.getArgs());
500
+ stmt.replaceInvokeExpr(newInvokeExpr);
501
+ return;
502
+ }
503
+ }
504
+ }
505
+ exports.replaceSuper2Constructor = replaceSuper2Constructor;
@@ -512,7 +512,7 @@ class BodyBuilder {
512
512
  if (body === undefined) {
513
513
  return;
514
514
  }
515
- let stmts = Array.from(body.getCfg().getBlocks())[0].getStmts();
515
+ let stmts = body.getCfg().getStartingBlock().getStmts();
516
516
  let index = 0;
517
517
  const parameterRef = new Ref_1.ArkParameterRef(index, lexicalEnv);
518
518
  const closuresLocal = new Local_1.Local(closuresParam.getName(), lexicalEnv);
@@ -1,9 +1,9 @@
1
- import { Value } from '../core/base/Value';
1
+ import type { Value } from '../core/base/Value';
2
2
  import { ArkAliasTypeDefineStmt, ArkAssignStmt, ArkIfStmt, ArkInvokeStmt, ArkReturnStmt, ArkReturnVoidStmt, ArkThrowStmt, Stmt } from '../core/base/Stmt';
3
3
  import { AbstractBinopExpr, AbstractExpr, AbstractInvokeExpr, AliasTypeExpr, ArkAwaitExpr, ArkCastExpr, ArkConditionExpr, ArkDeleteExpr, ArkInstanceInvokeExpr, ArkInstanceOfExpr, ArkNewArrayExpr, ArkNewExpr, ArkNormalBinopExpr, ArkPhiExpr, ArkPtrInvokeExpr, ArkStaticInvokeExpr, ArkTypeOfExpr, ArkUnopExpr, ArkYieldExpr } from '../core/base/Expr';
4
4
  import { FallAction, MethodCtx } from './Pass';
5
5
  import { BigIntConstant, BooleanConstant, Constant, NullConstant, NumberConstant, StringConstant, UndefinedConstant } from '../core/base/Constant';
6
- import { ArkMethod } from '../core/model/ArkMethod';
6
+ import type { ArkMethod } from '../core/model/ArkMethod';
7
7
  import { Local } from '../core/base/Local';
8
8
  import { AbstractFieldRef, AbstractRef, ArkCaughtExceptionRef, ArkInstanceFieldRef, ArkParameterRef, ArkStaticFieldRef, ArkThisRef, ClosureFieldRef, GlobalRef } from '../core/base/Ref';
9
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Dispatcher.d.ts","sourceRoot":"","sources":["../../src/pass/Dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Dispatcher.d.ts","sourceRoot":"","sources":["../../src/pass/Dispatcher.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { ArkMethod } from '../core/model/ArkMethod';
2
1
  import { Context, CtxArg } from './Context';
3
2
  import { SceneCtx } from './ScenePassMgr';
4
- import { ArkFile } from '../core/model/ArkFile';
5
- import { ArkClass } from '../core/model/ArkClass';
3
+ import type { ArkFile } from '../core/model/ArkFile';
4
+ import type { ArkClass } from '../core/model/ArkClass';
5
+ import type { ArkMethod } from '../core/model/ArkMethod';
6
6
  /**
7
7
  fallthrough actions
8
8
  Continue: will run next pass
@@ -1 +1 @@
1
- {"version":3,"file":"Pass.d.ts","sourceRoot":"","sources":["../../src/pass/Pass.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD;;;;EAIE;AACF,0BAAkB,UAAU;IACxB,QAAQ,IAAA;IACR,KAAK,IAAA;CACR;AAED;;;;;;;;;GASG;AACH,8BAAsB,QAAQ;IAC1B,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI;CAC/D;AAED;;;;;GAKG;AACH,qBAAa,OAAQ,SAAQ,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClD,IAAI,IAAI,QAAQ;CAGnB;AAGD;;;;;;;;;GASG;AACH,8BAAsB,SAAS;IAC3B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI;CAChE;AAGD;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;IAClD,IAAI,IAAI,QAAQ;CAGnB;AAED;;;;;;;;;;;GAWG;AACH,8BAAsB,UAAU;IAC5B,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI;CACrE;AAED;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;IACpD,IAAI,IAAI,QAAQ;CAGnB"}
1
+ {"version":3,"file":"Pass.d.ts","sourceRoot":"","sources":["../../src/pass/Pass.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;EAIE;AACF,0BAAkB,UAAU;IACxB,QAAQ,IAAA;IACR,KAAK,IAAA;CACR;AAED;;;;;;;;;GASG;AACH,8BAAsB,QAAQ;IAC1B,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI;CAC/D;AAED;;;;;GAKG;AACH,qBAAa,OAAQ,SAAQ,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClD,IAAI,IAAI,QAAQ;CAGnB;AAGD;;;;;;;;;GASG;AACH,8BAAsB,SAAS;IAC3B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI;CAChE;AAGD;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;IAClD,IAAI,IAAI,QAAQ;CAGnB;AAED;;;;;;;;;;;GAWG;AACH,8BAAsB,UAAU;IAC5B,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI;CACrE;AAED;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;IACpD,IAAI,IAAI,QAAQ;CAGnB"}
@@ -1,10 +1,10 @@
1
- import { Scene } from '../Scene';
2
1
  import { AnyKey, Context, CtxArg, UpperRoot } from './Context';
3
2
  import { Dispatcher } from './Dispatcher';
4
3
  import { ClassPass, FilePass, MethodPass } from './Pass';
5
- import { ArkFile } from '../core/model/ArkFile';
6
- import { ArkClass } from '../core/model/ArkClass';
7
- import { ArkMethod } from '../core/model/ArkMethod';
4
+ import type { Scene } from '../Scene';
5
+ import type { ArkFile } from '../core/model/ArkFile';
6
+ import type { ArkClass } from '../core/model/ArkClass';
7
+ import type { ArkMethod } from '../core/model/ArkMethod';
8
8
  /**
9
9
  * Represents a specialized context class that extends the base Context class with specific types.
10
10
  * Provides functionality to access the root context within a hierarchical structure.
@@ -1 +1 @@
1
- {"version":3,"file":"ScenePassMgr.d.ts","sourceRoot":"","sources":["../../src/pass/ScenePassMgr.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAY,SAAS,EAAuB,QAAQ,EAAa,UAAU,EAAE,MAAM,QAAQ,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIpD;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;;IAKpD,IAAI,IAAI,QAAQ;CAGnB;AAGD;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IAEtB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEzB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;IAE3B,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAA;CAC/B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAE1B,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,EAAE,CAAC;IAE/B,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,QAAQ,EAAE,CAAC;IAEnC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAA;CACxC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,UAAU;IACvB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;CAClC;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAIZ;IACF,OAAO,CAAC,SAAS,CAAC,CAA4B;IAC9C,OAAO,CAAC,UAAU,CAAC,CAAiC;IACpD,OAAO,CAAC,IAAI,CAA4B;gBAE5B,KAAK,EAAE,UAAU;IAY7B,YAAY,IAAI,QAAQ;IAIxB,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAavB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,UAAU;CAgBrB"}
1
+ {"version":3,"file":"ScenePassMgr.d.ts","sourceRoot":"","sources":["../../src/pass/ScenePassMgr.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAY,SAAS,EAAuB,QAAQ,EAAa,UAAU,EAAE,MAAM,QAAQ,CAAC;AACnG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIzD;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;;IAKpD,IAAI,IAAI,QAAQ;CAGnB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IAEtB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEzB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;IAE3B,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAA;CAC/B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAE1B,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,EAAE,CAAC;IAE/B,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,QAAQ,EAAE,CAAC;IAEnC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAA;CACxC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,UAAU;IACvB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;CAClC;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAIZ;IACF,OAAO,CAAC,SAAS,CAAC,CAA4B;IAC9C,OAAO,CAAC,UAAU,CAAC,CAAiC;IACpD,OAAO,CAAC,IAAI,CAA4B;gBAE5B,KAAK,EAAE,UAAU;IAY7B,YAAY,IAAI,QAAQ;IAIxB,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAavB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,UAAU;CAgBrB"}
@@ -0,0 +1,9 @@
1
+ import { AbstractInvokeExpr } from '../../core/base/Expr';
2
+ import { SummaryReporter, ValueValidator } from './Validator';
3
+ import { Value } from '../../core/base/Value';
4
+ export declare class AbsInvokeValidator extends ValueValidator<AbstractInvokeExpr> {
5
+ private static readonly INSTANCE;
6
+ validate(value: AbstractInvokeExpr, ctx: SummaryReporter): void;
7
+ checkArg(arg: Value, index: number, ctx: SummaryReporter): void;
8
+ }
9
+ //# sourceMappingURL=Exprs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Exprs.d.ts","sourceRoot":"","sources":["../../../src/pass/validators/Exprs.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAM9C,qBAAa,kBAAmB,SAAQ,cAAc,CAAC,kBAAkB,CAAC;IACtE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IAE5D,QAAQ,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI;IAM/D,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI;CAWlE"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.AbsInvokeValidator = void 0;
18
+ const Expr_1 = require("../../core/base/Expr");
19
+ const Validator_1 = require("./Validator");
20
+ const Constant_1 = require("../../core/base/Constant");
21
+ const Local_1 = require("../../core/base/Local");
22
+ class AbsInvokeValidator extends Validator_1.ValueValidator {
23
+ validate(value, ctx) {
24
+ value.getArgs().forEach((arg, i) => {
25
+ this.checkArg(arg, i, ctx);
26
+ });
27
+ }
28
+ checkArg(arg, index, ctx) {
29
+ if (!((arg instanceof Local_1.Local) || (arg instanceof Constant_1.Constant))) {
30
+ ctx.error(`arg ${index} is not local or constant`);
31
+ }
32
+ }
33
+ }
34
+ exports.AbsInvokeValidator = AbsInvokeValidator;
35
+ AbsInvokeValidator.INSTANCE = new AbsInvokeValidator();
36
+ (() => {
37
+ AbsInvokeValidator.register([Expr_1.AbstractInvokeExpr, (v, ctx, mtd) => {
38
+ AbsInvokeValidator.INSTANCE.run(v, ctx, mtd);
39
+ }]);
40
+ })();
@@ -0,0 +1,14 @@
1
+ import { ArkClass } from '../../core/model/ArkClass';
2
+ import { ClassValidator, FileValidator, MethodValidator, SummaryReporter } from './Validator';
3
+ import { ArkFile } from '../../core/model/ArkFile';
4
+ import { ArkMethod } from '../../core/model/ArkMethod';
5
+ export declare class ArkMethodValidator extends MethodValidator {
6
+ validate(mtd: ArkMethod, ctx: SummaryReporter): void;
7
+ }
8
+ export declare class ArkClassValidator extends ClassValidator {
9
+ validate(cls: ArkClass, ctx: SummaryReporter): void;
10
+ }
11
+ export declare class ArkFileValidator extends FileValidator {
12
+ validate(file: ArkFile, ctx: SummaryReporter): void;
13
+ }
14
+ //# sourceMappingURL=Models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Models.d.ts","sourceRoot":"","sources":["../../../src/pass/validators/Models.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9F,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,qBAAa,kBAAmB,SAAQ,eAAe;IACnD,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI;CAMvD;AAED,qBAAa,iBAAkB,SAAQ,cAAc;IACjD,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI;CAMtD;AAED,qBAAa,gBAAiB,SAAQ,aAAa;IAC/C,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI;CAEtD"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ArkFileValidator = exports.ArkClassValidator = exports.ArkMethodValidator = void 0;
18
+ const Validator_1 = require("./Validator");
19
+ const ArkError_1 = require("../../core/common/ArkError");
20
+ class ArkMethodValidator extends Validator_1.MethodValidator {
21
+ validate(mtd, ctx) {
22
+ const err = mtd.validate();
23
+ if (err.errCode !== ArkError_1.ArkErrorCode.OK) {
24
+ ctx.error(`code: ${err.errCode} msg: ${err.errMsg}`);
25
+ }
26
+ }
27
+ }
28
+ exports.ArkMethodValidator = ArkMethodValidator;
29
+ class ArkClassValidator extends Validator_1.ClassValidator {
30
+ validate(cls, ctx) {
31
+ const err = cls.validate();
32
+ if (err.errCode !== ArkError_1.ArkErrorCode.OK) {
33
+ ctx.error(`code: ${err.errCode} msg: ${err.errMsg}`);
34
+ }
35
+ }
36
+ }
37
+ exports.ArkClassValidator = ArkClassValidator;
38
+ class ArkFileValidator extends Validator_1.FileValidator {
39
+ validate(file, ctx) {
40
+ }
41
+ }
42
+ exports.ArkFileValidator = ArkFileValidator;
@@ -0,0 +1,19 @@
1
+ import { Scene } from '../../Scene';
2
+ import { SceneSummary } from './Validator';
3
+ import './Exprs';
4
+ import './Stmts';
5
+ import './Values';
6
+ /**
7
+ * The SceneValidator class is responsible for validating a given scene by leveraging the ScenePassMgr.
8
+ * It sets up a context for validation, executes the validation process, and retrieves the summary of the validation.
9
+ *
10
+ * The validate method initializes a new SceneSummary instance, associates it with the current scene context,
11
+ * runs the validation process using the configured manager, and finally returns the generated summary.
12
+ *
13
+ * This class ensures that the validation logic is encapsulated and provides a clean interface for processing scenes.
14
+ */
15
+ export declare class SceneValidator {
16
+ private mgr;
17
+ validate(scene: Scene): SceneSummary;
18
+ }
19
+ //# sourceMappingURL=SceneValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceneValidator.d.ts","sourceRoot":"","sources":["../../../src/pass/validators/SceneValidator.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAEH,YAAY,EACf,MAAM,aAAa,CAAC;AAErB,OAAO,SAAS,CAAC;AACjB,OAAO,SAAS,CAAC;AACjB,OAAO,UAAU,CAAC;AAKlB;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,GAAG,CAOR;IAEH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY;CAOvC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.SceneValidator = void 0;
41
+ const ScenePassMgr_1 = require("../ScenePassMgr");
42
+ const logger_1 = __importStar(require("../../utils/logger"));
43
+ const Validator_1 = require("./Validator");
44
+ const Models_1 = require("./Models");
45
+ require("./Exprs");
46
+ require("./Stmts");
47
+ require("./Values");
48
+ const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'SceneValidator');
49
+ /**
50
+ * The SceneValidator class is responsible for validating a given scene by leveraging the ScenePassMgr.
51
+ * It sets up a context for validation, executes the validation process, and retrieves the summary of the validation.
52
+ *
53
+ * The validate method initializes a new SceneSummary instance, associates it with the current scene context,
54
+ * runs the validation process using the configured manager, and finally returns the generated summary.
55
+ *
56
+ * This class ensures that the validation logic is encapsulated and provides a clean interface for processing scenes.
57
+ */
58
+ class SceneValidator {
59
+ constructor() {
60
+ this.mgr = new ScenePassMgr_1.ScenePassMgr({
61
+ passes: {
62
+ file: [Models_1.ArkFileValidator],
63
+ klass: [Models_1.ArkClassValidator],
64
+ method: [Models_1.ArkMethodValidator],
65
+ },
66
+ dispatcher: Validator_1.ArkValidatorRegistry,
67
+ });
68
+ }
69
+ validate(scene) {
70
+ let summary = new Validator_1.SceneSummary();
71
+ this.mgr.sceneContext().set(Validator_1.SceneSummary, summary);
72
+ this.mgr.run(scene);
73
+ logger.info('validate');
74
+ return this.mgr.sceneContext().remove(Validator_1.SceneSummary);
75
+ }
76
+ }
77
+ exports.SceneValidator = SceneValidator;
@@ -0,0 +1,7 @@
1
+ import { StmtValidator, SummaryReporter } from './Validator';
2
+ import { ArkAssignStmt } from '../../core/base/Stmt';
3
+ export declare class AssignStmtValidator extends StmtValidator<ArkAssignStmt> {
4
+ private static readonly INSTANCE;
5
+ validate(value: ArkAssignStmt, ctx: SummaryReporter): void;
6
+ }
7
+ //# sourceMappingURL=Stmts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stmts.d.ts","sourceRoot":"","sources":["../../../src/pass/validators/Stmts.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAMrD,qBAAa,mBAAoB,SAAQ,aAAa,CAAC,aAAa,CAAC;IACjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAE7D,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI;CAY7D"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.AssignStmtValidator = void 0;
18
+ const Validator_1 = require("./Validator");
19
+ const Stmt_1 = require("../../core/base/Stmt");
20
+ const Ref_1 = require("../../core/base/Ref");
21
+ const Local_1 = require("../../core/base/Local");
22
+ class AssignStmtValidator extends Validator_1.StmtValidator {
23
+ validate(value, ctx) {
24
+ let left = value.getLeftOp();
25
+ if (!((left instanceof Local_1.Local) || (left instanceof Ref_1.AbstractFieldRef))) {
26
+ ctx.error(`must assign to local or field_ref`);
27
+ }
28
+ }
29
+ }
30
+ exports.AssignStmtValidator = AssignStmtValidator;
31
+ AssignStmtValidator.INSTANCE = new AssignStmtValidator();
32
+ (() => {
33
+ AssignStmtValidator.register([Stmt_1.ArkAssignStmt, (v, ctx, mtd) => {
34
+ AssignStmtValidator.INSTANCE.run(v, ctx, mtd);
35
+ }]);
36
+ })();