arkanalyzer 1.0.39 → 1.0.40
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/pointerAnalysis/PagBuilder.js +5 -5
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +1 -0
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +8 -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 +1 -0
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +34 -0
- 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 +108 -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/Scc.js +1 -1
- package/lib/core/graph/builder/CfgBuilder.d.ts +1 -0
- package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/CfgBuilder.js +15 -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 +3 -0
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +2 -2
- 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/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 +3 -3
- 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/config/arkanalyzer.json
CHANGED
|
@@ -7,15 +7,19 @@
|
|
|
7
7
|
".d.ts"
|
|
8
8
|
],
|
|
9
9
|
"enableLeadingComments": false,
|
|
10
|
+
"enableBuiltIn": true,
|
|
10
11
|
"ignoreFileNames": [
|
|
11
12
|
"oh_modules",
|
|
12
13
|
"node_modules",
|
|
13
14
|
"build-tools",
|
|
14
|
-
"hvigorfile.ts"
|
|
15
|
+
"hvigorfile.ts",
|
|
16
|
+
"hvigorfile.js",
|
|
17
|
+
"hvigor-wrapper.js"
|
|
15
18
|
],
|
|
16
19
|
"sdkGlobalFolders": [
|
|
17
20
|
"component",
|
|
18
|
-
"@internal"
|
|
21
|
+
"@internal",
|
|
22
|
+
"ohos-typescript"
|
|
19
23
|
],
|
|
20
24
|
"tsconfig": "tsconfig.json"
|
|
21
25
|
}
|
package/lib/Config.d.ts
CHANGED
package/lib/Config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD,MAAM,WAAW,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE;YACJ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;SAC3B,CAAC;KACL,CAAC;CACL;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAC9G,MAAM,WAAW,YAAY;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAAC;CACvC;AAID,qBAAa,WAAW;IACpB,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,sBAAsB,CAAc;IAE5C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAa;IAE5B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,WAAW,CAAsD;IAEzE,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,aAAa,CAAoC;IAEzD,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,CAAC,EAAE,YAAY;IAK3B,UAAU,IAAI,YAAY;IAIjC;;;;;;;OAOG;IACI,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAUzH;;;;;;;;;;;;OAYG;IACI,mBAAmB,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI;IAMzD,qBAAqB,CACxB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,EACZ,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GACrC,IAAI;IAgBP,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,sBAAsB;IAgBvB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAiC3C,oBAAoB,IAAI,MAAM;IAI9B,yBAAyB,IAAI,MAAM;IAInC,eAAe,IAAI,MAAM,EAAE;IAI3B,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIzC,WAAW,IAAI,MAAM,EAAE;IAIvB,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC;IAIvC,aAAa,IAAI,MAAM;IAIvB,UAAU,IAAI,GAAG,EAAE;IAI1B,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,iBAAiB;CAY5B"}
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD,MAAM,WAAW,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE;YACJ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;SAC3B,CAAC;KACL,CAAC;CACL;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAC9G,MAAM,WAAW,YAAY;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAAC;CACvC;AAID,qBAAa,WAAW;IACpB,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,sBAAsB,CAAc;IAE5C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAa;IAE5B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,WAAW,CAAsD;IAEzE,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,aAAa,CAAoC;IAEzD,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,CAAC,EAAE,YAAY;IAK3B,UAAU,IAAI,YAAY;IAIjC;;;;;;;OAOG;IACI,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAUzH;;;;;;;;;;;;OAYG;IACI,mBAAmB,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI;IAMzD,qBAAqB,CACxB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,EACZ,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GACrC,IAAI;IAgBP,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,sBAAsB;IAgBvB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAiC3C,oBAAoB,IAAI,MAAM;IAI9B,yBAAyB,IAAI,MAAM;IAInC,eAAe,IAAI,MAAM,EAAE;IAI3B,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIzC,WAAW,IAAI,MAAM,EAAE;IAIvB,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC;IAIvC,aAAa,IAAI,MAAM;IAIvB,UAAU,IAAI,GAAG,EAAE;IAI1B,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,iBAAiB;CAY5B"}
|
package/lib/Scene.d.ts
CHANGED
|
@@ -10,11 +10,11 @@ import { ArkExport } from './core/model/ArkExport';
|
|
|
10
10
|
import { CallGraph } from './callgraph/model/CallGraph';
|
|
11
11
|
declare enum SceneBuildStage {
|
|
12
12
|
BUILD_INIT = 0,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
SDK_INFERRED = 1,
|
|
14
|
+
CLASS_DONE = 2,
|
|
15
|
+
METHOD_DONE = 3,
|
|
16
|
+
CLASS_COLLECTED = 4,
|
|
17
|
+
METHOD_COLLECTED = 5,
|
|
18
18
|
TYPE_INFERRED = 6
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
@@ -50,6 +50,7 @@ export declare class Scene {
|
|
|
50
50
|
private unhandledFilePaths;
|
|
51
51
|
private unhandledSdkFilePaths;
|
|
52
52
|
constructor();
|
|
53
|
+
dispose(): void;
|
|
53
54
|
getOptions(): SceneOptions;
|
|
54
55
|
getOverRides(): Map<string, string>;
|
|
55
56
|
getOverRideDependencyMap(): Map<string, unknown>;
|
package/lib/Scene.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../src/Scene.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,EAAY,MAAM,UAAU,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/G,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK1C,OAAO,EAAE,SAAS,EAA0B,MAAM,wBAAwB,CAAC;AAG3E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../src/Scene.ts"],"names":[],"mappings":"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"}
|
package/lib/Scene.js
CHANGED
|
@@ -63,15 +63,17 @@ const IRInference_1 = require("./core/common/IRInference");
|
|
|
63
63
|
const TSConst_1 = require("./core/common/TSConst");
|
|
64
64
|
const EtsConst_1 = require("./core/common/EtsConst");
|
|
65
65
|
const SdkUtils_1 = require("./core/common/SdkUtils");
|
|
66
|
+
const PointerAnalysisConfig_1 = require("./callgraph/pointerAnalysis/PointerAnalysisConfig");
|
|
67
|
+
const ValueUtil_1 = require("./core/common/ValueUtil");
|
|
66
68
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'Scene');
|
|
67
69
|
var SceneBuildStage;
|
|
68
70
|
(function (SceneBuildStage) {
|
|
69
71
|
SceneBuildStage[SceneBuildStage["BUILD_INIT"] = 0] = "BUILD_INIT";
|
|
70
|
-
SceneBuildStage[SceneBuildStage["
|
|
71
|
-
SceneBuildStage[SceneBuildStage["
|
|
72
|
-
SceneBuildStage[SceneBuildStage["
|
|
73
|
-
SceneBuildStage[SceneBuildStage["
|
|
74
|
-
SceneBuildStage[SceneBuildStage["
|
|
72
|
+
SceneBuildStage[SceneBuildStage["SDK_INFERRED"] = 1] = "SDK_INFERRED";
|
|
73
|
+
SceneBuildStage[SceneBuildStage["CLASS_DONE"] = 2] = "CLASS_DONE";
|
|
74
|
+
SceneBuildStage[SceneBuildStage["METHOD_DONE"] = 3] = "METHOD_DONE";
|
|
75
|
+
SceneBuildStage[SceneBuildStage["CLASS_COLLECTED"] = 4] = "CLASS_COLLECTED";
|
|
76
|
+
SceneBuildStage[SceneBuildStage["METHOD_COLLECTED"] = 5] = "METHOD_COLLECTED";
|
|
75
77
|
SceneBuildStage[SceneBuildStage["TYPE_INFERRED"] = 6] = "TYPE_INFERRED";
|
|
76
78
|
})(SceneBuildStage || (SceneBuildStage = {}));
|
|
77
79
|
/**
|
|
@@ -108,6 +110,16 @@ class Scene {
|
|
|
108
110
|
this.unhandledFilePaths = [];
|
|
109
111
|
this.unhandledSdkFilePaths = [];
|
|
110
112
|
}
|
|
113
|
+
/*
|
|
114
|
+
* Set all static field to be null, then all related objects could be freed by GC.
|
|
115
|
+
* This method could be called before drop Scene.
|
|
116
|
+
*/
|
|
117
|
+
dispose() {
|
|
118
|
+
PointerAnalysisConfig_1.PointerAnalysisConfig.dispose();
|
|
119
|
+
SdkUtils_1.SdkUtils.dispose();
|
|
120
|
+
ValueUtil_1.ValueUtil.dispose();
|
|
121
|
+
ModelUtils_1.ModelUtils.dispose();
|
|
122
|
+
}
|
|
111
123
|
getOptions() {
|
|
112
124
|
return this.options;
|
|
113
125
|
}
|
|
@@ -192,6 +204,9 @@ class Scene {
|
|
|
192
204
|
logger.warn('This project has no tsconfig.json!');
|
|
193
205
|
}
|
|
194
206
|
// handle sdks
|
|
207
|
+
if (this.options.enableBuiltIn && !sceneConfig.getSdksObj().find(sdk => sdk.name === SdkUtils_1.SdkUtils.BUILT_IN_NAME)) {
|
|
208
|
+
sceneConfig.getSdksObj().unshift(SdkUtils_1.SdkUtils.BUILT_IN_SDK);
|
|
209
|
+
}
|
|
195
210
|
(_a = sceneConfig.getSdksObj()) === null || _a === void 0 ? void 0 : _a.forEach(sdk => {
|
|
196
211
|
if (!sdk.moduleName) {
|
|
197
212
|
this.buildSdk(sdk.name, sdk.path);
|
|
@@ -207,6 +222,16 @@ class Scene {
|
|
|
207
222
|
}
|
|
208
223
|
}
|
|
209
224
|
});
|
|
225
|
+
if (this.buildStage < SceneBuildStage.SDK_INFERRED) {
|
|
226
|
+
this.sdkArkFilesMap.forEach(file => {
|
|
227
|
+
IRInference_1.IRInference.inferFile(file);
|
|
228
|
+
SdkUtils_1.SdkUtils.mergeGlobalAPI(file, this.sdkGlobalMap);
|
|
229
|
+
});
|
|
230
|
+
this.sdkArkFilesMap.forEach(file => {
|
|
231
|
+
SdkUtils_1.SdkUtils.postInferredSdk(file, this.sdkGlobalMap);
|
|
232
|
+
});
|
|
233
|
+
this.buildStage = SceneBuildStage.SDK_INFERRED;
|
|
234
|
+
}
|
|
210
235
|
this.fileLanguages = sceneConfig.getFileLanguages();
|
|
211
236
|
}
|
|
212
237
|
parseBuildProfile() {
|
|
@@ -221,6 +246,7 @@ class Scene {
|
|
|
221
246
|
return;
|
|
222
247
|
}
|
|
223
248
|
const buildProfileJson = (0, json5parser_1.parseJsonText)(configurationsText);
|
|
249
|
+
SdkUtils_1.SdkUtils.setEsVersion(buildProfileJson);
|
|
224
250
|
const modules = buildProfileJson.modules;
|
|
225
251
|
if (modules instanceof Array) {
|
|
226
252
|
modules.forEach(module => {
|
|
@@ -318,6 +344,7 @@ class Scene {
|
|
|
318
344
|
method.freeBodyBuilder();
|
|
319
345
|
}
|
|
320
346
|
}
|
|
347
|
+
ModelUtils_1.ModelUtils.dispose();
|
|
321
348
|
this.buildStage = SceneBuildStage.METHOD_DONE;
|
|
322
349
|
}
|
|
323
350
|
genArkFiles() {
|
|
@@ -549,7 +576,8 @@ class Scene {
|
|
|
549
576
|
this.filesMap.set(arkFile.getFileSignature().toMapKey(), arkFile);
|
|
550
577
|
}
|
|
551
578
|
buildSdk(sdkName, sdkPath) {
|
|
552
|
-
const allFiles =
|
|
579
|
+
const allFiles = sdkName === SdkUtils_1.SdkUtils.BUILT_IN_NAME ? SdkUtils_1.SdkUtils.fetchBuiltInFiles() :
|
|
580
|
+
(0, getAllFiles_1.getAllFiles)(sdkPath, this.options.supportFileExts, this.options.ignoreFileNames);
|
|
553
581
|
allFiles.forEach(file => {
|
|
554
582
|
logger.trace('=== parse sdk file:', file);
|
|
555
583
|
try {
|
|
@@ -564,7 +592,7 @@ class Scene {
|
|
|
564
592
|
const fileSig = arkFile.getFileSignature().toMapKey();
|
|
565
593
|
this.sdkArkFilesMap.set(fileSig, arkFile);
|
|
566
594
|
SdkUtils_1.SdkUtils.buildSdkImportMap(arkFile);
|
|
567
|
-
SdkUtils_1.SdkUtils.
|
|
595
|
+
SdkUtils_1.SdkUtils.loadGlobalAPI(arkFile, this.sdkGlobalMap);
|
|
568
596
|
}
|
|
569
597
|
catch (error) {
|
|
570
598
|
logger.error('Error parsing file:', file, error);
|
|
@@ -963,17 +991,6 @@ class Scene {
|
|
|
963
991
|
```
|
|
964
992
|
*/
|
|
965
993
|
inferTypes() {
|
|
966
|
-
if (this.buildStage < SceneBuildStage.SDK_INFERRED) {
|
|
967
|
-
this.sdkArkFilesMap.forEach(file => {
|
|
968
|
-
try {
|
|
969
|
-
IRInference_1.IRInference.inferFile(file);
|
|
970
|
-
}
|
|
971
|
-
catch (error) {
|
|
972
|
-
logger.error('Error inferring types of sdk file:', file.getFileSignature(), error);
|
|
973
|
-
}
|
|
974
|
-
});
|
|
975
|
-
this.buildStage = SceneBuildStage.SDK_INFERRED;
|
|
976
|
-
}
|
|
977
994
|
this.filesMap.forEach(file => {
|
|
978
995
|
try {
|
|
979
996
|
IRInference_1.IRInference.inferFile(file);
|
|
@@ -986,6 +1003,7 @@ class Scene {
|
|
|
986
1003
|
this.getMethodsMap(true);
|
|
987
1004
|
this.buildStage = SceneBuildStage.TYPE_INFERRED;
|
|
988
1005
|
}
|
|
1006
|
+
SdkUtils_1.SdkUtils.dispose();
|
|
989
1007
|
}
|
|
990
1008
|
/**
|
|
991
1009
|
* Iterate all assignment statements in methods,
|
|
@@ -771,7 +771,7 @@ class PagBuilder {
|
|
|
771
771
|
}
|
|
772
772
|
let thisAssignStmt = (_a = callee
|
|
773
773
|
.getCfg()) === null || _a === void 0 ? void 0 : _a.getStmts().filter(s => s instanceof Stmt_1.ArkAssignStmt && s.getRightOp() instanceof Ref_1.ArkThisRef);
|
|
774
|
-
let thisPtr = (thisAssignStmt === null || thisAssignStmt === void 0 ? void 0 : thisAssignStmt
|
|
774
|
+
let thisPtr = (thisAssignStmt === null || thisAssignStmt === void 0 ? void 0 : thisAssignStmt[0]).getRightOp();
|
|
775
775
|
if (!thisPtr) {
|
|
776
776
|
throw new Error('Can not get this ptr');
|
|
777
777
|
}
|
|
@@ -845,8 +845,8 @@ class PagBuilder {
|
|
|
845
845
|
}
|
|
846
846
|
// add args to parameters edges
|
|
847
847
|
for (let i = offset; i <= args.length; i++) {
|
|
848
|
-
let arg = args
|
|
849
|
-
let param = params
|
|
848
|
+
let arg = args[i];
|
|
849
|
+
let param = params[i - offset];
|
|
850
850
|
if (!arg || !param) {
|
|
851
851
|
return srcNodes;
|
|
852
852
|
}
|
|
@@ -872,7 +872,7 @@ class PagBuilder {
|
|
|
872
872
|
// container value is the base value of callstmt, its points-to is PagNewContainerExprNode
|
|
873
873
|
let srcNodes = [];
|
|
874
874
|
let containerValue = callStmt.getInvokeExpr().getBase();
|
|
875
|
-
let param = params
|
|
875
|
+
let param = params[0];
|
|
876
876
|
if (!containerValue || !param) {
|
|
877
877
|
return srcNodes;
|
|
878
878
|
}
|
|
@@ -990,7 +990,7 @@ class PagBuilder {
|
|
|
990
990
|
}
|
|
991
991
|
// add args to parameters edges
|
|
992
992
|
for (let i = 0; i < argNum; i++) {
|
|
993
|
-
let arg = (_b = cs.args) === null || _b === void 0 ? void 0 : _b
|
|
993
|
+
let arg = (_b = cs.args) === null || _b === void 0 ? void 0 : _b[i];
|
|
994
994
|
let paramValue;
|
|
995
995
|
if (arg instanceof Local_1.Local && arg.getType() instanceof Type_1.FunctionType) {
|
|
996
996
|
// TODO: cannot find value
|
|
@@ -15,6 +15,7 @@ export declare class PointerAnalysisConfig {
|
|
|
15
15
|
ptsCollectionType: PtsCollectionType;
|
|
16
16
|
ptsCollectionCtor: new () => IPtsCollection<NodeID>;
|
|
17
17
|
constructor(kLimit: number, outputDirectory: string, detectTypeDiff?: boolean, dotDump?: boolean, unhandledFuncDump?: boolean, analysisScale?: PtaAnalysisScale, ptsCoType?: PtsCollectionType);
|
|
18
|
+
static dispose(): void;
|
|
18
19
|
static create(kLimit: number, outputDirectory: string, detectTypeDiff?: boolean, dotDump?: boolean, unhandledFuncDump?: boolean, analysisScale?: PtaAnalysisScale, ptsCoType?: PtsCollectionType): PointerAnalysisConfig;
|
|
19
20
|
static getInstance(): PointerAnalysisConfig;
|
|
20
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointerAnalysisConfig.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysisConfig.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA2B,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,oBAAY,gBAAgB;IACxB,YAAY,IAAI;IAChB,WAAW,IAAI;CAClB;AAED,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAExC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,gBAAgB,CAAC;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,EAAE,UAAU,cAAc,CAAC,MAAM,CAAC,CAAC;gBAOvD,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,cAAc,GAAE,OAAe,EAC/B,OAAO,GAAE,OAAe,EACxB,iBAAiB,GAAE,OAAe,EAClC,aAAa,GAAE,gBAAgD,EAC/D,SAAS,oBAAwB;WAuBvB,MAAM,CAChB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,cAAc,GAAE,OAAe,EAC/B,OAAO,GAAE,OAAe,EACxB,iBAAiB,GAAE,OAAe,EAClC,aAAa,GAAE,gBAAgD,EAC/D,SAAS,oBAAwB,GAClC,qBAAqB;WAgBV,WAAW,IAAI,qBAAqB;CAMrD"}
|
|
1
|
+
{"version":3,"file":"PointerAnalysisConfig.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysisConfig.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA2B,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,oBAAY,gBAAgB;IACxB,YAAY,IAAI;IAChB,WAAW,IAAI;CAClB;AAED,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAExC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,gBAAgB,CAAC;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,EAAE,UAAU,cAAc,CAAC,MAAM,CAAC,CAAC;gBAOvD,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,cAAc,GAAE,OAAe,EAC/B,OAAO,GAAE,OAAe,EACxB,iBAAiB,GAAE,OAAe,EAClC,aAAa,GAAE,gBAAgD,EAC/D,SAAS,oBAAwB;WAuBvB,OAAO,IAAI,IAAI;WASf,MAAM,CAChB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,cAAc,GAAE,OAAe,EAC/B,OAAO,GAAE,OAAe,EACxB,iBAAiB,GAAE,OAAe,EAClC,aAAa,GAAE,gBAAgD,EAC/D,SAAS,oBAAwB,GAClC,qBAAqB;WAgBV,WAAW,IAAI,qBAAqB;CAMrD"}
|
|
@@ -66,6 +66,14 @@ class PointerAnalysisConfig {
|
|
|
66
66
|
fs.mkdirSync(outputDirectory, { recursive: true });
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
+
/*
|
|
70
|
+
* Set static field to be null, then all related objects could be freed by GC.
|
|
71
|
+
* Class PointerAnalysisConfig has been exported by ArkAnalyzer, the dispose method should be called by users themselves before free this class.
|
|
72
|
+
*/
|
|
73
|
+
static dispose() {
|
|
74
|
+
// @ts-expect-error: only be used to free the memory
|
|
75
|
+
this.instance = null;
|
|
76
|
+
}
|
|
69
77
|
/*
|
|
70
78
|
* Create Singleton instance
|
|
71
79
|
* The instance can be created multi-times and be overwrited
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Expr.d.ts","sourceRoot":"","sources":["../../../src/core/base/Expr.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"Expr.d.ts","sourceRoot":"","sources":["../../../src/core/base/Expr.ts"],"names":[],"mappings":"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"}
|
package/lib/core/base/Expr.js
CHANGED
|
@@ -101,7 +101,8 @@ class AbstractInvokeExpr extends AbstractExpr {
|
|
|
101
101
|
}
|
|
102
102
|
getType() {
|
|
103
103
|
const type = this.methodSignature.getType();
|
|
104
|
-
if (
|
|
104
|
+
if (TypeInference_1.TypeInference.checkType(type, t => t instanceof Type_1.GenericType || t instanceof Type_1.AnyType) &&
|
|
105
|
+
this.realGenericTypes) {
|
|
105
106
|
return TypeInference_1.TypeInference.replaceTypeWithReal(type, this.realGenericTypes);
|
|
106
107
|
}
|
|
107
108
|
return type;
|
|
@@ -292,6 +293,15 @@ class ArkNewExpr extends AbstractExpr {
|
|
|
292
293
|
if (TypeInference_1.TypeInference.isUnclearType(type)) {
|
|
293
294
|
type = TypeInference_1.TypeInference.inferUnclearRefName(className, arkMethod.getDeclaringArkClass());
|
|
294
295
|
}
|
|
296
|
+
if (type instanceof Type_1.AliasType) {
|
|
297
|
+
const originalType = TypeInference_1.TypeInference.replaceAliasType(type);
|
|
298
|
+
if (originalType instanceof Type_1.FunctionType) {
|
|
299
|
+
type = originalType.getMethodSignature().getMethodSubSignature().getReturnType();
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
type = originalType;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
295
305
|
if (type && type instanceof Type_1.ClassType) {
|
|
296
306
|
const instanceType = (_b = this.constructorSignature(type, arkMethod)) !== null && _b !== void 0 ? _b : type;
|
|
297
307
|
this.classType.setClassSignature(instanceType.getClassSignature());
|
package/lib/core/base/Local.js
CHANGED
|
@@ -41,7 +41,7 @@ class Local {
|
|
|
41
41
|
const declaringArkClass = arkMethod.getDeclaringArkClass();
|
|
42
42
|
this.type = new Type_1.ClassType(declaringArkClass.getSignature(), declaringArkClass.getRealTypes());
|
|
43
43
|
}
|
|
44
|
-
else if (TypeInference_1.TypeInference.isUnclearType(this.type)) {
|
|
44
|
+
else if (!this.name.startsWith(Const_1.NAME_PREFIX) && TypeInference_1.TypeInference.isUnclearType(this.type)) {
|
|
45
45
|
const type = (_a = TypeInference_1.TypeInference.inferBaseType(this.name, arkMethod.getDeclaringArkClass())) !== null && _a !== void 0 ? _a : (_b = ModelUtils_1.ModelUtils.findDeclaredLocal(this, arkMethod)) === null || _b === void 0 ? void 0 : _b.getType();
|
|
46
46
|
if (type) {
|
|
47
47
|
this.type = type;
|
|
@@ -38,6 +38,7 @@ export declare class ArkIRTransformer {
|
|
|
38
38
|
tsNodeToValueAndStmts(node: ts.Node): ValueAndStmts;
|
|
39
39
|
private functionDeclarationToStmts;
|
|
40
40
|
private classDeclarationToStmts;
|
|
41
|
+
private parameterPropertyToStmts;
|
|
41
42
|
private returnStatementToStmts;
|
|
42
43
|
private blockToStmts;
|
|
43
44
|
private expressionStatementToStmts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,EAOH,cAAc,EAGd,aAAa,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAA2E,SAAS,EAAE,MAAM,aAAa,CAAC;AACjH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAA2F,IAAI,EAAE,MAAM,cAAc,CAAC;AACrJ,OAAO,EAAE,SAAS,EAA6E,MAAM,cAAc,CAAC;AAKpH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,OAAO,EAAE,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AAYjE,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,sBAAsB,EAAE,YAAY,EAAE,CAAC;IACvC,KAAK,EAAE,IAAI,EAAE,CAAC;CACjB,CAAC;AAEF,qBAAa,SAAU,SAAQ,IAAI;gBACnB,IAAI,EAAE,MAAM;IAKjB,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,gBAAgB;IACzB,gBAAuB,2BAA2B,qBAAqB;IACvE,gBAAuB,0BAA0B,yBAAyB;IAC1E,gBAAuB,uCAAuC,SAA0D;IACxH,gBAAuB,wCAAwC,SAA2D;IAC1H,gBAAuB,mCAAmC,SAAuD;IAEjH,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,mBAAmB,CAAsB;gBAErC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS;IAO1D,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC;IAIvB,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAI3C,YAAY,IAAI,KAAK;IAIrB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAInE,aAAa,IAAI,IAAI,EAAE;IAcvB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -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.parameterPropertyToStmts(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,37 @@ 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
|
+
if (paramNode.modifiers === undefined || !ts.isIdentifier(paramNode.name)) {
|
|
197
|
+
return [];
|
|
198
|
+
}
|
|
199
|
+
const fieldName = paramNode.name.text;
|
|
200
|
+
const arkClass = this.declaringMethod.getDeclaringArkClass();
|
|
201
|
+
const fieldSignature = (_a = arkClass.getFieldWithName(fieldName)) === null || _a === void 0 ? void 0 : _a.getSignature();
|
|
202
|
+
const paramLocal = Array.from(this.getLocals()).find(local => local.getName() === fieldName);
|
|
203
|
+
if (fieldSignature === undefined || paramLocal === undefined) {
|
|
204
|
+
return [];
|
|
205
|
+
}
|
|
206
|
+
const leftOp = new Ref_1.ArkInstanceFieldRef(this.getThisLocal(), fieldSignature);
|
|
207
|
+
const fieldAssignStmt = new Stmt_1.ArkAssignStmt(leftOp, paramLocal);
|
|
208
|
+
fieldAssignStmt.setOperandOriginalPositions([Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT]);
|
|
209
|
+
// If the parameter has initializer, the related stmts should be added into class instance init method.
|
|
210
|
+
const instInitMethodCfg = (_b = arkClass.getInstanceInitMethod().getBody()) === null || _b === void 0 ? void 0 : _b.getCfg();
|
|
211
|
+
const instInitStmts = (_c = instInitMethodCfg === null || instInitMethodCfg === void 0 ? void 0 : instInitMethodCfg.getStartingBlock()) === null || _c === void 0 ? void 0 : _c.getStmts();
|
|
212
|
+
if (paramNode.initializer && instInitStmts && instInitMethodCfg) {
|
|
213
|
+
const { value: instanceInitValue, valueOriginalPositions: instanceInitPositions, stmts: instanceInitStmts, } = this.tsNodeToValueAndStmts(paramNode.initializer);
|
|
214
|
+
const instanceAssignStmt = new Stmt_1.ArkAssignStmt(leftOp, instanceInitValue);
|
|
215
|
+
instanceAssignStmt.setOperandOriginalPositions([Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT, ...instanceInitPositions]);
|
|
216
|
+
const newInstanceInitStmts = [...instanceInitStmts, instanceAssignStmt];
|
|
217
|
+
// 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.
|
|
218
|
+
newInstanceInitStmts.forEach(stmt => stmt.setCfg(instInitMethodCfg));
|
|
219
|
+
// The last stmt of instance init method is return stmt, so all the initializer stmts should be added before return stmt.
|
|
220
|
+
instInitStmts.splice(instInitStmts.length - 1, 0, ...newInstanceInitStmts);
|
|
221
|
+
}
|
|
222
|
+
return [fieldAssignStmt];
|
|
223
|
+
}
|
|
190
224
|
returnStatementToStmts(returnStatement) {
|
|
191
225
|
const stmts = [];
|
|
192
226
|
if (returnStatement.expression) {
|
|
@@ -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;IAC5B,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAyB;IACzC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAA+D;IACnF,OAAO,CAAC,wBAAwB,CAAS;gBAE7B,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS;IAQ9F,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC;IAIvB,YAAY,IAAI,KAAK;IAIrB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAInE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,IAAgC,GAAG,KAAK;IAMlF,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAIlD,OAAO,CAAC,YAAY;IAOb,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,aAAa;IAkE1D,OAAO,CAAC,kCAAkC;IAW1C,OAAO,CAAC,6BAA6B;IAQrC,OAAO,CAAC,oCAAoC;IA4C5C,OAAO,CAAC,qCAAqC;IAwC7C,OAAO,CAAC,2BAA2B;IA6BnC,OAAO,CAAC,sBAAsB;IAmD9B,OAAO,CAAC,8BAA8B;IAqBtC,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,qCAAqC;IAU7C,OAAO,CAAC,8BAA8B;IAoBtC,OAAO,CAAC,iCAAiC;IAYzC,OAAO,CAAC,2BAA2B;IA8CnC,OAAO,CAAC,oBAAoB;IAqD5B,OAAO,CAAC,uCAAuC;IAoD/C,OAAO,CAAC,qBAAqB;IAgD7B,OAAO,CAAC,yBAAyB;IAmBjC,OAAO,CAAC,+BAA+B;IA2DvC,OAAO,CAAC,sCAAsC;IA4C9C,OAAO,CAAC,6BAA6B;IAMrC,OAAO,CAAC,2BAA2B;
|
|
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';
|