arkanalyzer 1.0.39 → 1.0.41
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/config/arkanalyzer.json +6 -2
- package/lib/Config.d.ts +1 -0
- package/lib/Config.d.ts.map +1 -1
- package/lib/Scene.d.ts +6 -5
- package/lib/Scene.d.ts.map +1 -1
- package/lib/Scene.js +36 -18
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +3 -4
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +7 -8
- package/lib/callgraph/model/CallGraph.d.ts +5 -5
- package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
- package/lib/callgraph/model/CallGraph.js +18 -21
- package/lib/callgraph/model/CallSite.d.ts +16 -6
- package/lib/callgraph/model/CallSite.d.ts.map +1 -1
- package/lib/callgraph/model/CallSite.js +48 -8
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +0 -1
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts.map +1 -1
- package/lib/callgraph/model/builder/CallGraphBuilder.js +0 -8
- package/lib/callgraph/pointerAnalysis/Pag.d.ts +3 -6
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +6 -29
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +6 -15
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +61 -85
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +2 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +12 -8
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +10 -3
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +20 -5
- package/lib/callgraph/pointerAnalysis/context/Context.d.ts +69 -0
- package/lib/callgraph/pointerAnalysis/context/Context.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/context/Context.js +202 -0
- package/lib/callgraph/pointerAnalysis/context/ContextItem.d.ts +40 -0
- package/lib/callgraph/pointerAnalysis/context/ContextItem.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/context/ContextItem.js +99 -0
- package/lib/callgraph/pointerAnalysis/context/ContextSelector.d.ts +46 -0
- package/lib/callgraph/pointerAnalysis/context/ContextSelector.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/context/ContextSelector.js +138 -0
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +11 -1
- package/lib/core/base/Local.js +1 -1
- package/lib/core/common/ArkIRTransformer.d.ts +2 -0
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +90 -0
- package/lib/core/common/ArkValueTransformer.d.ts +1 -1
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +48 -33
- package/lib/core/common/Builtin.d.ts.map +1 -1
- package/lib/core/common/Builtin.js +2 -2
- package/lib/core/common/DummyMainCreater.js +1 -1
- package/lib/core/common/IRInference.d.ts +1 -0
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +60 -44
- package/lib/core/common/ModelUtils.d.ts +1 -0
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +7 -0
- package/lib/core/common/SdkUtils.d.ts +14 -1
- package/lib/core/common/SdkUtils.d.ts.map +1 -1
- package/lib/core/common/SdkUtils.js +118 -24
- 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 +21 -12
- package/lib/core/common/ValueUtil.d.ts +1 -0
- package/lib/core/common/ValueUtil.d.ts.map +1 -1
- package/lib/core/common/ValueUtil.js +7 -0
- package/lib/core/graph/BaseExplicitGraph.d.ts +1 -0
- package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
- package/lib/core/graph/BaseExplicitGraph.js +3 -0
- package/lib/core/graph/Scc.js +1 -1
- package/lib/core/graph/builder/CfgBuilder.d.ts +2 -0
- package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/CfgBuilder.js +59 -7
- package/lib/core/model/ArkImport.js +1 -1
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +8 -2
- package/lib/core/model/builder/ArkClassBuilder.js +21 -1
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +2 -2
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +2 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -4
- package/lib/save/JsonPrinter.d.ts +1 -0
- package/lib/save/JsonPrinter.d.ts.map +1 -1
- package/lib/save/JsonPrinter.js +15 -5
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts.map +1 -1
- package/lib/save/arkir/ArkIRMethodPrinter.js +13 -5
- package/lib/save/source/SourceBody.d.ts +1 -1
- package/lib/save/source/SourceBody.d.ts.map +1 -1
- package/lib/save/source/SourceBody.js +3 -2
- package/lib/save/source/SourceStmt.d.ts.map +1 -1
- package/lib/save/source/SourceStmt.js +12 -4
- package/lib/save/source/SourceTransformer.d.ts +3 -3
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +11 -10
- package/lib/transformer/StaticSingleAssignmentFormer.js +1 -1
- package/package.json +7 -7
- package/lib/callgraph/pointerAnalysis/Context.d.ts +0 -38
- package/lib/callgraph/pointerAnalysis/Context.d.ts.map +0 -1
- package/lib/callgraph/pointerAnalysis/Context.js +0 -154
|
@@ -159,6 +159,9 @@ class ArkIRTransformer {
|
|
|
159
159
|
else if (ts.isClassDeclaration(node)) {
|
|
160
160
|
stmts = this.classDeclarationToStmts(node);
|
|
161
161
|
}
|
|
162
|
+
else if (ts.isParameter(node)) {
|
|
163
|
+
stmts = this.parameterToStmts(node);
|
|
164
|
+
}
|
|
162
165
|
this.mapStmtsToTsStmt(stmts, node);
|
|
163
166
|
if (stmts.length > 0) {
|
|
164
167
|
IRUtils_1.IRUtils.setComments(stmts[0], node, this.sourceFile, this.declaringMethod.getDeclaringArkFile().getScene().getOptions());
|
|
@@ -187,6 +190,93 @@ class ArkIRTransformer {
|
|
|
187
190
|
(0, ArkClassBuilder_1.buildNormalArkClassFromArkMethod)(node, cls, this.sourceFile, this.declaringMethod);
|
|
188
191
|
return [];
|
|
189
192
|
}
|
|
193
|
+
// This is only used to add class property assign stmts into constructor when it is with parameter property.
|
|
194
|
+
parameterPropertyToStmts(paramNode) {
|
|
195
|
+
var _a, _b, _c;
|
|
196
|
+
let stmts = [];
|
|
197
|
+
let fieldName;
|
|
198
|
+
if (ts.isIdentifier(paramNode.name)) {
|
|
199
|
+
fieldName = paramNode.name.text;
|
|
200
|
+
}
|
|
201
|
+
else if (ts.isObjectBindingPattern(paramNode.name)) {
|
|
202
|
+
// TODO
|
|
203
|
+
return stmts;
|
|
204
|
+
}
|
|
205
|
+
else if (ts.isArrayBindingPattern(paramNode.name)) {
|
|
206
|
+
// TODO
|
|
207
|
+
return stmts;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
return stmts;
|
|
211
|
+
}
|
|
212
|
+
if (paramNode.modifiers === undefined || !ts.isIdentifier(paramNode.name)) {
|
|
213
|
+
return [];
|
|
214
|
+
}
|
|
215
|
+
const arkClass = this.declaringMethod.getDeclaringArkClass();
|
|
216
|
+
const fieldSignature = (_a = arkClass.getFieldWithName(fieldName)) === null || _a === void 0 ? void 0 : _a.getSignature();
|
|
217
|
+
const paramLocal = Array.from(this.getLocals()).find(local => local.getName() === fieldName);
|
|
218
|
+
if (fieldSignature === undefined || paramLocal === undefined) {
|
|
219
|
+
return [];
|
|
220
|
+
}
|
|
221
|
+
const leftOp = new Ref_1.ArkInstanceFieldRef(this.getThisLocal(), fieldSignature);
|
|
222
|
+
const fieldAssignStmt = new Stmt_1.ArkAssignStmt(leftOp, paramLocal);
|
|
223
|
+
fieldAssignStmt.setOperandOriginalPositions([Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT]);
|
|
224
|
+
// If the parameter has initializer, the related stmts should be added into class instance init method.
|
|
225
|
+
const instInitMethodCfg = (_b = arkClass.getInstanceInitMethod().getBody()) === null || _b === void 0 ? void 0 : _b.getCfg();
|
|
226
|
+
const instInitStmts = (_c = instInitMethodCfg === null || instInitMethodCfg === void 0 ? void 0 : instInitMethodCfg.getStartingBlock()) === null || _c === void 0 ? void 0 : _c.getStmts();
|
|
227
|
+
if (paramNode.initializer && instInitStmts && instInitMethodCfg) {
|
|
228
|
+
const { value: instanceInitValue, valueOriginalPositions: instanceInitPositions, stmts: instanceInitStmts, } = this.tsNodeToValueAndStmts(paramNode.initializer);
|
|
229
|
+
const instanceAssignStmt = new Stmt_1.ArkAssignStmt(leftOp, instanceInitValue);
|
|
230
|
+
instanceAssignStmt.setOperandOriginalPositions([Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT, ...instanceInitPositions]);
|
|
231
|
+
const newInstanceInitStmts = [...instanceInitStmts, instanceAssignStmt];
|
|
232
|
+
// All these stmts will be added into instance init method, while that method has completed the building. So all new stmts should set cfg here.
|
|
233
|
+
newInstanceInitStmts.forEach(stmt => stmt.setCfg(instInitMethodCfg));
|
|
234
|
+
// The last stmt of instance init method is return stmt, so all the initializer stmts should be added before return stmt.
|
|
235
|
+
instInitStmts.splice(instInitStmts.length - 1, 0, ...newInstanceInitStmts);
|
|
236
|
+
}
|
|
237
|
+
return [fieldAssignStmt];
|
|
238
|
+
}
|
|
239
|
+
parameterToStmts(paramNode) {
|
|
240
|
+
if (this.declaringMethod.getName() === TSConst_1.CONSTRUCTOR_NAME && paramNode.modifiers) {
|
|
241
|
+
return this.parameterPropertyToStmts(paramNode);
|
|
242
|
+
}
|
|
243
|
+
let stmts = [];
|
|
244
|
+
if (paramNode.initializer === undefined) {
|
|
245
|
+
return stmts;
|
|
246
|
+
}
|
|
247
|
+
let paramName;
|
|
248
|
+
if (ts.isIdentifier(paramNode.name)) {
|
|
249
|
+
paramName = paramNode.name.text;
|
|
250
|
+
}
|
|
251
|
+
else if (ts.isObjectBindingPattern(paramNode.name)) {
|
|
252
|
+
// TODO
|
|
253
|
+
return stmts;
|
|
254
|
+
}
|
|
255
|
+
else if (ts.isArrayBindingPattern(paramNode.name)) {
|
|
256
|
+
// TODO
|
|
257
|
+
return stmts;
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
return stmts;
|
|
261
|
+
}
|
|
262
|
+
const paramLocal = Array.from(this.getLocals()).find(local => local.getName() === paramName);
|
|
263
|
+
if (paramLocal === undefined) {
|
|
264
|
+
return stmts;
|
|
265
|
+
}
|
|
266
|
+
const { value: paramInitValue, valueOriginalPositions: paramInitPositions, stmts: paramInitStmts, } = this.tsNodeToValueAndStmts(paramNode.initializer);
|
|
267
|
+
stmts.push(...paramInitStmts);
|
|
268
|
+
const ifStmt = new Stmt_1.ArkIfStmt(new Expr_1.ArkConditionExpr(paramLocal, ValueUtil_1.ValueUtil.getUndefinedConst(), Expr_1.RelationalBinaryOperator.Equality));
|
|
269
|
+
ifStmt.setOperandOriginalPositions([Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT]);
|
|
270
|
+
stmts.push(ifStmt);
|
|
271
|
+
const currConditionalOperatorIndex = this.arkValueTransformer.conditionalOperatorNo++;
|
|
272
|
+
stmts.push(new DummyStmt(ArkIRTransformer.DUMMY_CONDITIONAL_OPERATOR_IF_TRUE_STMT + currConditionalOperatorIndex));
|
|
273
|
+
const assignStmt = new Stmt_1.ArkAssignStmt(paramLocal, paramInitValue);
|
|
274
|
+
assignStmt.setOperandOriginalPositions([Position_1.FullPosition.DEFAULT, ...paramInitPositions]);
|
|
275
|
+
stmts.push(assignStmt);
|
|
276
|
+
stmts.push(new DummyStmt(ArkIRTransformer.DUMMY_CONDITIONAL_OPERATOR_IF_FALSE_STMT + currConditionalOperatorIndex));
|
|
277
|
+
stmts.push(new DummyStmt(ArkIRTransformer.DUMMY_CONDITIONAL_OPERATOR_END_STMT + currConditionalOperatorIndex));
|
|
278
|
+
return stmts;
|
|
279
|
+
}
|
|
190
280
|
returnStatementToStmts(returnStatement) {
|
|
191
281
|
const stmts = [];
|
|
192
282
|
if (returnStatement.expression) {
|
|
@@ -6,7 +6,7 @@ import { GlobalRef } from '../base/Ref';
|
|
|
6
6
|
import { ArkMethod } from '../model/ArkMethod';
|
|
7
7
|
import { ArkIRTransformer, ValueAndStmts } from './ArkIRTransformer';
|
|
8
8
|
export declare class ArkValueTransformer {
|
|
9
|
-
|
|
9
|
+
conditionalOperatorNo: number;
|
|
10
10
|
private tempLocalNo;
|
|
11
11
|
private sourceFile;
|
|
12
12
|
private locals;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,sBAAsB,EAAiD,MAAM,cAAc,CAAC;AAuBrG,OAAO,EACH,SAAS,EAcT,IAAI,EAMP,MAAM,cAAc,CAAC;AAetB,OAAO,EAAyE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/G,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/C,OAAO,EAAE,gBAAgB,EAAa,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOhF,qBAAa,mBAAmB;
|
|
1
|
+
{"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -657,6 +657,12 @@ class ArkValueTransformer {
|
|
|
657
657
|
invokeValue = new Expr_1.ArkStaticInvokeExpr(methodSignature, args, realGenericTypes);
|
|
658
658
|
}
|
|
659
659
|
}
|
|
660
|
+
else if (callerValue instanceof Ref_1.ArkArrayRef && ts.isElementAccessExpression(functionNameNode)) {
|
|
661
|
+
const methodSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSignatureFromMethodName(functionNameNode.argumentExpression.getText());
|
|
662
|
+
invokeValue = new Expr_1.ArkInstanceInvokeExpr(callerValue.getBase(), methodSignature, args, realGenericTypes);
|
|
663
|
+
invokeValuePositions.push(...callerPositions.slice(1));
|
|
664
|
+
stmts.pop();
|
|
665
|
+
}
|
|
660
666
|
else {
|
|
661
667
|
({
|
|
662
668
|
value: callerValue,
|
|
@@ -864,16 +870,22 @@ class ArkValueTransformer {
|
|
|
864
870
|
}
|
|
865
871
|
prefixUnaryExpressionToValueAndStmts(prefixUnaryExpression) {
|
|
866
872
|
const stmts = [];
|
|
867
|
-
let { value:
|
|
873
|
+
let { value: originOperandValue, valueOriginalPositions: originOperandPositions, stmts: operandStmts, } = this.tsNodeToValueAndStmts(prefixUnaryExpression.operand);
|
|
868
874
|
operandStmts.forEach(stmt => stmts.push(stmt));
|
|
869
|
-
|
|
875
|
+
let operandValue;
|
|
876
|
+
let operandPositions;
|
|
877
|
+
if (IRUtils_1.IRUtils.moreThanOneAddress(originOperandValue)) {
|
|
870
878
|
({
|
|
871
879
|
value: operandValue,
|
|
872
880
|
valueOriginalPositions: operandPositions,
|
|
873
881
|
stmts: operandStmts,
|
|
874
|
-
} = this.arkIRTransformer.generateAssignStmtForValue(
|
|
882
|
+
} = this.arkIRTransformer.generateAssignStmtForValue(originOperandValue, originOperandPositions));
|
|
875
883
|
operandStmts.forEach(stmt => stmts.push(stmt));
|
|
876
884
|
}
|
|
885
|
+
else {
|
|
886
|
+
operandValue = originOperandValue;
|
|
887
|
+
operandPositions = originOperandPositions;
|
|
888
|
+
}
|
|
877
889
|
const operatorToken = prefixUnaryExpression.operator;
|
|
878
890
|
let exprPositions = [Position_1.FullPosition.buildFromNode(prefixUnaryExpression, this.sourceFile)];
|
|
879
891
|
if (operatorToken === ts.SyntaxKind.PlusPlusToken || operatorToken === ts.SyntaxKind.MinusMinusToken) {
|
|
@@ -883,18 +895,15 @@ class ArkValueTransformer {
|
|
|
883
895
|
const assignStmt = new Stmt_1.ArkAssignStmt(operandValue, binopExpr);
|
|
884
896
|
assignStmt.setOperandOriginalPositions([...operandPositions, ...exprPositions]);
|
|
885
897
|
stmts.push(assignStmt);
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
stmts
|
|
890
|
-
}
|
|
898
|
+
if (operandValue !== originOperandValue) {
|
|
899
|
+
const lastAssignStmt = new Stmt_1.ArkAssignStmt(originOperandValue, operandValue);
|
|
900
|
+
lastAssignStmt.setOperandOriginalPositions([...originOperandPositions, ...operandPositions]);
|
|
901
|
+
stmts.push(lastAssignStmt);
|
|
902
|
+
}
|
|
903
|
+
return { value: originOperandValue, valueOriginalPositions: originOperandPositions, stmts: stmts };
|
|
891
904
|
}
|
|
892
905
|
else if (operatorToken === ts.SyntaxKind.PlusToken) {
|
|
893
|
-
return {
|
|
894
|
-
value: operandValue,
|
|
895
|
-
valueOriginalPositions: operandPositions,
|
|
896
|
-
stmts: stmts,
|
|
897
|
-
};
|
|
906
|
+
return { value: operandValue, valueOriginalPositions: operandPositions, stmts: stmts };
|
|
898
907
|
}
|
|
899
908
|
else {
|
|
900
909
|
let unopExpr;
|
|
@@ -907,26 +916,27 @@ class ArkValueTransformer {
|
|
|
907
916
|
unopExpr = ValueUtil_1.ValueUtil.getUndefinedConst();
|
|
908
917
|
exprPositions = [Position_1.FullPosition.DEFAULT];
|
|
909
918
|
}
|
|
910
|
-
return {
|
|
911
|
-
value: unopExpr,
|
|
912
|
-
valueOriginalPositions: exprPositions,
|
|
913
|
-
stmts: stmts,
|
|
914
|
-
};
|
|
919
|
+
return { value: unopExpr, valueOriginalPositions: exprPositions, stmts: stmts };
|
|
915
920
|
}
|
|
916
921
|
}
|
|
917
922
|
postfixUnaryExpressionToValueAndStmts(postfixUnaryExpression) {
|
|
918
923
|
const stmts = [];
|
|
919
|
-
let { value:
|
|
924
|
+
let { value: originOperandValue, valueOriginalPositions: originOperandPositions, stmts: exprStmts, } = this.tsNodeToValueAndStmts(postfixUnaryExpression.operand);
|
|
920
925
|
exprStmts.forEach(stmt => stmts.push(stmt));
|
|
921
|
-
|
|
926
|
+
let operandValue;
|
|
927
|
+
let operandPositions;
|
|
928
|
+
if (IRUtils_1.IRUtils.moreThanOneAddress(originOperandValue)) {
|
|
922
929
|
({
|
|
923
930
|
value: operandValue,
|
|
924
931
|
valueOriginalPositions: operandPositions,
|
|
925
932
|
stmts: exprStmts,
|
|
926
|
-
} = this.arkIRTransformer.generateAssignStmtForValue(
|
|
933
|
+
} = this.arkIRTransformer.generateAssignStmtForValue(originOperandValue, originOperandPositions));
|
|
927
934
|
exprStmts.forEach(stmt => stmts.push(stmt));
|
|
928
935
|
}
|
|
929
|
-
|
|
936
|
+
else {
|
|
937
|
+
operandValue = originOperandValue;
|
|
938
|
+
operandPositions = originOperandPositions;
|
|
939
|
+
}
|
|
930
940
|
let exprPositions = [Position_1.FullPosition.buildFromNode(postfixUnaryExpression, this.sourceFile)];
|
|
931
941
|
const operatorToken = postfixUnaryExpression.operator;
|
|
932
942
|
if (operatorToken === ts.SyntaxKind.PlusPlusToken || operatorToken === ts.SyntaxKind.MinusMinusToken) {
|
|
@@ -936,15 +946,20 @@ class ArkValueTransformer {
|
|
|
936
946
|
const assignStmt = new Stmt_1.ArkAssignStmt(operandValue, binopExpr);
|
|
937
947
|
assignStmt.setOperandOriginalPositions([...operandPositions, ...exprPositions]);
|
|
938
948
|
stmts.push(assignStmt);
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
949
|
+
if (operandValue !== originOperandValue) {
|
|
950
|
+
const lastAssignStmt = new Stmt_1.ArkAssignStmt(originOperandValue, operandValue);
|
|
951
|
+
lastAssignStmt.setOperandOriginalPositions([...originOperandPositions, ...operandPositions]);
|
|
952
|
+
stmts.push(lastAssignStmt);
|
|
953
|
+
}
|
|
954
|
+
return {
|
|
955
|
+
value: originOperandValue,
|
|
956
|
+
valueOriginalPositions: originOperandPositions,
|
|
957
|
+
stmts: stmts,
|
|
958
|
+
};
|
|
944
959
|
}
|
|
945
960
|
return {
|
|
946
|
-
value:
|
|
947
|
-
valueOriginalPositions:
|
|
961
|
+
value: ValueUtil_1.ValueUtil.getUndefinedConst(),
|
|
962
|
+
valueOriginalPositions: [Position_1.FullPosition.DEFAULT],
|
|
948
963
|
stmts: stmts,
|
|
949
964
|
};
|
|
950
965
|
}
|
|
@@ -1619,7 +1634,8 @@ class ArkValueTransformer {
|
|
|
1619
1634
|
return templateTypes[0];
|
|
1620
1635
|
}
|
|
1621
1636
|
resolveTypeReferenceNode(typeReferenceNode) {
|
|
1622
|
-
const typeReferenceFullName = typeReferenceNode.typeName.
|
|
1637
|
+
const typeReferenceFullName = ts.isIdentifier(typeReferenceNode.typeName) ? typeReferenceNode.typeName.text :
|
|
1638
|
+
typeReferenceNode.typeName.getText(this.sourceFile);
|
|
1623
1639
|
if (typeReferenceFullName === Builtin_1.Builtin.OBJECT) {
|
|
1624
1640
|
return Builtin_1.Builtin.OBJECT_CLASS_TYPE;
|
|
1625
1641
|
}
|
|
@@ -1631,12 +1647,11 @@ class ArkValueTransformer {
|
|
|
1631
1647
|
}
|
|
1632
1648
|
}
|
|
1633
1649
|
if (!aliasTypeAndStmt) {
|
|
1634
|
-
const
|
|
1635
|
-
const local = this.locals.get(typeName);
|
|
1650
|
+
const local = this.locals.get(typeReferenceFullName);
|
|
1636
1651
|
if (local !== undefined) {
|
|
1637
1652
|
return local.getType();
|
|
1638
1653
|
}
|
|
1639
|
-
return new Type_1.UnclearReferenceType(
|
|
1654
|
+
return new Type_1.UnclearReferenceType(typeReferenceFullName, genericTypes);
|
|
1640
1655
|
}
|
|
1641
1656
|
else {
|
|
1642
1657
|
if (genericTypes.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builtin.d.ts","sourceRoot":"","sources":["../../../src/core/common/Builtin.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,SAAS,EAA2B,MAAM,cAAc,CAAC;AAElE,qBAAa,OAAO;IAGhB,OAAc,MAAM,SAAY;IAChC,OAAc,KAAK,SAAW;IAC9B,OAAc,GAAG,SAAS;IAC1B,OAAc,GAAG,SAAS;IAC1B,OAAc,MAAM,SAAY;IAEhC,OAAc,gBAAgB,cAA8B;IAG5D,OAAc,kBAAkB,SAAY;IAC5C,OAAc,eAAe,SAAkB;IAE/C,OAAc,+BAA+B,gBAA8C;IAC3F,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,qBAAqB,iBAA+C;IAClF,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,4BAA4B,8BAAwC;IAGlF,OAAc,iBAAiB,
|
|
1
|
+
{"version":3,"file":"Builtin.d.ts","sourceRoot":"","sources":["../../../src/core/common/Builtin.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,SAAS,EAA2B,MAAM,cAAc,CAAC;AAElE,qBAAa,OAAO;IAGhB,OAAc,MAAM,SAAY;IAChC,OAAc,KAAK,SAAW;IAC9B,OAAc,GAAG,SAAS;IAC1B,OAAc,GAAG,SAAS;IAC1B,OAAc,MAAM,SAAY;IAEhC,OAAc,gBAAgB,cAA8B;IAG5D,OAAc,kBAAkB,SAAY;IAC5C,OAAc,eAAe,SAAkB;IAE/C,OAAc,+BAA+B,gBAA8C;IAC3F,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,qBAAqB,iBAA+C;IAClF,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,4BAA4B,8BAAwC;IAGlF,OAAc,iBAAiB,SAAqB;IACpD,OAAc,QAAQ,SAAsB;IAC5C,OAAc,aAAa,SAAU;IACrC,OAAc,eAAe,SAAoB;IACjD,OAAc,oBAAoB,SAAU;IAC5C,OAAc,qBAAqB,SAAW;IAE9C,OAAc,wBAAwB,iBAAkD;IACxF,OAAc,+BAA+B,iBAAyD;IACtG,OAAc,mBAAmB,YAAwE;IACzG,OAAc,0BAA0B,YAA+E;IAGvH,OAAc,SAAS,SAAc;IACrC,OAAc,0BAA0B,kBAGtC;IAEF,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC,OAAO,CAAC,MAAM,CAAC,gCAAgC;WAIjC,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAI3E,OAAO,CAAC,MAAM,CAAC,6BAA6B;WAU9B,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAG3D"}
|
|
@@ -70,8 +70,8 @@ Builtin.REGEXP_CLASS_SIGNATURE = _a.buildBuiltInClassSignature(_a.REGEXP);
|
|
|
70
70
|
Builtin.REGEXP_CLASS_TYPE = new Type_1.ClassType(_a.REGEXP_CLASS_SIGNATURE);
|
|
71
71
|
Builtin.BUILT_IN_CLASS_SIGNATURE_MAP = _a.buildBuiltInClassSignatureMap();
|
|
72
72
|
// constants for iterator
|
|
73
|
-
Builtin.ITERATOR_FUNCTION = 'iterator';
|
|
74
|
-
Builtin.ITERATOR = '
|
|
73
|
+
Builtin.ITERATOR_FUNCTION = 'Symbol.iterator';
|
|
74
|
+
Builtin.ITERATOR = 'IterableIterator';
|
|
75
75
|
Builtin.ITERATOR_NEXT = 'next';
|
|
76
76
|
Builtin.ITERATOR_RESULT = 'IteratorResult';
|
|
77
77
|
Builtin.ITERATOR_RESULT_DONE = 'done';
|
|
@@ -163,7 +163,7 @@ class DummyMainCreater {
|
|
|
163
163
|
let superCls = method.getDeclaringArkClass().getSuperClass();
|
|
164
164
|
let methodInSuperCls = superCls === null || superCls === void 0 ? void 0 : superCls.getMethodWithName(method.getName());
|
|
165
165
|
if (methodInSuperCls) {
|
|
166
|
-
paramType = (_a = methodInSuperCls.getParameters()
|
|
166
|
+
paramType = (_a = methodInSuperCls.getParameters()[paramIdx]) === null || _a === void 0 ? void 0 : _a.getType();
|
|
167
167
|
method = methodInSuperCls;
|
|
168
168
|
}
|
|
169
169
|
}
|
|
@@ -38,6 +38,7 @@ export declare class IRInference {
|
|
|
38
38
|
private static processForEach;
|
|
39
39
|
static inferLocal(base: Local, arkMethod: ArkMethod): void;
|
|
40
40
|
private static generateNewFieldSignature;
|
|
41
|
+
private static repairType;
|
|
41
42
|
static inferAnonymousClass(anon: ArkClass | null, declaredSignature: ClassSignature, set?: Set<string>): void;
|
|
42
43
|
private static assignAnonMethod;
|
|
43
44
|
private static assignAnonField;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAKH,SAAS,EAKT,IAAI,EAKP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EAErB,mBAAmB,EACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,EAGH,cAAc,EAEd,eAAe,EAElB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAEH,WAAW,EAEX,mBAAmB,EACnB,eAAe,EAElB,MAAM,aAAa,CAAC;AAYrB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAoB,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKlF,qBAAa,WAAW;IACpB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAqB/B,OAAO,CAAC,MAAM,CAAC,gBAAgB;WAMjB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;WAyB9B,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;
|
|
1
|
+
{"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"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"}
|
|
@@ -111,6 +111,10 @@ class IRInference {
|
|
|
111
111
|
this.inferExportInfos(file);
|
|
112
112
|
}
|
|
113
113
|
static inferStaticInvokeExpr(expr, arkMethod) {
|
|
114
|
+
const fileSignature = expr.getMethodSignature().getDeclaringClassSignature().getDeclaringFileSignature();
|
|
115
|
+
if (fileSignature !== ArkSignature_1.FileSignature.DEFAULT && fileSignature !== Builtin_1.Builtin.BUILT_IN_CLASSES_FILE_SIGNATURE) {
|
|
116
|
+
return expr;
|
|
117
|
+
}
|
|
114
118
|
const arkClass = arkMethod.getDeclaringArkClass();
|
|
115
119
|
const methodName = expr.getMethodSignature().getMethodSubSignature().getMethodName();
|
|
116
120
|
expr.getArgs().forEach(arg => TypeInference_1.TypeInference.inferValueType(arg, arkMethod));
|
|
@@ -227,10 +231,12 @@ class IRInference {
|
|
|
227
231
|
if (type instanceof Type_1.FunctionType) {
|
|
228
232
|
const methodSignature = type.getMethodSignature();
|
|
229
233
|
// because of last stmt is ArkReturnVoidStmt, the ArkInvokeStmt at -2 before ArkReturnVoidStmt.
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
+
const stmts = (_b = (_a = arkMethod.getDeclaringArkFile().getScene().getMethod(methodSignature)) === null || _a === void 0 ? void 0 : _a.getCfg()) === null || _b === void 0 ? void 0 : _b.getStmts();
|
|
235
|
+
if (stmts) {
|
|
236
|
+
const endStmt = stmts[stmts.length - 2];
|
|
237
|
+
if (endStmt instanceof Stmt_1.ArkInvokeStmt) {
|
|
238
|
+
methodSignature.getMethodSubSignature().setReturnType(endStmt.getInvokeExpr().getType());
|
|
239
|
+
}
|
|
234
240
|
}
|
|
235
241
|
expr.setMethodSignature(methodSignature);
|
|
236
242
|
return expr;
|
|
@@ -424,18 +430,14 @@ class IRInference {
|
|
|
424
430
|
return null;
|
|
425
431
|
}
|
|
426
432
|
static inferInvokeExprWithArray(methodName, expr, baseType, scene) {
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
expr.setRealGenericTypes([baseType.getBaseType()]);
|
|
431
|
-
return expr;
|
|
432
|
-
}
|
|
433
|
+
const arrayInterface = scene.getSdkGlobal(Builtin_1.Builtin.ARRAY);
|
|
434
|
+
if (arrayInterface instanceof ArkClass_1.ArkClass) {
|
|
435
|
+
return this.inferInvokeExpr(expr, new Type_1.ClassType(arrayInterface.getSignature(), [baseType.getBaseType()]), methodName, scene);
|
|
433
436
|
}
|
|
434
|
-
else {
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
}
|
|
437
|
+
else if (methodName === Builtin_1.Builtin.ITERATOR_FUNCTION) {
|
|
438
|
+
expr.getMethodSignature().getMethodSubSignature().setReturnType(Builtin_1.Builtin.ITERATOR_CLASS_TYPE);
|
|
439
|
+
expr.setRealGenericTypes([baseType.getBaseType()]);
|
|
440
|
+
return expr;
|
|
439
441
|
}
|
|
440
442
|
return null;
|
|
441
443
|
}
|
|
@@ -472,7 +474,7 @@ class IRInference {
|
|
|
472
474
|
const methodSignature = method.matchMethodSignature(expr.getArgs());
|
|
473
475
|
TypeInference_1.TypeInference.inferSignatureReturnType(methodSignature, method);
|
|
474
476
|
expr.setMethodSignature(this.replaceMethodSignature(expr.getMethodSignature(), methodSignature));
|
|
475
|
-
expr.setRealGenericTypes(IRInference.getRealTypes(
|
|
477
|
+
expr.setRealGenericTypes(IRInference.getRealTypes(expr, declaredClass, baseType, method));
|
|
476
478
|
if (method.isStatic() && expr instanceof Expr_1.ArkInstanceInvokeExpr) {
|
|
477
479
|
return new Expr_1.ArkStaticInvokeExpr(methodSignature, expr.getArgs(), expr.getRealGenericTypes());
|
|
478
480
|
}
|
|
@@ -504,27 +506,36 @@ class IRInference {
|
|
|
504
506
|
expr.setMethodSignature(new ArkSignature_1.MethodSignature(baseType.getClassSignature(), subSignature));
|
|
505
507
|
return expr;
|
|
506
508
|
}
|
|
507
|
-
else if (methodName === Builtin_1.Builtin.ITERATOR_NEXT
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
return expr;
|
|
513
|
-
}
|
|
509
|
+
else if (methodName === Builtin_1.Builtin.ITERATOR_NEXT &&
|
|
510
|
+
baseType.getClassSignature().getDeclaringFileSignature().getProjectName() === Builtin_1.Builtin.DUMMY_PROJECT_NAME) {
|
|
511
|
+
expr.getMethodSignature().getMethodSubSignature().setReturnType(Builtin_1.Builtin.ITERATOR_RESULT_CLASS_TYPE);
|
|
512
|
+
expr.setRealGenericTypes(baseType.getRealGenericTypes());
|
|
513
|
+
return expr;
|
|
514
514
|
}
|
|
515
515
|
return null;
|
|
516
516
|
}
|
|
517
|
-
static getRealTypes(
|
|
517
|
+
static getRealTypes(expr, declaredClass, baseType, method) {
|
|
518
|
+
var _a;
|
|
518
519
|
let realTypes;
|
|
519
|
-
|
|
520
|
-
|
|
520
|
+
const tmp = [];
|
|
521
|
+
if (method.getGenericTypes()) {
|
|
522
|
+
expr.getMethodSignature().getMethodSubSignature().getParameters()
|
|
523
|
+
.filter(p => !p.getName().startsWith(Const_1.LEXICAL_ENV_NAME_PREFIX))
|
|
524
|
+
.forEach((p, i) => {
|
|
525
|
+
if (TypeInference_1.TypeInference.checkType(p.getType(), t => t instanceof Type_1.GenericType)) {
|
|
526
|
+
tmp.push(expr.getArg(i).getType());
|
|
527
|
+
}
|
|
528
|
+
});
|
|
521
529
|
}
|
|
522
|
-
|
|
523
|
-
realTypes =
|
|
530
|
+
if (tmp.length > 0) {
|
|
531
|
+
realTypes = tmp;
|
|
524
532
|
}
|
|
525
533
|
else if (declaredClass === null || declaredClass === void 0 ? void 0 : declaredClass.hasComponentDecorator()) {
|
|
526
534
|
realTypes = [new Type_1.ClassType(declaredClass === null || declaredClass === void 0 ? void 0 : declaredClass.getSignature())];
|
|
527
535
|
}
|
|
536
|
+
else {
|
|
537
|
+
realTypes = (_a = baseType.getRealGenericTypes()) !== null && _a !== void 0 ? _a : declaredClass === null || declaredClass === void 0 ? void 0 : declaredClass.getRealTypes();
|
|
538
|
+
}
|
|
528
539
|
return realTypes;
|
|
529
540
|
}
|
|
530
541
|
static replaceMethodSignature(init, declared) {
|
|
@@ -596,24 +607,13 @@ class IRInference {
|
|
|
596
607
|
}
|
|
597
608
|
const fieldName = ref.getFieldName().replace(/[\"|\']/g, '');
|
|
598
609
|
const propertyAndType = TypeInference_1.TypeInference.inferFieldType(baseType, fieldName, arkClass);
|
|
599
|
-
let propertyType = propertyAndType === null || propertyAndType === void 0 ? void 0 : propertyAndType[1];
|
|
600
|
-
if (!propertyType || propertyType instanceof Type_1.UnknownType) {
|
|
601
|
-
const newType = TypeInference_1.TypeInference.inferBaseType(fieldName, arkClass);
|
|
602
|
-
if (newType) {
|
|
603
|
-
propertyType = newType;
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
else if (TypeInference_1.TypeInference.isUnclearType(propertyType)) {
|
|
607
|
-
const newType = TypeInference_1.TypeInference.inferUnclearedType(propertyType, arkClass);
|
|
608
|
-
if (newType) {
|
|
609
|
-
propertyType = newType;
|
|
610
|
-
}
|
|
611
|
-
}
|
|
610
|
+
let propertyType = IRInference.repairType(propertyAndType === null || propertyAndType === void 0 ? void 0 : propertyAndType[1], fieldName, arkClass);
|
|
612
611
|
let staticFlag;
|
|
613
612
|
let signature;
|
|
614
613
|
if (baseType instanceof Type_1.ClassType) {
|
|
615
614
|
const property = propertyAndType === null || propertyAndType === void 0 ? void 0 : propertyAndType[0];
|
|
616
|
-
if (property instanceof ArkField_1.ArkField && property.getCategory() !== ArkField_1.FieldCategory.ENUM_MEMBER
|
|
615
|
+
if (property instanceof ArkField_1.ArkField && property.getCategory() !== ArkField_1.FieldCategory.ENUM_MEMBER &&
|
|
616
|
+
!(property.getType() instanceof Type_1.GenericType)) {
|
|
617
617
|
return property.getSignature();
|
|
618
618
|
}
|
|
619
619
|
staticFlag =
|
|
@@ -630,6 +630,21 @@ class IRInference {
|
|
|
630
630
|
}
|
|
631
631
|
return new ArkSignature_1.FieldSignature(fieldName, signature, propertyType !== null && propertyType !== void 0 ? propertyType : ref.getType(), staticFlag);
|
|
632
632
|
}
|
|
633
|
+
static repairType(propertyType, fieldName, arkClass) {
|
|
634
|
+
if (!propertyType || propertyType instanceof Type_1.UnknownType) {
|
|
635
|
+
const newType = TypeInference_1.TypeInference.inferBaseType(fieldName, arkClass);
|
|
636
|
+
if (newType) {
|
|
637
|
+
propertyType = newType;
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
else if (TypeInference_1.TypeInference.isUnclearType(propertyType)) {
|
|
641
|
+
const newType = TypeInference_1.TypeInference.inferUnclearedType(propertyType, arkClass);
|
|
642
|
+
if (newType) {
|
|
643
|
+
propertyType = newType;
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
return propertyType;
|
|
647
|
+
}
|
|
633
648
|
static inferAnonymousClass(anon, declaredSignature, set = new Set()) {
|
|
634
649
|
if (!anon) {
|
|
635
650
|
return;
|
|
@@ -675,7 +690,8 @@ class IRInference {
|
|
|
675
690
|
}
|
|
676
691
|
}
|
|
677
692
|
const type = property.getSignature().getType();
|
|
678
|
-
const
|
|
693
|
+
const fieldInitializer = anonField.getInitializer();
|
|
694
|
+
const lastStmt = fieldInitializer[fieldInitializer.length - 1];
|
|
679
695
|
if (lastStmt instanceof Stmt_1.ArkAssignStmt) {
|
|
680
696
|
const rightType = lastStmt.getRightOp().getType();
|
|
681
697
|
if (type instanceof Type_1.ClassType) {
|
|
@@ -798,7 +814,7 @@ class IRInference {
|
|
|
798
814
|
var _a, _b, _c;
|
|
799
815
|
const paramType = ref.getType();
|
|
800
816
|
if (paramType instanceof Type_1.UnknownType || paramType instanceof Type_1.UnclearReferenceType) {
|
|
801
|
-
const signature = (_b = (_a = arkMethod.getDeclareSignatures()) === null || _a === void 0 ? void 0 : _a
|
|
817
|
+
const signature = (_b = (_a = arkMethod.getDeclareSignatures()) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : arkMethod.getSignature();
|
|
802
818
|
const type1 = (_c = signature.getMethodSubSignature().getParameters()[ref.getIndex()]) === null || _c === void 0 ? void 0 : _c.getType();
|
|
803
819
|
if (!TypeInference_1.TypeInference.isUnclearType(type1)) {
|
|
804
820
|
ref.setType(type1);
|
|
@@ -11,6 +11,7 @@ import { Scene } from '../../Scene';
|
|
|
11
11
|
import { ArkBaseModel } from '../model/ArkBaseModel';
|
|
12
12
|
export declare class ModelUtils {
|
|
13
13
|
static implicitArkUIBuilderMethods: Set<ArkMethod>;
|
|
14
|
+
static dispose(): void;
|
|
14
15
|
static getMethodSignatureFromArkClass(arkClass: ArkClass, methodName: string): MethodSignature | null;
|
|
15
16
|
static getClassWithNameInNamespaceRecursively(className: string, ns: ArkNamespace): ArkClass | null;
|
|
16
17
|
static getClassWithNameFromClass(className: string, startFrom: ArkClass): ArkClass | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/ModelUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAEH,cAAc,EAKd,eAAe,EAEf,SAAS,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAc,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C,OAAO,
|
|
1
|
+
{"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/ModelUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,6 +60,13 @@ const Stmt_1 = require("../base/Stmt");
|
|
|
60
60
|
const Ref_1 = require("../base/Ref");
|
|
61
61
|
const SdkUtils_1 = require("./SdkUtils");
|
|
62
62
|
class ModelUtils {
|
|
63
|
+
/*
|
|
64
|
+
* Set static field to be null, then all related objects could be freed by GC.
|
|
65
|
+
* Static field implicitArkUIBuilderMethods is only used during method body building, the dispose method should be called after build all body.
|
|
66
|
+
*/
|
|
67
|
+
static dispose() {
|
|
68
|
+
this.implicitArkUIBuilderMethods.clear();
|
|
69
|
+
}
|
|
63
70
|
static getMethodSignatureFromArkClass(arkClass, methodName) {
|
|
64
71
|
for (const arkMethod of arkClass.getMethods()) {
|
|
65
72
|
if (arkMethod.getName() === methodName) {
|
|
@@ -2,11 +2,24 @@ import { ArkFile } from '../model/ArkFile';
|
|
|
2
2
|
import { ArkExport } from '../model/ArkExport';
|
|
3
3
|
import { ArkMethod } from '../model/ArkMethod';
|
|
4
4
|
import { AbstractFieldRef } from '../base/Ref';
|
|
5
|
+
import { Sdk } from '../../Config';
|
|
5
6
|
export declare class SdkUtils {
|
|
7
|
+
private static esVersion;
|
|
8
|
+
private static esVersionMap;
|
|
6
9
|
private static sdkImportMap;
|
|
10
|
+
static BUILT_IN_NAME: string;
|
|
11
|
+
private static BUILT_IN_PATH;
|
|
12
|
+
static BUILT_IN_SDK: Sdk;
|
|
13
|
+
static setEsVersion(buildProfile: any): void;
|
|
14
|
+
static fetchBuiltInFiles(): string[];
|
|
15
|
+
private static dfsFiles;
|
|
16
|
+
static dispose(): void;
|
|
7
17
|
static buildSdkImportMap(file: ArkFile): void;
|
|
8
18
|
static getImportSdkFile(from: string): ArkFile | undefined;
|
|
9
|
-
static
|
|
19
|
+
static loadGlobalAPI(file: ArkFile, globalMap: Map<string, ArkExport>): void;
|
|
20
|
+
static mergeGlobalAPI(file: ArkFile, globalMap: Map<string, ArkExport>): void;
|
|
21
|
+
static loadAPI(api: ArkExport, globalMap: Map<string, ArkExport>, override?: boolean): void;
|
|
22
|
+
static postInferredSdk(file: ArkFile, globalMap: Map<string, ArkExport>): void;
|
|
10
23
|
private static loadClass;
|
|
11
24
|
private static loadGlobalLocal;
|
|
12
25
|
private static copyMembers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SdkUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/SdkUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAc,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"SdkUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/SdkUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAc,MAAM,oBAAoB,CAAC;AAO3D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAMnC,qBAAa,QAAQ;IACjB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAoB;IAC5C,OAAO,CAAC,MAAM,CAAC,YAAY,CAGxB;IAEH,OAAO,CAAC,MAAM,CAAC,YAAY,CAAoD;IAC/E,OAAc,aAAa,SAAc;IACzC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAsC;IAClE,OAAc,YAAY,EAAE,GAAG,CAI7B;WAEY,YAAY,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI;WAQrC,iBAAiB,IAAI,MAAM,EAAE;IAqB3C,OAAO,CAAC,MAAM,CAAC,QAAQ;WAaT,OAAO,IAAI,IAAI;WAIf,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;WAOtC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;WAInD,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;WAyBrE,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;WAetE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,GAAE,OAAe,GAAG,IAAI;WAY3F,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAoBrF,OAAO,CAAC,MAAM,CAAC,SAAS;IAiBxB,OAAO,CAAC,MAAM,CAAC,eAAe;IA0B9B,OAAO,CAAC,MAAM,CAAC,WAAW;WAkBZ,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;CAUxF"}
|