arkanalyzer 1.0.7 → 1.0.8

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 (170) hide show
  1. package/config/arkanalyzer.json +8 -0
  2. package/docs/IR2ts-stmt.md +81 -0
  3. package/docs/IR2ts.md +82 -0
  4. package/lib/Config.d.ts +9 -1
  5. package/lib/Config.d.ts.map +1 -1
  6. package/lib/Config.js +24 -11
  7. package/lib/Scene.d.ts +49 -42
  8. package/lib/Scene.d.ts.map +1 -1
  9. package/lib/Scene.js +124 -93
  10. package/lib/callgraph/algorithm/AbstractAnalysis.js +1 -1
  11. package/lib/callgraph/common/Statistics.js +1 -1
  12. package/lib/callgraph/model/CallGraph.d.ts +3 -2
  13. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  14. package/lib/callgraph/model/CallGraph.js +16 -6
  15. package/lib/callgraph/model/builder/CallGraphBuilder.js +1 -1
  16. package/lib/callgraph/pointerAnalysis/Pag.d.ts +35 -8
  17. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  18. package/lib/callgraph/pointerAnalysis/Pag.js +93 -12
  19. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +32 -5
  20. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  21. package/lib/callgraph/pointerAnalysis/PagBuilder.js +378 -83
  22. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +3 -0
  23. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  24. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +71 -18
  25. package/lib/core/base/Constant.d.ts +25 -5
  26. package/lib/core/base/Constant.d.ts.map +1 -1
  27. package/lib/core/base/Constant.js +46 -8
  28. package/lib/core/base/Expr.d.ts +45 -40
  29. package/lib/core/base/Expr.d.ts.map +1 -1
  30. package/lib/core/base/Expr.js +239 -153
  31. package/lib/core/base/Local.d.ts +2 -2
  32. package/lib/core/base/Local.d.ts.map +1 -1
  33. package/lib/core/base/Local.js +2 -2
  34. package/lib/core/base/Ref.d.ts +38 -37
  35. package/lib/core/base/Ref.d.ts.map +1 -1
  36. package/lib/core/base/Ref.js +102 -70
  37. package/lib/core/base/Stmt.d.ts +4 -0
  38. package/lib/core/base/Stmt.d.ts.map +1 -1
  39. package/lib/core/base/Stmt.js +12 -1
  40. package/lib/core/base/Type.d.ts +4 -0
  41. package/lib/core/base/Type.d.ts.map +1 -1
  42. package/lib/core/base/Type.js +41 -17
  43. package/lib/core/common/ArkError.d.ts +15 -0
  44. package/lib/core/common/ArkError.d.ts.map +1 -0
  45. package/lib/core/common/ArkError.js +28 -0
  46. package/lib/core/common/ArkIRTransformer.d.ts +7 -3
  47. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  48. package/lib/core/common/ArkIRTransformer.js +46 -20
  49. package/lib/core/common/Builtin.js +1 -1
  50. package/lib/core/common/CfgBuilder.d.ts +12 -0
  51. package/lib/core/common/CfgBuilder.d.ts.map +1 -1
  52. package/lib/core/common/CfgBuilder.js +289 -61
  53. package/lib/core/common/Const.d.ts +15 -10
  54. package/lib/core/common/Const.d.ts.map +1 -1
  55. package/lib/core/common/Const.js +18 -11
  56. package/lib/core/common/DummyMainCreater.d.ts +2 -1
  57. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  58. package/lib/core/common/DummyMainCreater.js +28 -15
  59. package/lib/core/common/EtsConst.d.ts +1 -0
  60. package/lib/core/common/EtsConst.d.ts.map +1 -1
  61. package/lib/core/common/EtsConst.js +2 -1
  62. package/lib/core/common/IRUtils.d.ts +7 -0
  63. package/lib/core/common/IRUtils.d.ts.map +1 -1
  64. package/lib/core/common/IRUtils.js +34 -2
  65. package/lib/core/common/ModelUtils.d.ts +1 -0
  66. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  67. package/lib/core/common/ModelUtils.js +32 -32
  68. package/lib/core/common/TSConst.d.ts +10 -3
  69. package/lib/core/common/TSConst.d.ts.map +1 -1
  70. package/lib/core/common/TSConst.js +11 -4
  71. package/lib/core/common/TypeInference.d.ts +8 -2
  72. package/lib/core/common/TypeInference.d.ts.map +1 -1
  73. package/lib/core/common/TypeInference.js +218 -87
  74. package/lib/core/common/ValueUtil.d.ts +0 -4
  75. package/lib/core/common/ValueUtil.d.ts.map +1 -1
  76. package/lib/core/common/ValueUtil.js +8 -25
  77. package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -1
  78. package/lib/core/dataflow/DataflowSolver.js +2 -4
  79. package/lib/core/dataflow/TiantAnalysis.js +2 -1
  80. package/lib/core/dataflow/Util.d.ts +1 -1
  81. package/lib/core/dataflow/Util.d.ts.map +1 -1
  82. package/lib/core/dataflow/Util.js +8 -7
  83. package/lib/core/graph/BasicBlock.d.ts +41 -0
  84. package/lib/core/graph/BasicBlock.d.ts.map +1 -1
  85. package/lib/core/graph/BasicBlock.js +132 -1
  86. package/lib/core/graph/Cfg.d.ts +30 -1
  87. package/lib/core/graph/Cfg.d.ts.map +1 -1
  88. package/lib/core/graph/Cfg.js +129 -6
  89. package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
  90. package/lib/core/graph/builder/ViewTreeBuilder.js +3 -2
  91. package/lib/core/model/ArkBaseModel.d.ts +8 -0
  92. package/lib/core/model/ArkBaseModel.d.ts.map +1 -1
  93. package/lib/core/model/ArkBaseModel.js +56 -4
  94. package/lib/core/model/ArkClass.d.ts +36 -30
  95. package/lib/core/model/ArkClass.d.ts.map +1 -1
  96. package/lib/core/model/ArkClass.js +79 -40
  97. package/lib/core/model/ArkExport.d.ts +3 -0
  98. package/lib/core/model/ArkExport.d.ts.map +1 -1
  99. package/lib/core/model/ArkExport.js +11 -1
  100. package/lib/core/model/ArkField.d.ts +2 -0
  101. package/lib/core/model/ArkField.d.ts.map +1 -1
  102. package/lib/core/model/ArkField.js +4 -1
  103. package/lib/core/model/ArkFile.d.ts +4 -0
  104. package/lib/core/model/ArkFile.d.ts.map +1 -1
  105. package/lib/core/model/ArkFile.js +20 -0
  106. package/lib/core/model/ArkImport.d.ts +2 -0
  107. package/lib/core/model/ArkImport.d.ts.map +1 -1
  108. package/lib/core/model/ArkImport.js +3 -0
  109. package/lib/core/model/ArkMetadata.d.ts +20 -0
  110. package/lib/core/model/ArkMetadata.d.ts.map +1 -0
  111. package/lib/core/model/ArkMetadata.js +44 -0
  112. package/lib/core/model/ArkMethod.d.ts +156 -53
  113. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  114. package/lib/core/model/ArkMethod.js +309 -54
  115. package/lib/core/model/ArkNamespace.d.ts +4 -0
  116. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  117. package/lib/core/model/ArkNamespace.js +13 -0
  118. package/lib/core/model/ArkSignature.d.ts +11 -5
  119. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  120. package/lib/core/model/ArkSignature.js +38 -18
  121. package/lib/core/model/builder/ArkClassBuilder.d.ts +0 -1
  122. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  123. package/lib/core/model/builder/ArkClassBuilder.js +9 -34
  124. package/lib/core/model/builder/ArkExportBuilder.d.ts.map +1 -1
  125. package/lib/core/model/builder/ArkExportBuilder.js +6 -1
  126. package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -1
  127. package/lib/core/model/builder/ArkFieldBuilder.js +3 -0
  128. package/lib/core/model/builder/ArkFileBuilder.js +1 -1
  129. package/lib/core/model/builder/ArkImportBuilder.d.ts +2 -1
  130. package/lib/core/model/builder/ArkImportBuilder.d.ts.map +1 -1
  131. package/lib/core/model/builder/ArkImportBuilder.js +12 -5
  132. package/lib/core/model/builder/ArkMethodBuilder.d.ts +2 -1
  133. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  134. package/lib/core/model/builder/ArkMethodBuilder.js +87 -47
  135. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  136. package/lib/core/model/builder/ArkNamespaceBuilder.js +2 -0
  137. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  138. package/lib/core/model/builder/builderUtils.js +25 -2
  139. package/lib/save/source/SourceClass.d.ts.map +1 -1
  140. package/lib/save/source/SourceClass.js +4 -0
  141. package/lib/save/source/SourceField.d.ts.map +1 -1
  142. package/lib/save/source/SourceField.js +4 -0
  143. package/lib/save/source/SourceMethod.d.ts.map +1 -1
  144. package/lib/save/source/SourceMethod.js +7 -0
  145. package/lib/save/source/SourceModule.d.ts.map +1 -1
  146. package/lib/save/source/SourceModule.js +14 -9
  147. package/lib/save/source/SourceNamespace.d.ts.map +1 -1
  148. package/lib/save/source/SourceNamespace.js +4 -0
  149. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  150. package/lib/save/source/SourceStmt.js +15 -3
  151. package/lib/save/source/SourceTransformer.d.ts +6 -0
  152. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  153. package/lib/save/source/SourceTransformer.js +72 -41
  154. package/lib/save/source/SourceUtils.d.ts.map +1 -1
  155. package/lib/save/source/SourceUtils.js +3 -2
  156. package/lib/transformer/StaticSingleAssignmentFormer.js +1 -1
  157. package/lib/utils/CfgStructualAnalysis.d.ts +1 -0
  158. package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -1
  159. package/lib/utils/CfgStructualAnalysis.js +42 -8
  160. package/lib/utils/callGraphUtils.d.ts.map +1 -1
  161. package/lib/utils/callGraphUtils.js +7 -10
  162. package/lib/utils/crypto_utils.d.ts +6 -0
  163. package/lib/utils/crypto_utils.d.ts.map +1 -0
  164. package/lib/utils/crypto_utils.js +57 -0
  165. package/lib/utils/entryMethodUtils.js +23 -23
  166. package/lib/utils/getAllFiles.d.ts +1 -1
  167. package/lib/utils/getAllFiles.d.ts.map +1 -1
  168. package/lib/utils/getAllFiles.js +4 -5
  169. package/lib/utils/logger.js +2 -2
  170. package/package.json +3 -2
@@ -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.getMethodAstBody = exports.addInitInConstructor = exports.buildInitMethod = exports.buildDefaultConstructor = exports.MethodParameter = exports.ArrayBindingPatternParameter = exports.ObjectBindingPatternParameter = exports.buildArkMethodFromArkClass = exports.buildDefaultArkMethodFromArkClass = void 0;
43
+ 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("../../common/BodyBuilder");
46
46
  const ViewTreeBuilder_1 = require("../../graph/builder/ViewTreeBuilder");
@@ -60,13 +60,15 @@ const Local_1 = require("../../base/Local");
60
60
  const TSConst_1 = require("../../common/TSConst");
61
61
  const Const_1 = require("../../common/Const");
62
62
  const ArkSignatureBuilder_1 = require("./ArkSignatureBuilder");
63
- const ArkClassBuilder_1 = require("./ArkClassBuilder");
63
+ const IRUtils_1 = require("../../common/IRUtils");
64
+ const ArkError_1 = require("../../common/ArkError");
64
65
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkMethodBuilder');
65
66
  function buildDefaultArkMethodFromArkClass(declaringClass, mtd, sourceFile, node) {
66
67
  mtd.setDeclaringArkClass(declaringClass);
67
68
  const methodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(Const_1.DEFAULT_ARK_METHOD_NAME, true);
68
69
  const methodSignature = new ArkSignature_1.MethodSignature(mtd.getDeclaringArkClass().getSignature(), methodSubSignature);
69
- mtd.setSignature(methodSignature);
70
+ mtd.setImplementationSignature(methodSignature);
71
+ mtd.setLineCol(0);
70
72
  const defaultMethodNode = node ? node : sourceFile;
71
73
  let bodyBuilder = new BodyBuilder_1.BodyBuilder(mtd.getSignature(), defaultMethodNode, mtd, sourceFile);
72
74
  mtd.setBodyBuilder(bodyBuilder);
@@ -78,15 +80,12 @@ function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile,
78
80
  mtd.setAsteriskToken(methodNode.asteriskToken !== undefined);
79
81
  }
80
82
  mtd.setCode(methodNode.getText(sourceFile));
81
- const { line, character } = ohos_typescript_1.default.getLineAndCharacterOfPosition(sourceFile, methodNode.getStart(sourceFile));
82
- mtd.setLine(line + 1);
83
- mtd.setColumn(character + 1);
84
83
  mtd.setModifiers((0, builderUtils_1.buildModifiers)(methodNode));
85
84
  mtd.setDecorators((0, builderUtils_1.buildDecorators)(methodNode, sourceFile));
86
85
  if (methodNode.typeParameters) {
87
86
  mtd.setGenericTypes((0, builderUtils_1.buildTypeParameters)(methodNode.typeParameters, sourceFile, mtd));
88
87
  }
89
- // build MethodSignature
88
+ // build methodDeclareSignatures and methodSignature as well as corresponding positions
90
89
  const methodName = buildMethodName(methodNode, declaringClass, sourceFile, declaringMethod);
91
90
  const methodParameters = [];
92
91
  (0, builderUtils_1.buildParameters)(methodNode.parameters, mtd, sourceFile).forEach((parameter) => {
@@ -98,7 +97,16 @@ function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile,
98
97
  }
99
98
  const methodSubSignature = new ArkSignature_1.MethodSubSignature(methodName, methodParameters, returnType, mtd.isStatic());
100
99
  const methodSignature = new ArkSignature_1.MethodSignature(mtd.getDeclaringArkClass().getSignature(), methodSubSignature);
101
- mtd.setSignature(methodSignature);
100
+ const { line, character } = ohos_typescript_1.default.getLineAndCharacterOfPosition(sourceFile, methodNode.getStart(sourceFile));
101
+ if (isMethodImplementation(methodNode)) {
102
+ mtd.setImplementationSignature(methodSignature);
103
+ mtd.setLine(line + 1);
104
+ mtd.setColumn(character + 1);
105
+ }
106
+ else {
107
+ mtd.setDeclareSignatures(methodSignature);
108
+ mtd.setDeclareLinesAndCols([line + 1], [character + 1]);
109
+ }
102
110
  let bodyBuilder = new BodyBuilder_1.BodyBuilder(mtd.getSignature(), methodNode, mtd, sourceFile);
103
111
  mtd.setBodyBuilder(bodyBuilder);
104
112
  if (mtd.hasBuilderDecorator()) {
@@ -109,28 +117,19 @@ function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile,
109
117
  !mtd.isStatic()) {
110
118
  declaringClass.setViewTree((0, ViewTreeBuilder_1.buildViewTree)(mtd));
111
119
  }
112
- (0, ArkClassBuilder_1.checkAndUpdateMethod)(mtd, declaringClass);
120
+ checkAndUpdateMethod(mtd, declaringClass);
113
121
  declaringClass.addMethod(mtd);
122
+ IRUtils_1.IRUtils.setLeadingComments(mtd, methodNode, sourceFile, mtd.getDeclaringArkFile().getScene().getOptions());
114
123
  }
115
124
  exports.buildArkMethodFromArkClass = buildArkMethodFromArkClass;
116
125
  function buildMethodName(node, declaringClass, sourceFile, declaringMethod) {
117
126
  let name = '';
118
127
  if (ohos_typescript_1.default.isFunctionDeclaration(node) || ohos_typescript_1.default.isFunctionExpression(node)) {
119
- if (node.name) {
120
- name = node.name.text;
121
- }
122
- else {
123
- name = buildAnonymousMethodName(node, declaringClass, declaringMethod);
124
- }
128
+ name = node.name ? node.name.text : buildAnonymousMethodName(node, declaringClass);
125
129
  }
126
130
  else if (ohos_typescript_1.default.isFunctionTypeNode(node)) {
127
- if (node.name) {
128
- //TODO: check name type
129
- name = node.name.getText(sourceFile);
130
- }
131
- else {
132
- name = buildAnonymousMethodName(node, declaringClass, declaringMethod);
133
- }
131
+ //TODO: check name type
132
+ name = node.name ? node.name.getText(sourceFile) : buildAnonymousMethodName(node, declaringClass);
134
133
  }
135
134
  else if (ohos_typescript_1.default.isMethodDeclaration(node) || ohos_typescript_1.default.isMethodSignature(node)) {
136
135
  if (ohos_typescript_1.default.isIdentifier(node.name)) {
@@ -168,17 +167,21 @@ function buildMethodName(node, declaringClass, sourceFile, declaringMethod) {
168
167
  name = 'Set-' + node.name.text;
169
168
  }
170
169
  else if (ohos_typescript_1.default.isArrowFunction(node)) {
171
- name = buildAnonymousMethodName(node, declaringClass, declaringMethod);
170
+ name = buildAnonymousMethodName(node, declaringClass);
171
+ }
172
+ if (declaringMethod !== undefined && !declaringMethod.isDefaultArkMethod()) {
173
+ name = buildNestedMethodName(name, declaringMethod.getName());
172
174
  }
173
175
  return name;
174
176
  }
175
- function buildAnonymousMethodName(node, declaringClass, declaringMethod) {
176
- let declaringMethodName = '';
177
- if (declaringMethod) {
178
- declaringMethodName = declaringMethod.getName() + '-';
177
+ function buildAnonymousMethodName(node, declaringClass) {
178
+ return `${Const_1.ANONYMOUS_METHOD_PREFIX}${declaringClass.getAnonymousMethodNumber()}`;
179
+ }
180
+ function buildNestedMethodName(originName, declaringMethodName) {
181
+ if (originName.startsWith(Const_1.NAME_PREFIX)) {
182
+ return `${originName}${Const_1.NAME_DELIMITER}${declaringMethodName}`;
179
183
  }
180
- const mtdName = 'AnonymousMethod-' + declaringMethodName + declaringClass.getAnonymousMethodNumber();
181
- return mtdName;
184
+ return `${Const_1.NAME_PREFIX}${originName}${Const_1.NAME_DELIMITER}${declaringMethodName}`;
182
185
  }
183
186
  class ObjectBindingPatternParameter {
184
187
  constructor() {
@@ -321,7 +324,8 @@ function buildDefaultConstructor(arkClass) {
321
324
  let returnType = parentConstructor.getReturnType();
322
325
  const methodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.CONSTRUCTOR_NAME, methodParameters, returnType, defaultConstructor.isStatic());
323
326
  const methodSignature = new ArkSignature_1.MethodSignature(defaultConstructor.getDeclaringArkClass().getSignature(), methodSubSignature);
324
- defaultConstructor.setSignature(methodSignature);
327
+ defaultConstructor.setImplementationSignature(methodSignature);
328
+ defaultConstructor.setLineCol(0);
325
329
  const stmts = [];
326
330
  let index = 0;
327
331
  const parameterLocals = [];
@@ -344,7 +348,8 @@ function buildDefaultConstructor(arkClass) {
344
348
  else {
345
349
  const methodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(TSConst_1.CONSTRUCTOR_NAME);
346
350
  const methodSignature = new ArkSignature_1.MethodSignature(defaultConstructor.getDeclaringArkClass().getSignature(), methodSubSignature);
347
- defaultConstructor.setSignature(methodSignature);
351
+ defaultConstructor.setImplementationSignature(methodSignature);
352
+ defaultConstructor.setLineCol(0);
348
353
  if (arkClass.getSuperClass()) {
349
354
  const superClass = arkClass.getSuperClass();
350
355
  const superMethodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.SUPER_NAME, [], Type_1.UnknownType.getInstance());
@@ -366,7 +371,7 @@ function buildDefaultConstructor(arkClass) {
366
371
  cfg.setDeclaringMethod(defaultConstructor);
367
372
  cfg.getStmts().forEach(s => s.setCfg(cfg));
368
373
  defaultConstructor.setBody(new ArkBody_1.ArkBody(locals, cfg));
369
- (0, ArkClassBuilder_1.checkAndUpdateMethod)(defaultConstructor, arkClass);
374
+ checkAndUpdateMethod(defaultConstructor, arkClass);
370
375
  arkClass.addMethod(defaultConstructor);
371
376
  return true;
372
377
  }
@@ -418,22 +423,57 @@ function addInitInConstructor(arkClass) {
418
423
  }
419
424
  }
420
425
  exports.addInitInConstructor = addInitInConstructor;
421
- function getMethodAstBody(arkMethod) {
422
- var _a;
423
- let astNode = (_a = arkMethod.getBodyBuilder()) === null || _a === void 0 ? void 0 : _a.getCfgBuilder().astRoot;
424
- if (astNode === undefined) {
425
- return undefined;
426
- }
427
- if (ohos_typescript_1.default.isFunctionDeclaration(astNode) ||
428
- ohos_typescript_1.default.isMethodDeclaration(astNode) ||
429
- ohos_typescript_1.default.isConstructorDeclaration(astNode) ||
430
- ohos_typescript_1.default.isGetAccessorDeclaration(astNode) ||
431
- ohos_typescript_1.default.isSetAccessorDeclaration(astNode) ||
432
- ohos_typescript_1.default.isFunctionExpression(astNode)) {
433
- return astNode.body;
426
+ function isMethodImplementation(node) {
427
+ if (ohos_typescript_1.default.isFunctionDeclaration(node) ||
428
+ ohos_typescript_1.default.isMethodDeclaration(node) ||
429
+ ohos_typescript_1.default.isConstructorDeclaration(node) ||
430
+ ohos_typescript_1.default.isGetAccessorDeclaration(node) ||
431
+ ohos_typescript_1.default.isSetAccessorDeclaration(node) ||
432
+ ohos_typescript_1.default.isFunctionExpression(node)) {
433
+ if (node.body !== undefined) {
434
+ return true;
435
+ }
436
+ }
437
+ return false;
438
+ }
439
+ exports.isMethodImplementation = isMethodImplementation;
440
+ function checkAndUpdateMethod(method, cls) {
441
+ let presentMethod;
442
+ if (method.isStatic()) {
443
+ presentMethod = cls.getStaticMethodWithName(method.getName());
434
444
  }
435
445
  else {
436
- return undefined;
446
+ presentMethod = cls.getMethodWithName(method.getName());
447
+ }
448
+ if (presentMethod === null) {
449
+ return;
450
+ }
451
+ if (method.validate().errCode !== ArkError_1.ArkErrorCode.OK || presentMethod.validate().errCode !== ArkError_1.ArkErrorCode.OK) {
452
+ return;
453
+ }
454
+ const presentDeclareSignatures = presentMethod.getDeclareSignatures();
455
+ const presentDeclareLineCols = presentMethod.getDeclareLineCols();
456
+ const presentImplSignature = presentMethod.getImplementationSignature();
457
+ const newDeclareSignature = method.getDeclareSignatures();
458
+ const newDeclareLineCols = method.getDeclareLineCols();
459
+ const newImplSignature = method.getImplementationSignature();
460
+ if (presentDeclareSignatures !== null && presentImplSignature === null) {
461
+ if (newDeclareSignature === null || presentMethod.getDeclareSignatureIndex(newDeclareSignature[0]) >= 0) {
462
+ method.setDeclareSignatures(presentDeclareSignatures);
463
+ method.setDeclareLineCols(presentDeclareLineCols);
464
+ }
465
+ else {
466
+ method.setDeclareSignatures(presentDeclareSignatures.concat(newDeclareSignature));
467
+ method.setDeclareLineCols(presentDeclareLineCols.concat(newDeclareLineCols));
468
+ }
469
+ return;
470
+ }
471
+ if (presentDeclareSignatures === null && presentImplSignature !== null) {
472
+ if (newImplSignature === null) {
473
+ method.setImplementationSignature(presentImplSignature);
474
+ method.setLineCol(presentMethod.getLineCol());
475
+ }
476
+ return;
437
477
  }
438
478
  }
439
- exports.getMethodAstBody = getMethodAstBody;
479
+ exports.checkAndUpdateMethod = checkAndUpdateMethod;
@@ -1 +1 @@
1
- {"version":3,"file":"ArkNamespaceBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkNamespaceBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAU/C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,GAAG,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,QAsDnJ"}
1
+ {"version":3,"file":"ArkNamespaceBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkNamespaceBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAW/C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,GAAG,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,QAuDnJ"}
@@ -53,6 +53,7 @@ const ArkExportBuilder_1 = require("./ArkExportBuilder");
53
53
  const ArkClass_1 = require("../ArkClass");
54
54
  const ArkMethod_1 = require("../ArkMethod");
55
55
  const ArkSignature_1 = require("../ArkSignature");
56
+ const IRUtils_1 = require("../../common/IRUtils");
56
57
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkNamespaceBuilder');
57
58
  function buildArkNamespace(node, declaringInstance, ns, sourceFile) {
58
59
  var _a;
@@ -101,6 +102,7 @@ function buildArkNamespace(node, declaringInstance, ns, sourceFile) {
101
102
  else {
102
103
  logger.warn("JSDocNamespaceDeclaration found.");
103
104
  }
105
+ IRUtils_1.IRUtils.setLeadingComments(ns, node, sourceFile, ns.getDeclaringArkFile().getScene().getOptions());
104
106
  }
105
107
  exports.buildArkNamespace = buildArkNamespace;
106
108
  // TODO: check and update
@@ -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,EAIH,WAAW,EAEX,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;AAO5B,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,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQvG;AAED,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,EAAE,CAmB/G;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,qBA4GvI;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAyBpF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,QAM3F;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAC9E,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAkF9E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,QA8CjD"}
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,EAIH,WAAW,EAEX,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;AAO5B,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,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBvG;AAED,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,EAAE,CAmB/G;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,qBA4GvI;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAmCpF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,QAM3F;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAC9E,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAkF9E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,QA8CjD"}
@@ -130,7 +130,20 @@ function buildHeritageClauses(heritageClauses) {
130
130
  let heritageClausesMap = new Map();
131
131
  heritageClauses === null || heritageClauses === void 0 ? void 0 : heritageClauses.forEach((heritageClause) => {
132
132
  heritageClause.types.forEach((type) => {
133
- heritageClausesMap.set(type.getText(), ohos_typescript_1.default.SyntaxKind[heritageClause.token]);
133
+ let heritageClauseName = '';
134
+ if (type.typeArguments) {
135
+ heritageClauseName = type.getText();
136
+ }
137
+ else if (ohos_typescript_1.default.isIdentifier(type.expression)) {
138
+ heritageClauseName = type.expression.text;
139
+ }
140
+ else if (ohos_typescript_1.default.isPropertyAccessExpression(type.expression)) {
141
+ heritageClauseName = handlePropertyAccessExpression(type.expression);
142
+ }
143
+ else {
144
+ heritageClauseName = type.getText();
145
+ }
146
+ heritageClausesMap.set(heritageClauseName, ohos_typescript_1.default.SyntaxKind[heritageClause.token]);
134
147
  });
135
148
  });
136
149
  return heritageClausesMap;
@@ -272,7 +285,17 @@ function buildGenericType(type, arkInstance) {
272
285
  if (!gType) {
273
286
  gType = (_b = arkInstance.getDeclaringArkClass().getGenericsTypes()) === null || _b === void 0 ? void 0 : _b.find(f => f.getName() === typeName);
274
287
  }
275
- return gType !== null && gType !== void 0 ? gType : urType;
288
+ if (gType) {
289
+ return gType;
290
+ }
291
+ const types = urType.getGenericTypes();
292
+ for (let i = 0; i < types.length; i++) {
293
+ const mayType = types[i];
294
+ if (mayType instanceof Type_1.UnclearReferenceType) {
295
+ types[i] = replace(mayType);
296
+ }
297
+ }
298
+ return urType;
276
299
  }
277
300
  if (type instanceof Type_1.UnclearReferenceType) {
278
301
  return replace(type);
@@ -1 +1 @@
1
- {"version":3,"file":"SourceClass.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceClass.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAiB,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAOhD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACvC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC;IACxB,OAAO,CAAC,WAAW,CAAoB;gBAEpB,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAE,MAAW;IAM9C,wBAAwB,IAAI,YAAY,GAAG,SAAS;IAIpD,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,MAAM;IAoDd,YAAY,IAAI,MAAM;IAI7B,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,eAAe;IAmBvB,SAAS,CAAC,YAAY,IAAI,IAAI,EAAE;IAgBhC,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,oBAAoB;CAU/B;AAED,qBAAa,kBAAmB,SAAQ,WAAW;gBAC5B,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAE,MAAW;IAI9C,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,MAAM;IAKd,YAAY,IAAI,MAAM;CAmBhC"}
1
+ {"version":3,"file":"SourceClass.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceClass.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAiB,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAOhD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACvC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC;IACxB,OAAO,CAAC,WAAW,CAAoB;gBAEpB,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAE,MAAW;IAM9C,wBAAwB,IAAI,YAAY,GAAG,SAAS;IAIpD,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,MAAM;IAsDd,YAAY,IAAI,MAAM;IAI7B,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,eAAe;IAmBvB,SAAS,CAAC,YAAY,IAAI,IAAI,EAAE;IAgBhC,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,oBAAoB;CAU/B;AAED,qBAAa,kBAAmB,SAAQ,WAAW;gBAC5B,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAE,MAAW;IAI9C,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,MAAM;IAKd,YAAY,IAAI,MAAM;CAmBhC"}
@@ -24,6 +24,7 @@ const SourceTransformer_1 = require("./SourceTransformer");
24
24
  const SourceUtils_1 = require("./SourceUtils");
25
25
  const Const_1 = require("../../core/common/Const");
26
26
  const ArkField_1 = require("../../core/model/ArkField");
27
+ const ArkMetadata_1 = require("../../core/model/ArkMetadata");
27
28
  /**
28
29
  * @category save
29
30
  */
@@ -41,6 +42,9 @@ class SourceClass extends SourceBase_1.SourceBase {
41
42
  }
42
43
  dump() {
43
44
  this.printer.clear();
45
+ (this.cls.getMetadata(ArkMetadata_1.ArkMetadataKind.LEADING_COMMENTS) || []).forEach((comment) => {
46
+ this.printer.writeIndent().writeLine(comment);
47
+ });
44
48
  if (this.cls.getCategory() === ArkClass_1.ClassCategory.OBJECT) {
45
49
  return this.dumpObject();
46
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SourceField.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceField.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAiB,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACvC,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,WAAW,CAAsB;gBAEtB,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAa,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAOlF,OAAO,IAAI,MAAM;IAGjB,IAAI,IAAI,MAAM;IAiCd,YAAY,IAAI,MAAM;CAGhC"}
1
+ {"version":3,"file":"SourceField.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceField.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAiB,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACvC,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,WAAW,CAAsB;gBAEtB,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAa,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAOlF,OAAO,IAAI,MAAM;IAGjB,IAAI,IAAI,MAAM;IAoCd,YAAY,IAAI,MAAM;CAGhC"}
@@ -19,6 +19,7 @@ const ArkField_1 = require("../../core/model/ArkField");
19
19
  const SourceBase_1 = require("./SourceBase");
20
20
  const SourceTransformer_1 = require("./SourceTransformer");
21
21
  const Type_1 = require("../../core/base/Type");
22
+ const ArkMetadata_1 = require("../../core/model/ArkMetadata");
22
23
  /**
23
24
  * @category save
24
25
  */
@@ -34,6 +35,9 @@ class SourceField extends SourceBase_1.SourceBase {
34
35
  }
35
36
  dump() {
36
37
  this.printer.clear();
38
+ (this.field.getMetadata(ArkMetadata_1.ArkMetadataKind.LEADING_COMMENTS) || []).forEach((comment) => {
39
+ this.printer.writeIndent().writeLine(comment);
40
+ });
37
41
  this.printDecorator(this.field.getDecorators());
38
42
  this.printer.writeIndent();
39
43
  if (this.field.getCategory() !== ArkField_1.FieldCategory.ENUM_MEMBER) {
@@ -1 +1 @@
1
- {"version":3,"file":"SourceMethod.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceMethod.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IACxC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAoB;gBAEpB,MAAM,EAAE,SAAS,EAAE,MAAM,GAAE,MAAW;IAOlD,wBAAwB,IAAI,YAAY,GAAG,SAAS;IAIpD,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAItC,IAAI,IAAI,MAAM;IAUd,YAAY,IAAI,MAAM;IAItB,OAAO,IAAI,MAAM;IAoBjB,iBAAiB,IAAI,UAAU,EAAE;IAKxC,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,SAAS;IAKjB,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IA+CjD,yBAAyB,IAAI,MAAM;IAuB1C,OAAO,CAAC,aAAa;CAQxB"}
1
+ {"version":3,"file":"SourceMethod.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceMethod.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IACxC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAoB;gBAEpB,MAAM,EAAE,SAAS,EAAE,MAAM,GAAE,MAAW;IAOlD,wBAAwB,IAAI,YAAY,GAAG,SAAS;IAIpD,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAItC,IAAI,IAAI,MAAM;IAad,YAAY,IAAI,MAAM;IAItB,OAAO,IAAI,MAAM;IAuBjB,iBAAiB,IAAI,UAAU,EAAE;IAKxC,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,SAAS;IAKjB,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IA+CjD,yBAAyB,IAAI,MAAM;IAuB1C,OAAO,CAAC,aAAa;CAQxB"}
@@ -21,6 +21,7 @@ const SourceBase_1 = require("./SourceBase");
21
21
  const SourceBody_1 = require("./SourceBody");
22
22
  const SourceTransformer_1 = require("./SourceTransformer");
23
23
  const SourceUtils_1 = require("./SourceUtils");
24
+ const ArkMetadata_1 = require("../../core/model/ArkMetadata");
24
25
  /**
25
26
  * @category save
26
27
  */
@@ -39,6 +40,9 @@ class SourceMethod extends SourceBase_1.SourceBase {
39
40
  }
40
41
  dump() {
41
42
  this.printer.clear();
43
+ (this.method.getMetadata(ArkMetadata_1.ArkMetadataKind.LEADING_COMMENTS) || []).forEach((comment) => {
44
+ this.printer.writeIndent().writeLine(comment);
45
+ });
42
46
  if (!this.method.isDefaultArkMethod()) {
43
47
  this.printMethod(this.method);
44
48
  }
@@ -52,6 +56,9 @@ class SourceMethod extends SourceBase_1.SourceBase {
52
56
  }
53
57
  getLine() {
54
58
  let line = this.method.getLine();
59
+ if (line === null) {
60
+ line = 0;
61
+ }
55
62
  if (line > 0) {
56
63
  return line;
57
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SourceModule.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceModule.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAc,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,gBAAiB,SAAQ,UAAU;IAC5C,IAAI,EAAE,UAAU,CAAC;gBAEE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAE,MAAW;IAKjD,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,MAAM;IA4Cd,YAAY,IAAI,MAAM;CAGhC;AAED,qBAAa,gBAAiB,SAAQ,UAAU;IAC5C,IAAI,EAAE,UAAU,CAAC;gBAEE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAE,MAAW;IAKjD,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,MAAM;IAuDd,YAAY,IAAI,MAAM;CAGhC"}
1
+ {"version":3,"file":"SourceModule.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceModule.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAc,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,gBAAiB,SAAQ,UAAU;IAC5C,IAAI,EAAE,UAAU,CAAC;gBAEE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAE,MAAW;IAKjD,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,MAAM;IAuCd,YAAY,IAAI,MAAM;CAGhC;AAED,qBAAa,gBAAiB,SAAQ,UAAU;IAC5C,IAAI,EAAE,UAAU,CAAC;gBAEE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAE,MAAW;IAKjD,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,MAAM;IAwCd,YAAY,IAAI,MAAM;CAGhC"}
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.SourceImportInfo = exports.SourceExportInfo = void 0;
18
18
  const ArkBaseModel_1 = require("../../core/model/ArkBaseModel");
19
19
  const ArkExport_1 = require("../../core/model/ArkExport");
20
+ const ArkMetadata_1 = require("../../core/model/ArkMetadata");
20
21
  const SourceBase_1 = require("./SourceBase");
21
22
  class SourceExportInfo extends SourceBase_1.SourceBase {
22
23
  constructor(info, indent = '') {
@@ -29,21 +30,24 @@ class SourceExportInfo extends SourceBase_1.SourceBase {
29
30
  dump() {
30
31
  var _a;
31
32
  this.printer.clear();
32
- if (((_a = this.info.getArkExport()) === null || _a === void 0 ? void 0 : _a.containsModifier(ArkBaseModel_1.ModifierType.EXPORT)) || this.info.getExportClauseType() === ArkExport_1.ExportType.LOCAL) {
33
+ (this.info.getMetadata(ArkMetadata_1.ArkMetadataKind.LEADING_COMMENTS) || []).forEach((comment) => {
34
+ this.printer.writeIndent().writeLine(comment);
35
+ });
36
+ if (!this.info.getFrom() &&
37
+ (((_a = this.info.getArkExport()) === null || _a === void 0 ? void 0 : _a.containsModifier(ArkBaseModel_1.ModifierType.EXPORT)) ||
38
+ this.info.getExportClauseType() === ArkExport_1.ExportType.LOCAL ||
39
+ this.info.getExportClauseType() === ArkExport_1.ExportType.TYPE)) {
33
40
  return this.printer.toString();
34
41
  }
35
42
  if (this.info.getExportClauseName() === '*') {
36
43
  // just like: export * as xx from './yy'
37
- if (this.info.getNameBeforeAs() &&
38
- this.info.getNameBeforeAs() !== '*') {
44
+ if (this.info.getNameBeforeAs() && this.info.getNameBeforeAs() !== '*') {
39
45
  this.printer
40
46
  .writeIndent()
41
47
  .write(`export ${this.info.getNameBeforeAs()} as ${this.info.getExportClauseName()}`);
42
48
  }
43
49
  else {
44
- this.printer
45
- .writeIndent()
46
- .write(`export ${this.info.getExportClauseName()}`);
50
+ this.printer.writeIndent().write(`export ${this.info.getExportClauseName()}`);
47
51
  }
48
52
  }
49
53
  else {
@@ -75,6 +79,9 @@ class SourceImportInfo extends SourceBase_1.SourceBase {
75
79
  return this.info.getOriginTsPosition().getLineNo();
76
80
  }
77
81
  dump() {
82
+ (this.info.getMetadata(ArkMetadata_1.ArkMetadataKind.LEADING_COMMENTS) || []).forEach((comment) => {
83
+ this.printer.writeIndent().writeLine(comment);
84
+ });
78
85
  if (this.info.getImportType() === 'Identifier') {
79
86
  // sample: import fs from 'fs'
80
87
  this.printer
@@ -108,9 +115,7 @@ class SourceImportInfo extends SourceBase_1.SourceBase {
108
115
  }
109
116
  else {
110
117
  // sample: import '../xxx'
111
- this.printer
112
- .writeIndent()
113
- .writeLine(`import '${this.info.getFrom()}';`);
118
+ this.printer.writeIndent().writeLine(`import '${this.info.getFrom()}';`);
114
119
  }
115
120
  return this.printer.toString();
116
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SourceNamespace.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceNamespace.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAQ,UAAU,EAAE,MAAM,cAAc,CAAC;AAMhD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC3C,EAAE,EAAE,YAAY,CAAC;gBAEE,EAAE,EAAE,YAAY,EAAE,MAAM,GAAE,MAAW;IAKjD,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,MAAM;IA2Dd,YAAY,IAAI,MAAM;CAGhC"}
1
+ {"version":3,"file":"SourceNamespace.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceNamespace.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAQ,UAAU,EAAE,MAAM,cAAc,CAAC;AAMhD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC3C,EAAE,EAAE,YAAY,CAAC;gBAEE,EAAE,EAAE,YAAY,EAAE,MAAM,GAAE,MAAW;IAKjD,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,MAAM;IA8Dd,YAAY,IAAI,MAAM;CAGhC"}
@@ -15,6 +15,7 @@
15
15
  */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.SourceNamespace = void 0;
18
+ const ArkMetadata_1 = require("../../core/model/ArkMetadata");
18
19
  const SourceBase_1 = require("./SourceBase");
19
20
  const SourceClass_1 = require("./SourceClass");
20
21
  const SourceMethod_1 = require("./SourceMethod");
@@ -32,6 +33,9 @@ class SourceNamespace extends SourceBase_1.SourceBase {
32
33
  return this.ns.getLine();
33
34
  }
34
35
  dump() {
36
+ (this.ns.getMetadata(ArkMetadata_1.ArkMetadataKind.LEADING_COMMENTS) || []).forEach((comment) => {
37
+ this.printer.writeIndent().writeLine(comment);
38
+ });
35
39
  this.printer
36
40
  .writeIndent()
37
41
  .writeSpace(this.modifiersToString(this.ns.getModifiers()))
@@ -1 +1 @@
1
- {"version":3,"file":"SourceStmt.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceStmt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SourceStmt.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceStmt.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,8 @@ const SourceTransformer_1 = require("./SourceTransformer");
50
50
  const SourceUtils_1 = require("./SourceUtils");
51
51
  const ValueUtil_1 = require("../../core/common/ValueUtil");
52
52
  const ArkClass_1 = require("../../core/model/ArkClass");
53
+ const ArkBaseModel_1 = require("../../core/model/ArkBaseModel");
54
+ const ArkMetadata_1 = require("../../core/model/ArkMetadata");
53
55
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'SourceStmt');
54
56
  const IGNOR_TYPES = new Set(['any', 'Map', 'Set']);
55
57
  class SourceStmt {
@@ -75,10 +77,15 @@ class SourceStmt {
75
77
  beforeDump() { }
76
78
  afterDump() { }
77
79
  dumpTs() {
80
+ let content = [];
81
+ let comments = this.original.getMetadata(ArkMetadata_1.ArkMetadataKind.LEADING_COMMENTS) || [];
82
+ comments.forEach((v) => {
83
+ content.push(`${this.printer.getIndent()}${v}\n`);
84
+ });
78
85
  if (this.text.length > 0) {
79
- return `${this.printer.getIndent()}${this.text}\n`;
86
+ content.push(`${this.printer.getIndent()}${this.text}\n`);
80
87
  }
81
- return ``;
88
+ return content.join('');
82
89
  }
83
90
  get printer() {
84
91
  return this.context.getPrinter();
@@ -718,7 +725,12 @@ class SourceTypeAliasStmt extends SourceStmt {
718
725
  this.aliasType = aliasType;
719
726
  }
720
727
  transfer2ts() {
721
- this.setText(`type ${this.aliasType.getName()} = ${this.transformer.typeToString(this.aliasType.getOriginalType())};`);
728
+ let modifier = '';
729
+ let modifiersArray = (0, ArkBaseModel_1.modifiers2stringArray)(this.aliasType.getModifiers());
730
+ if (modifiersArray.length > 0) {
731
+ modifier = `${modifiersArray.join(' ')} `;
732
+ }
733
+ this.setText(`${modifier}type ${this.aliasType.getName()} = ${this.transformer.typeToString(this.aliasType.getOriginalType())};`);
722
734
  }
723
735
  }
724
736
  exports.SourceTypeAliasStmt = SourceTypeAliasStmt;
@@ -26,6 +26,7 @@ export declare class SourceTransformer {
26
26
  private anonymousClassToString;
27
27
  instanceInvokeExprToString(invokeExpr: ArkInstanceInvokeExpr): string;
28
28
  staticInvokeExprToString(invokeExpr: ArkStaticInvokeExpr): string;
29
+ private genericTypesToString;
29
30
  typeArrayToString(types: Type[], split?: string): string;
30
31
  static constToString(value: Constant): string;
31
32
  private exprToString;
@@ -33,5 +34,10 @@ export declare class SourceTransformer {
33
34
  valueToString(value: Value, operator?: string): string;
34
35
  literalObjectToString(type: ClassType): string;
35
36
  typeToString(type: Type): string;
37
+ private literalType2string;
38
+ private unionType2string;
39
+ private arrayType2string;
40
+ private unclearReferenceType2string;
41
+ private classType2string;
36
42
  }
37
43
  //# sourceMappingURL=SourceTransformer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SourceTransformer.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAMH,qBAAqB,EAKrB,mBAAmB,EAKtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAiB,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,OAAO,EAEH,SAAS,EAMT,IAAI,EAKP,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAmE,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AASnD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D,MAAM,WAAW,kBAAkB;IAC/B,UAAU,IAAI,OAAO,CAAC;IACtB,wBAAwB,IAAI,YAAY,GAAG,SAAS,CAAC;IAErD,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;IAExD,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI,CAAC;IAErD,UAAU,IAAI,aAAa,CAAC;IAE5B,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAEpC,iBAAiB,IAAI,OAAO,CAAC;CAChC;AAED,qBAAa,iBAAiB;IAC1B,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAE1B,OAAO,EAAE,kBAAkB;IAIvC,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,sBAAsB;IAKvB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM;IAiBrE,wBAAwB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM;IAwDjE,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,GAAE,MAAa,GAAG,MAAM;WASvD,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAQpD,OAAO,CAAC,YAAY;IA2Db,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;IA8BvC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAiDtD,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAW9C,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;CAmF1C"}
1
+ {"version":3,"file":"SourceTransformer.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAMH,qBAAqB,EAKrB,mBAAmB,EAKtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAiB,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,OAAO,EAEH,SAAS,EAMT,IAAI,EAKP,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAmE,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AASnD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D,MAAM,WAAW,kBAAkB;IAC/B,UAAU,IAAI,OAAO,CAAC;IAEtB,wBAAwB,IAAI,YAAY,GAAG,SAAS,CAAC;IAErD,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;IAExD,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI,CAAC;IAErD,UAAU,IAAI,aAAa,CAAC;IAE5B,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAEpC,iBAAiB,IAAI,OAAO,CAAC;CAChC;AAED,qBAAa,iBAAiB;IAC1B,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAE1B,OAAO,EAAE,kBAAkB;IAIvC,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,sBAAsB;IAKvB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM;IAkBrE,wBAAwB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM;IA0DxE,OAAO,CAAC,oBAAoB;IAYrB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,GAAE,MAAa,GAAG,MAAM;WASvD,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAQpD,OAAO,CAAC,YAAY;IA2Db,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;IA8BvC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAiDtD,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAW9C,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAoDvC,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,gBAAgB;CAkB3B"}