arkanalyzer 1.0.36 → 1.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Scene.js +5 -5
- package/lib/callgraph/algorithm/AbstractAnalysis.js +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +1 -3
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +4 -37
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +9 -4
- package/lib/core/base/Local.d.ts.map +1 -1
- package/lib/core/base/Local.js +5 -0
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +0 -10
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +14 -18
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +10 -12
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +3 -4
- package/lib/core/common/SdkUtils.d.ts +1 -1
- package/lib/core/common/SdkUtils.d.ts.map +1 -1
- package/lib/core/common/SdkUtils.js +12 -12
- package/lib/core/common/TypeInference.d.ts +2 -1
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +23 -13
- package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/TrapBuilder.js +20 -15
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/ViewTreeBuilder.js +9 -5
- package/lib/core/model/ArkImport.js +1 -1
- package/lib/core/model/ArkMethod.d.ts +2 -0
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +37 -28
- package/lib/core/model/builder/ArkClassBuilder.js +12 -3
- package/lib/core/model/builder/ArkFieldBuilder.js +2 -2
- package/lib/core/model/builder/ArkFileBuilder.js +2 -2
- package/lib/core/model/builder/ArkNamespaceBuilder.js +4 -4
- package/lib/save/JsonPrinter.d.ts.map +1 -1
- package/lib/save/JsonPrinter.js +50 -32
- package/lib/save/base/PrinterUtils.d.ts +1 -0
- package/lib/save/base/PrinterUtils.d.ts.map +1 -1
- package/lib/save/base/PrinterUtils.js +4 -0
- package/lib/save/source/SourceStmt.d.ts +1 -0
- package/lib/save/source/SourceStmt.d.ts.map +1 -1
- package/lib/save/source/SourceStmt.js +11 -2
- package/package.json +2 -2
|
@@ -144,7 +144,7 @@ class TypeInference {
|
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
else if (leftOpType instanceof Type_1.AnnotationNamespaceType) {
|
|
147
|
-
type = this.
|
|
147
|
+
type = this.inferBaseType(leftOpType.getOriginType(), declaringArkClass);
|
|
148
148
|
}
|
|
149
149
|
else if (leftOpType instanceof Type_1.UnclearReferenceType) {
|
|
150
150
|
type = this.inferUnclearRefType(leftOpType, declaringArkClass);
|
|
@@ -152,7 +152,7 @@ class TypeInference {
|
|
|
152
152
|
return type;
|
|
153
153
|
}
|
|
154
154
|
static inferTypeInMethod(arkMethod) {
|
|
155
|
-
var _a;
|
|
155
|
+
var _a, _b;
|
|
156
156
|
const arkClass = arkMethod.getDeclaringArkClass();
|
|
157
157
|
this.inferGenericType(arkMethod.getGenericTypes(), arkClass);
|
|
158
158
|
const signatures = [];
|
|
@@ -173,6 +173,15 @@ class TypeInference {
|
|
|
173
173
|
signatures.forEach(s => this.inferSignatureReturnType(s, arkMethod));
|
|
174
174
|
return;
|
|
175
175
|
}
|
|
176
|
+
(_b = body.getUsedGlobals()) === null || _b === void 0 ? void 0 : _b.forEach((value, key) => {
|
|
177
|
+
if (value instanceof Ref_1.GlobalRef && !value.getRef()) {
|
|
178
|
+
const arkExport = ModelUtils_1.ModelUtils.findGlobalRef(key, arkMethod);
|
|
179
|
+
if (arkExport instanceof Local_1.Local) {
|
|
180
|
+
arkExport.getUsedStmts().push(...value.getUsedStmts());
|
|
181
|
+
value.setRef(arkExport);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
});
|
|
176
185
|
const cfg = body.getCfg();
|
|
177
186
|
for (const block of cfg.getBlocks()) {
|
|
178
187
|
for (const stmt of block.getStmts()) {
|
|
@@ -696,7 +705,7 @@ class TypeInference {
|
|
|
696
705
|
propertyType = new Type_1.EnumValueType(property.getSignature(), constant);
|
|
697
706
|
}
|
|
698
707
|
else {
|
|
699
|
-
propertyType = property.getType();
|
|
708
|
+
propertyType = this.replaceTypeWithReal(property.getType(), baseType.getRealGenericTypes());
|
|
700
709
|
}
|
|
701
710
|
}
|
|
702
711
|
else if (property) {
|
|
@@ -720,15 +729,18 @@ class TypeInference {
|
|
|
720
729
|
* @returns
|
|
721
730
|
*/
|
|
722
731
|
static inferBaseType(baseName, arkClass) {
|
|
723
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
732
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
724
733
|
if (TSConst_1.SUPER_NAME === baseName) {
|
|
725
734
|
return this.parseArkExport2Type(arkClass.getSuperClass());
|
|
726
735
|
}
|
|
727
|
-
|
|
736
|
+
else if (TSConst_1.DEFAULT === baseName) {
|
|
737
|
+
return this.parseArkExport2Type((_a = arkClass.getDeclaringArkFile().getExportInfoBy(TSConst_1.DEFAULT)) === null || _a === void 0 ? void 0 : _a.getArkExport());
|
|
738
|
+
}
|
|
739
|
+
const field = (_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(baseName);
|
|
728
740
|
if (field && !this.isUnclearType(field.getType())) {
|
|
729
741
|
return field.getType();
|
|
730
742
|
}
|
|
731
|
-
let arkExport = (
|
|
743
|
+
let arkExport = (_o = (_l = (_k = (_f = ModelUtils_1.ModelUtils.getClassWithName(baseName, arkClass)) !== null && _f !== void 0 ? _f : (_j = (_h = (_g = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _g === void 0 ? void 0 : _g.getDefaultArkMethod()) === null || _h === void 0 ? void 0 : _h.getBody()) === null || _j === void 0 ? void 0 : _j.getAliasTypeByName(baseName)) !== null && _k !== void 0 ? _k : ModelUtils_1.ModelUtils.getNamespaceWithName(baseName, arkClass)) !== null && _l !== void 0 ? _l : (_m = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _m === void 0 ? void 0 : _m.getMethodWithName(baseName)) !== null && _o !== void 0 ? _o : ModelUtils_1.ModelUtils.getArkExportInImportInfoWithName(baseName, arkClass.getDeclaringArkFile());
|
|
732
744
|
if (!arkExport && !arkClass.getDeclaringArkFile().getImportInfoBy(baseName)) {
|
|
733
745
|
arkExport = arkClass.getDeclaringArkFile().getScene().getSdkGlobal(baseName);
|
|
734
746
|
}
|
|
@@ -737,14 +749,12 @@ class TypeInference {
|
|
|
737
749
|
static inferTypeByName(typeName, arkClass) {
|
|
738
750
|
var _a, _b, _c, _d, _e;
|
|
739
751
|
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());
|
|
740
|
-
if (arkExport
|
|
741
|
-
return this.parseArkExport2Type(arkExport);
|
|
742
|
-
}
|
|
743
|
-
if (!arkClass.getDeclaringArkFile().getImportInfoBy(typeName)) {
|
|
752
|
+
if (!arkExport && !arkClass.getDeclaringArkFile().getImportInfoBy(typeName)) {
|
|
744
753
|
arkExport = arkClass.getDeclaringArkFile().getScene().getSdkGlobal(typeName);
|
|
745
754
|
}
|
|
746
|
-
|
|
747
|
-
|
|
755
|
+
const type = this.parseArkExport2Type(arkExport);
|
|
756
|
+
if (type instanceof Type_1.ClassType || type instanceof Type_1.AliasType) {
|
|
757
|
+
return type;
|
|
748
758
|
}
|
|
749
759
|
return null;
|
|
750
760
|
}
|
|
@@ -850,7 +860,7 @@ class TypeInference {
|
|
|
850
860
|
.getMethodSignature()
|
|
851
861
|
.getMethodSubSignature()
|
|
852
862
|
.getParameters()
|
|
853
|
-
.filter(p => !p.getName().startsWith(Const_1.LEXICAL_ENV_NAME_PREFIX))
|
|
863
|
+
.filter(p => !p.getName().startsWith(Const_1.LEXICAL_ENV_NAME_PREFIX) && this.isUnclearType(p.getType()))
|
|
854
864
|
.forEach((p, i) => {
|
|
855
865
|
var _a;
|
|
856
866
|
let type = (_a = params === null || params === void 0 ? void 0 : params[i]) === null || _a === void 0 ? void 0 : _a.getType();
|
|
@@ -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;
|
|
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;AAavC,OAAO,EAAE,YAAY,EAAuB,MAAM,cAAc,CAAC;AAKjE;;GAEG;AACH,qBAAa,WAAW;IACb,UAAU,CACb,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EACrD,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC,EACzC,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,GAC/B,IAAI,EAAE;IAiET,OAAO,CAAC,qBAAqB;IAmD7B,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,QAAQ;CAgBnB"}
|
|
@@ -181,22 +181,24 @@ class TrapBuilder {
|
|
|
181
181
|
const currBlock = blockBuilderToCfgBlock.get(currBlockBuilder);
|
|
182
182
|
bfsBlocks.push(currBlock);
|
|
183
183
|
const childList = currBlockBuilder.nexts;
|
|
184
|
-
if (childList.length === 0 || (childList.length !== 0 && childList[0] === endBlockBuilder)) {
|
|
185
|
-
if (childList[0] === endBlockBuilder) {
|
|
186
|
-
tailBlocks.push(currBlock);
|
|
187
|
-
continue;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
184
|
if (childList.length !== 0) {
|
|
191
185
|
for (const child of childList) {
|
|
192
|
-
|
|
186
|
+
// A tail block's successor may be within the traversal range
|
|
187
|
+
if (child === endBlockBuilder) {
|
|
188
|
+
tailBlocks.push(currBlock);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
queue.push(child);
|
|
192
|
+
}
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
|
+
else {
|
|
196
|
+
tailBlocks.push(currBlock);
|
|
197
|
+
}
|
|
195
198
|
}
|
|
196
199
|
return { bfsBlocks, tailBlocks };
|
|
197
200
|
}
|
|
198
201
|
copyFinallyBlocks(finallyBfsBlocks, finallyTailBlocks, basicBlockSet, arkIRTransformer, blockBuilderToCfgBlock) {
|
|
199
|
-
var _a;
|
|
200
202
|
const copyFinallyBfsBlocks = this.copyBlocks(finallyBfsBlocks);
|
|
201
203
|
const caughtExceptionRef = new Ref_1.ArkCaughtExceptionRef(Type_1.UnknownType.getInstance());
|
|
202
204
|
const { value: exceptionValue, stmts: exceptionAssignStmts } = arkIRTransformer.generateAssignStmtForValue(caughtExceptionRef, [Position_1.FullPosition.DEFAULT]);
|
|
@@ -205,19 +207,16 @@ class TrapBuilder {
|
|
|
205
207
|
copyFinallyBfsBlocks[0].getPredecessors().splice(0, finallyPredecessorsCnt);
|
|
206
208
|
const throwStmt = new Stmt_1.ArkThrowStmt(exceptionValue);
|
|
207
209
|
let copyFinallyTailBlocks = copyFinallyBfsBlocks.splice(copyFinallyBfsBlocks.length - finallyTailBlocks.length, finallyTailBlocks.length);
|
|
208
|
-
copyFinallyTailBlocks.forEach((copyFinallyTailBlock) => {
|
|
209
|
-
const successorsCnt = copyFinallyTailBlock.getSuccessors().length;
|
|
210
|
-
copyFinallyTailBlock.getSuccessors().splice(0, successorsCnt);
|
|
211
|
-
});
|
|
212
210
|
if (copyFinallyTailBlocks.length > 1) {
|
|
213
211
|
const newCopyFinallyTailBlock = new BasicBlock_1.BasicBlock();
|
|
214
212
|
copyFinallyTailBlocks.forEach((copyFinallyTailBlock) => {
|
|
215
213
|
copyFinallyTailBlock.addSuccessorBlock(newCopyFinallyTailBlock);
|
|
216
214
|
newCopyFinallyTailBlock.addPredecessorBlock(copyFinallyTailBlock);
|
|
217
215
|
});
|
|
216
|
+
copyFinallyBfsBlocks.push(...copyFinallyTailBlocks);
|
|
218
217
|
copyFinallyTailBlocks = [newCopyFinallyTailBlock];
|
|
219
218
|
}
|
|
220
|
-
|
|
219
|
+
copyFinallyTailBlocks[0].addStmt(throwStmt);
|
|
221
220
|
copyFinallyBfsBlocks.push(...copyFinallyTailBlocks);
|
|
222
221
|
copyFinallyBfsBlocks.forEach((copyFinallyBfsBlock) => {
|
|
223
222
|
basicBlockSet.add(copyFinallyBfsBlock);
|
|
@@ -239,11 +238,17 @@ class TrapBuilder {
|
|
|
239
238
|
const targetBlock = sourceToTarget.get(sourceBlock);
|
|
240
239
|
for (const predecessor of sourceBlock.getPredecessors()) {
|
|
241
240
|
const targetPredecessor = sourceToTarget.get(predecessor);
|
|
242
|
-
|
|
241
|
+
// Only include blocks within the copy range, so that predecessor and successor relationships to
|
|
242
|
+
// external blocks can be trimmed
|
|
243
|
+
if (targetPredecessor) {
|
|
244
|
+
targetBlock.addPredecessorBlock(targetPredecessor);
|
|
245
|
+
}
|
|
243
246
|
}
|
|
244
247
|
for (const successor of sourceBlock.getSuccessors()) {
|
|
245
248
|
const targetSuccessor = sourceToTarget.get(successor);
|
|
246
|
-
|
|
249
|
+
if (targetSuccessor) {
|
|
250
|
+
targetBlock.addSuccessorBlock(targetSuccessor);
|
|
251
|
+
}
|
|
247
252
|
}
|
|
248
253
|
}
|
|
249
254
|
return targetBlocks;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewTreeBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/ViewTreeBuilder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ViewTreeBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/ViewTreeBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -817,11 +817,11 @@ class ViewTreeImpl extends TreeNodeStack {
|
|
|
817
817
|
let temp = expr.getArg(0);
|
|
818
818
|
let arg;
|
|
819
819
|
temp.getUsedStmts().forEach(value => {
|
|
820
|
-
if (value instanceof Stmt_1.
|
|
821
|
-
|
|
822
|
-
|
|
820
|
+
if (value instanceof Stmt_1.ArkAssignStmt && value.getRightOp() instanceof Expr_1.ArkInstanceInvokeExpr) {
|
|
821
|
+
const rightOp = value.getRightOp();
|
|
822
|
+
const methodName = rightOp.getMethodSignature().getMethodSubSignature().getMethodName();
|
|
823
823
|
if (methodName === 'constructor') {
|
|
824
|
-
arg =
|
|
824
|
+
arg = rightOp.getArg(0);
|
|
825
825
|
}
|
|
826
826
|
}
|
|
827
827
|
});
|
|
@@ -843,7 +843,11 @@ class ViewTreeImpl extends TreeNodeStack {
|
|
|
843
843
|
if (!(initValue instanceof Expr_1.ArkNewExpr)) {
|
|
844
844
|
return undefined;
|
|
845
845
|
}
|
|
846
|
-
|
|
846
|
+
const initValueType = initValue.getType();
|
|
847
|
+
if (!(initValueType instanceof Type_1.ClassType)) {
|
|
848
|
+
return undefined;
|
|
849
|
+
}
|
|
850
|
+
let clsSignature = initValueType.getClassSignature();
|
|
847
851
|
if (clsSignature) {
|
|
848
852
|
let cls = this.findClass(clsSignature);
|
|
849
853
|
if (cls && cls.hasComponentDecorator()) {
|
|
@@ -52,7 +52,7 @@ class ImportInfo extends ArkBaseModel_1.ArkBaseModel {
|
|
|
52
52
|
* @returns The export information. If there is no export information, the return will be a **null**.
|
|
53
53
|
*/
|
|
54
54
|
getLazyExportInfo() {
|
|
55
|
-
if (this.lazyExportInfo === undefined) {
|
|
55
|
+
if (this.lazyExportInfo === undefined && this.declaringArkFile.getScene().getStage() >= 2) {
|
|
56
56
|
this.lazyExportInfo = (0, ModelUtils_1.findExportInfo)(this);
|
|
57
57
|
}
|
|
58
58
|
return this.lazyExportInfo || null;
|
|
@@ -261,7 +261,9 @@ export declare class ArkMethod extends ArkBaseModel implements ArkExport {
|
|
|
261
261
|
setAsteriskToken(asteriskToken: boolean): void;
|
|
262
262
|
validate(): ArkError;
|
|
263
263
|
matchMethodSignature(args: Value[]): MethodSignature;
|
|
264
|
+
private isMatched;
|
|
264
265
|
private matchParam;
|
|
266
|
+
private static parseArg;
|
|
265
267
|
getOuterMethod(): ArkMethod | undefined;
|
|
266
268
|
setOuterMethod(method: ArkMethod): void;
|
|
267
269
|
getFunctionLocal(name: string): Local | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkMethod.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkMethod.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAc,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAgC,IAAI,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"ArkMethod.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkMethod.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ const EtsConst_1 = require("../common/EtsConst");
|
|
|
28
28
|
const Constant_1 = require("../base/Constant");
|
|
29
29
|
const Local_1 = require("../base/Local");
|
|
30
30
|
const TSConst_1 = require("../common/TSConst");
|
|
31
|
+
const TypeInference_1 = require("../common/TypeInference");
|
|
31
32
|
exports.arkMethodNodeKind = [
|
|
32
33
|
'MethodDeclaration',
|
|
33
34
|
'Constructor',
|
|
@@ -546,42 +547,37 @@ class ArkMethod extends ArkBaseModel_1.ArkBaseModel {
|
|
|
546
547
|
}
|
|
547
548
|
return args.length >= min && args.length <= max;
|
|
548
549
|
});
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
}
|
|
556
|
-
const isMatched = this.matchParam(parameters[i].getType(), args[i], scene);
|
|
557
|
-
if (!isMatched) {
|
|
558
|
-
return false;
|
|
559
|
-
}
|
|
550
|
+
return ((_c = (_b = signatures === null || signatures === void 0 ? void 0 : signatures.find(p => this.isMatched(p.getMethodSubSignature().getParameters(), args))) !== null && _b !== void 0 ? _b : signatures === null || signatures === void 0 ? void 0 : signatures[0]) !== null && _c !== void 0 ? _c : this.getSignature());
|
|
551
|
+
}
|
|
552
|
+
isMatched(parameters, args, isArrowFunc = false) {
|
|
553
|
+
for (let i = 0; i < parameters.length; i++) {
|
|
554
|
+
if (!args[i]) {
|
|
555
|
+
return isArrowFunc ? true : parameters[i].isOptional();
|
|
560
556
|
}
|
|
561
|
-
|
|
562
|
-
|
|
557
|
+
const isMatched = this.matchParam(parameters[i].getType(), args[i]);
|
|
558
|
+
if (!isMatched) {
|
|
559
|
+
return false;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
return true;
|
|
563
563
|
}
|
|
564
|
-
matchParam(paramType, arg
|
|
564
|
+
matchParam(paramType, arg) {
|
|
565
565
|
var _a, _b;
|
|
566
|
+
arg = ArkMethod.parseArg(arg);
|
|
566
567
|
const argType = arg.getType();
|
|
567
|
-
if (
|
|
568
|
-
|
|
569
|
-
if (stmt instanceof Stmt_1.ArkAssignStmt && stmt.getRightOp() instanceof Constant_1.Constant) {
|
|
570
|
-
arg = stmt.getRightOp();
|
|
571
|
-
}
|
|
568
|
+
if (paramType instanceof Type_1.AliasType && !(argType instanceof Type_1.AliasType)) {
|
|
569
|
+
paramType = TypeInference_1.TypeInference.replaceAliasType(paramType);
|
|
572
570
|
}
|
|
573
571
|
if (paramType instanceof Type_1.UnionType) {
|
|
574
|
-
|
|
575
|
-
for (const e of paramType.getTypes()) {
|
|
576
|
-
if (argType.constructor === e.constructor) {
|
|
577
|
-
matched = true;
|
|
578
|
-
break;
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
return matched;
|
|
572
|
+
return !!paramType.getTypes().find(p => this.matchParam(p, arg));
|
|
582
573
|
}
|
|
583
574
|
else if (argType instanceof Type_1.FunctionType && paramType instanceof Type_1.FunctionType) {
|
|
584
|
-
|
|
575
|
+
if (argType.getMethodSignature().getParamLength() > paramType.getMethodSignature().getParamLength()) {
|
|
576
|
+
return false;
|
|
577
|
+
}
|
|
578
|
+
const parameters = paramType.getMethodSignature().getMethodSubSignature().getParameters();
|
|
579
|
+
const args = argType.getMethodSignature().getMethodSubSignature().getParameters().filter(p => !p.getName().startsWith(Const_1.LEXICAL_ENV_NAME_PREFIX));
|
|
580
|
+
return this.isMatched(parameters, args, true);
|
|
585
581
|
}
|
|
586
582
|
else if (paramType instanceof Type_1.ClassType && paramType.getClassSignature().getClassName().includes(EtsConst_1.CALL_BACK)) {
|
|
587
583
|
return argType instanceof Type_1.FunctionType;
|
|
@@ -606,6 +602,19 @@ class ArkMethod extends ArkBaseModel_1.ArkBaseModel {
|
|
|
606
602
|
}
|
|
607
603
|
return argType.constructor === paramType.constructor;
|
|
608
604
|
}
|
|
605
|
+
static parseArg(arg) {
|
|
606
|
+
if (arg instanceof Local_1.Local) {
|
|
607
|
+
const stmt = arg.getDeclaringStmt();
|
|
608
|
+
const argType = arg.getType();
|
|
609
|
+
if (argType instanceof Type_1.EnumValueType && argType.getConstant()) {
|
|
610
|
+
arg = argType.getConstant();
|
|
611
|
+
}
|
|
612
|
+
else if (stmt instanceof Stmt_1.ArkAssignStmt && stmt.getRightOp() instanceof Constant_1.Constant) {
|
|
613
|
+
arg = stmt.getRightOp();
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
return arg;
|
|
617
|
+
}
|
|
609
618
|
getOuterMethod() {
|
|
610
619
|
return this.outerMethod;
|
|
611
620
|
}
|
|
@@ -316,7 +316,16 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
|
|
|
316
316
|
const instanceInitStmts = [];
|
|
317
317
|
let staticBlockId = 0;
|
|
318
318
|
clsNode.members.forEach(member => {
|
|
319
|
-
if (ohos_typescript_1.default.
|
|
319
|
+
if (ohos_typescript_1.default.isMethodDeclaration(member) ||
|
|
320
|
+
ohos_typescript_1.default.isConstructorDeclaration(member) ||
|
|
321
|
+
ohos_typescript_1.default.isMethodSignature(member) ||
|
|
322
|
+
ohos_typescript_1.default.isConstructSignatureDeclaration(member) ||
|
|
323
|
+
ohos_typescript_1.default.isAccessor(member) ||
|
|
324
|
+
ohos_typescript_1.default.isCallSignatureDeclaration(member)) {
|
|
325
|
+
// these node types have been handled at the beginning of this function by calling buildMethodsForClass
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
else if (ohos_typescript_1.default.isPropertyDeclaration(member) || ohos_typescript_1.default.isPropertySignature(member)) {
|
|
320
329
|
const arkField = (0, ArkFieldBuilder_1.buildProperty2ArkField)(member, sourceFile, cls);
|
|
321
330
|
if (ohos_typescript_1.default.isClassDeclaration(clsNode) || ohos_typescript_1.default.isClassExpression(clsNode) || ohos_typescript_1.default.isStructDeclaration(clsNode)) {
|
|
322
331
|
if (arkField.isStatic()) {
|
|
@@ -346,10 +355,10 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
|
|
|
346
355
|
staticInitStmts.push(new Stmt_1.ArkInvokeStmt(staticBlockInvokeExpr));
|
|
347
356
|
}
|
|
348
357
|
else if (ohos_typescript_1.default.isSemicolonClassElement(member)) {
|
|
349
|
-
logger.
|
|
358
|
+
logger.trace('Skip these members.');
|
|
350
359
|
}
|
|
351
360
|
else {
|
|
352
|
-
logger.warn(
|
|
361
|
+
logger.warn(`Please contact developers to support new member in class: ${cls.getSignature().toString()}, member: ${member.getText()}!`);
|
|
353
362
|
}
|
|
354
363
|
});
|
|
355
364
|
if (ohos_typescript_1.default.isClassDeclaration(clsNode) || ohos_typescript_1.default.isClassExpression(clsNode) || ohos_typescript_1.default.isStructDeclaration(clsNode)) {
|
|
@@ -66,7 +66,7 @@ function buildProperty2ArkField(member, sourceFile, cls) {
|
|
|
66
66
|
fieldName = (0, builderUtils_1.handlePropertyAccessExpression)(member.name.expression);
|
|
67
67
|
}
|
|
68
68
|
else {
|
|
69
|
-
logger.warn(
|
|
69
|
+
logger.warn(`Other property expression type found: ${member.name.expression.getText()}!`);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
else if (member.name && (ohos_typescript_1.default.isIdentifier(member.name) || ohos_typescript_1.default.isLiteralExpression(member.name))) {
|
|
@@ -78,7 +78,7 @@ function buildProperty2ArkField(member, sourceFile, cls) {
|
|
|
78
78
|
field.addModifier(ArkBaseModel_1.ModifierType.PRIVATE);
|
|
79
79
|
}
|
|
80
80
|
else {
|
|
81
|
-
logger.warn(
|
|
81
|
+
logger.warn(`Other type of property name found: ${member.getText()}!`);
|
|
82
82
|
}
|
|
83
83
|
let fieldType = Type_1.UnknownType.getInstance();
|
|
84
84
|
if (ohos_typescript_1.default.isPropertyDeclaration(member) || ohos_typescript_1.default.isPropertySignature(member)) {
|
|
@@ -124,7 +124,7 @@ function buildArkFile(arkFile, astRoot) {
|
|
|
124
124
|
}
|
|
125
125
|
// TODO: Check
|
|
126
126
|
else if (ohos_typescript_1.default.isMethodDeclaration(child)) {
|
|
127
|
-
logger.
|
|
127
|
+
logger.trace('This is a MethodDeclaration in ArkFile.');
|
|
128
128
|
let mthd = new ArkMethod_1.ArkMethod();
|
|
129
129
|
(0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(child, arkFile.getDefaultClass(), mthd, astRoot);
|
|
130
130
|
if (mthd.isExported()) {
|
|
@@ -161,7 +161,7 @@ function buildArkFile(arkFile, astRoot) {
|
|
|
161
161
|
child.expression.text.trim() === Const_1.ARKTS_STATIC_MARK && arkFile.setLanguage(ArkFile_1.Language.ARKTS1_2);
|
|
162
162
|
}
|
|
163
163
|
else {
|
|
164
|
-
logger.
|
|
164
|
+
logger.trace('Child joined default method of arkFile: ', ohos_typescript_1.default.SyntaxKind[child.kind]);
|
|
165
165
|
}
|
|
166
166
|
});
|
|
167
167
|
const mergedNameSpaces = (0, ArkNamespaceBuilder_1.mergeNameSpaces)(namespaces);
|
|
@@ -88,13 +88,13 @@ function buildArkNamespace(node, declaringInstance, ns, sourceFile) {
|
|
|
88
88
|
// NamespaceDeclaration extends ModuleDeclaration
|
|
89
89
|
//TODO: Check
|
|
90
90
|
else if (ohos_typescript_1.default.isModuleDeclaration(node.body)) {
|
|
91
|
-
logger.
|
|
91
|
+
logger.trace('This ModuleBody is an NamespaceDeclaration.');
|
|
92
92
|
let childNs = new ArkNamespace_1.ArkNamespace();
|
|
93
93
|
buildArkNamespace(node.body, ns, childNs, sourceFile);
|
|
94
94
|
ns.addNamespace(childNs);
|
|
95
95
|
}
|
|
96
96
|
else if (ohos_typescript_1.default.isIdentifier(node.body)) {
|
|
97
|
-
logger.warn('ModuleBody is Identifier
|
|
97
|
+
logger.warn('ModuleBody is Identifier');
|
|
98
98
|
}
|
|
99
99
|
else {
|
|
100
100
|
logger.warn('JSDocNamespaceDeclaration found.');
|
|
@@ -128,7 +128,7 @@ function buildNamespaceMembers(node, namespace, sourceFile) {
|
|
|
128
128
|
}
|
|
129
129
|
// TODO: Check
|
|
130
130
|
else if (ohos_typescript_1.default.isMethodDeclaration(child)) {
|
|
131
|
-
logger.
|
|
131
|
+
logger.trace('This is a MethodDeclaration in ArkNamespace.');
|
|
132
132
|
let mthd = new ArkMethod_1.ArkMethod();
|
|
133
133
|
(0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(child, namespace.getDefaultClass(), mthd, sourceFile);
|
|
134
134
|
if (mthd.isExported()) {
|
|
@@ -152,7 +152,7 @@ function buildNamespaceMembers(node, namespace, sourceFile) {
|
|
|
152
152
|
(0, ArkExportBuilder_1.buildExportVariableStatement)(child, sourceFile, namespace.getDeclaringArkFile(), namespace).forEach(item => namespace.addExportInfo(item));
|
|
153
153
|
}
|
|
154
154
|
else {
|
|
155
|
-
logger.
|
|
155
|
+
logger.trace('Child joined default method of arkFile: ', ohos_typescript_1.default.SyntaxKind[child.kind]);
|
|
156
156
|
// join default method
|
|
157
157
|
}
|
|
158
158
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonPrinter.d.ts","sourceRoot":"","sources":["../../src/save/JsonPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"JsonPrinter.d.ts","sourceRoot":"","sources":["../../src/save/JsonPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAsEhD,qBAAa,WAAY,SAAQ,OAAO;IACxB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO;IAI7B,IAAI,IAAI,MAAM;IAKrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,aAAa;IA6HrB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAuKtB,OAAO,CAAC,aAAa;CAuCxB"}
|