arkanalyzer 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/arkanalyzer.json +8 -0
- package/docs/IR2ts-stmt.md +81 -0
- package/docs/IR2ts.md +82 -0
- package/lib/Config.d.ts +29 -1
- package/lib/Config.d.ts.map +1 -1
- package/lib/Config.js +44 -11
- package/lib/Scene.d.ts +152 -9
- package/lib/Scene.d.ts.map +1 -1
- package/lib/Scene.js +233 -66
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +2 -1
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/AbstractAnalysis.js +14 -7
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +2 -4
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +2 -3
- package/lib/callgraph/common/Statistics.js +1 -1
- package/lib/callgraph/model/BaseGraph.js +2 -2
- package/lib/callgraph/model/CallGraph.d.ts +3 -2
- package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
- package/lib/callgraph/model/CallGraph.js +23 -14
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +2 -2
- package/lib/callgraph/model/builder/CallGraphBuilder.js +3 -3
- package/lib/callgraph/pointerAnalysis/Context.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Context.js +0 -1
- package/lib/callgraph/pointerAnalysis/Pag.d.ts +36 -9
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +130 -37
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +34 -5
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +479 -126
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +6 -0
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +107 -45
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PtsDS.js +0 -2
- package/lib/core/base/Constant.d.ts +37 -5
- package/lib/core/base/Constant.d.ts.map +1 -1
- package/lib/core/base/Constant.js +58 -8
- package/lib/core/base/Expr.d.ts +98 -13
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +295 -127
- package/lib/core/base/Local.d.ts +70 -5
- package/lib/core/base/Local.d.ts.map +1 -1
- package/lib/core/base/Local.js +77 -4
- package/lib/core/base/Ref.d.ts +79 -5
- package/lib/core/base/Ref.d.ts.map +1 -1
- package/lib/core/base/Ref.js +143 -38
- package/lib/core/base/Stmt.d.ts +126 -12
- package/lib/core/base/Stmt.d.ts.map +1 -1
- package/lib/core/base/Stmt.js +135 -28
- package/lib/core/base/Type.d.ts +11 -2
- package/lib/core/base/Type.d.ts.map +1 -1
- package/lib/core/base/Type.js +47 -42
- package/lib/core/base/Value.d.ts +24 -2
- package/lib/core/base/Value.d.ts.map +1 -1
- package/lib/core/common/ArkError.d.ts +15 -0
- package/lib/core/common/ArkError.d.ts.map +1 -0
- package/lib/core/common/ArkError.js +28 -0
- package/lib/core/common/ArkIRTransformer.d.ts +12 -5
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +90 -45
- package/lib/core/common/BodyBuilder.d.ts +2 -0
- package/lib/core/common/BodyBuilder.d.ts.map +1 -1
- package/lib/core/common/BodyBuilder.js +5 -2
- package/lib/core/common/Builtin.js +1 -1
- package/lib/core/common/CfgBuilder.d.ts +12 -7
- package/lib/core/common/CfgBuilder.d.ts.map +1 -1
- package/lib/core/common/CfgBuilder.js +336 -140
- package/lib/core/common/Const.d.ts +15 -10
- package/lib/core/common/Const.d.ts.map +1 -1
- package/lib/core/common/Const.js +18 -11
- package/lib/core/common/DummyMainCreater.d.ts +5 -4
- package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
- package/lib/core/common/DummyMainCreater.js +43 -28
- package/lib/core/common/EtsConst.d.ts +1 -0
- package/lib/core/common/EtsConst.d.ts.map +1 -1
- package/lib/core/common/EtsConst.js +2 -1
- package/lib/core/common/ExprUseReplacer.js +8 -8
- package/lib/core/common/IRUtils.d.ts +7 -0
- package/lib/core/common/IRUtils.d.ts.map +1 -1
- package/lib/core/common/IRUtils.js +34 -2
- 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 +39 -36
- package/lib/core/common/RefUseReplacer.js +3 -3
- package/lib/core/common/StmtUseReplacer.js +4 -4
- package/lib/core/common/TSConst.d.ts +10 -3
- package/lib/core/common/TSConst.d.ts.map +1 -1
- package/lib/core/common/TSConst.js +11 -4
- package/lib/core/common/TypeInference.d.ts +8 -2
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +222 -90
- package/lib/core/common/ValueUtil.d.ts +0 -4
- package/lib/core/common/ValueUtil.d.ts.map +1 -1
- package/lib/core/common/ValueUtil.js +10 -27
- package/lib/core/common/VisibleValue.js +1 -1
- package/lib/core/dataflow/DataflowProblem.d.ts +1 -0
- package/lib/core/dataflow/DataflowProblem.d.ts.map +1 -1
- package/lib/core/dataflow/DataflowProblem.js +4 -4
- package/lib/core/dataflow/DataflowSolver.d.ts +20 -16
- package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -1
- package/lib/core/dataflow/DataflowSolver.js +67 -78
- package/lib/core/dataflow/TiantAnalysis.d.ts +1 -0
- package/lib/core/dataflow/TiantAnalysis.d.ts.map +1 -1
- package/lib/core/dataflow/TiantAnalysis.js +42 -28
- package/lib/core/dataflow/UndefinedVariable.d.ts +15 -1
- package/lib/core/dataflow/UndefinedVariable.d.ts.map +1 -1
- package/lib/core/dataflow/UndefinedVariable.js +122 -76
- package/lib/core/dataflow/Util.d.ts +5 -1
- package/lib/core/dataflow/Util.d.ts.map +1 -1
- package/lib/core/dataflow/Util.js +43 -22
- package/lib/core/graph/BasicBlock.d.ts +72 -0
- package/lib/core/graph/BasicBlock.d.ts.map +1 -1
- package/lib/core/graph/BasicBlock.js +165 -3
- package/lib/core/graph/Cfg.d.ts +30 -1
- package/lib/core/graph/Cfg.d.ts.map +1 -1
- package/lib/core/graph/Cfg.js +131 -11
- package/lib/core/graph/DominanceFinder.js +7 -7
- package/lib/core/graph/DominanceTree.js +4 -4
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/ViewTreeBuilder.js +6 -5
- package/lib/core/model/ArkBaseModel.d.ts +59 -0
- package/lib/core/model/ArkBaseModel.d.ts.map +1 -0
- package/lib/core/model/ArkBaseModel.js +271 -0
- package/lib/core/model/ArkBody.d.ts +3 -9
- package/lib/core/model/ArkBody.d.ts.map +1 -1
- package/lib/core/model/ArkBody.js +3 -14
- package/lib/core/model/ArkClass.d.ts +107 -13
- package/lib/core/model/ArkClass.d.ts.map +1 -1
- package/lib/core/model/ArkClass.js +152 -54
- package/lib/core/model/ArkExport.d.ts +8 -7
- package/lib/core/model/ArkExport.d.ts.map +1 -1
- package/lib/core/model/ArkExport.js +16 -18
- package/lib/core/model/ArkField.d.ts +16 -13
- package/lib/core/model/ArkField.d.ts.map +1 -1
- package/lib/core/model/ArkField.js +18 -62
- package/lib/core/model/ArkFile.d.ts +42 -0
- package/lib/core/model/ArkFile.d.ts.map +1 -1
- package/lib/core/model/ArkFile.js +58 -0
- package/lib/core/model/ArkImport.d.ts +9 -7
- package/lib/core/model/ArkImport.d.ts.map +1 -1
- package/lib/core/model/ArkImport.js +11 -12
- package/lib/core/model/ArkMetadata.d.ts +20 -0
- package/lib/core/model/ArkMetadata.d.ts.map +1 -0
- package/lib/core/model/ArkMetadata.js +44 -0
- package/lib/core/model/ArkMethod.d.ts +195 -17
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +363 -46
- package/lib/core/model/ArkNamespace.d.ts +6 -8
- package/lib/core/model/ArkNamespace.d.ts.map +1 -1
- package/lib/core/model/ArkNamespace.js +16 -20
- package/lib/core/model/ArkSignature.d.ts +41 -0
- package/lib/core/model/ArkSignature.d.ts.map +1 -1
- package/lib/core/model/ArkSignature.js +76 -19
- package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkClassBuilder.js +60 -49
- package/lib/core/model/builder/ArkExportBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkExportBuilder.js +12 -6
- package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkFieldBuilder.js +13 -9
- package/lib/core/model/builder/ArkFileBuilder.js +1 -3
- package/lib/core/model/builder/ArkImportBuilder.d.ts +2 -1
- package/lib/core/model/builder/ArkImportBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkImportBuilder.js +16 -13
- package/lib/core/model/builder/ArkMethodBuilder.d.ts +3 -1
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +105 -45
- package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkNamespaceBuilder.js +4 -5
- package/lib/core/model/builder/builderUtils.d.ts +2 -1
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +63 -43
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -3
- package/lib/save/ArkStream.js +1 -1
- package/lib/save/DotPrinter.d.ts.map +1 -1
- package/lib/save/DotPrinter.js +1 -15
- package/lib/save/GraphPrinter.d.ts.map +1 -1
- package/lib/save/GraphPrinter.js +4 -2
- package/lib/save/JsonPrinter.js +5 -5
- package/lib/save/ViewTreePrinter.d.ts +16 -0
- package/lib/save/ViewTreePrinter.d.ts.map +1 -0
- package/lib/save/ViewTreePrinter.js +130 -0
- package/lib/save/source/SourceBase.d.ts +2 -2
- package/lib/save/source/SourceBase.d.ts.map +1 -1
- package/lib/save/source/SourceBase.js +6 -13
- package/lib/save/source/SourceBody.d.ts.map +1 -1
- package/lib/save/source/SourceBody.js +27 -14
- package/lib/save/source/SourceClass.d.ts.map +1 -1
- package/lib/save/source/SourceClass.js +12 -8
- package/lib/save/source/SourceField.d.ts.map +1 -1
- package/lib/save/source/SourceField.js +6 -2
- package/lib/save/source/SourceMethod.d.ts.map +1 -1
- package/lib/save/source/SourceMethod.js +10 -3
- package/lib/save/source/SourceModule.d.ts.map +1 -1
- package/lib/save/source/SourceModule.js +16 -10
- package/lib/save/source/SourceNamespace.d.ts.map +1 -1
- package/lib/save/source/SourceNamespace.js +4 -0
- package/lib/save/source/SourceStmt.d.ts +1 -1
- package/lib/save/source/SourceStmt.d.ts.map +1 -1
- package/lib/save/source/SourceStmt.js +37 -25
- package/lib/save/source/SourceTransformer.d.ts +6 -0
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +82 -51
- package/lib/save/source/SourceUtils.d.ts.map +1 -1
- package/lib/save/source/SourceUtils.js +12 -11
- package/lib/transformer/StaticSingleAssignmentFormer.js +3 -3
- package/lib/utils/CfgStructualAnalysis.d.ts +1 -0
- package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -1
- package/lib/utils/CfgStructualAnalysis.js +103 -72
- package/lib/utils/callGraphUtils.d.ts.map +1 -1
- package/lib/utils/callGraphUtils.js +7 -10
- package/lib/utils/crypto_utils.d.ts +6 -0
- package/lib/utils/crypto_utils.d.ts.map +1 -0
- package/lib/utils/crypto_utils.js +57 -0
- package/lib/utils/entryMethodUtils.d.ts.map +1 -1
- package/lib/utils/entryMethodUtils.js +27 -26
- package/lib/utils/getAllFiles.d.ts +1 -1
- package/lib/utils/getAllFiles.d.ts.map +1 -1
- package/lib/utils/getAllFiles.js +4 -5
- package/lib/utils/logger.js +2 -2
- package/package.json +3 -2
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
1
|
+
export declare const NAME_DELIMITER = "$";
|
|
2
|
+
export declare const NAME_PREFIX = "%";
|
|
3
|
+
export declare const UNKNOWN_NAME = "unk";
|
|
4
|
+
export declare const DEFAULT_NAME = "dflt";
|
|
5
|
+
export declare const DEFAULT_ARK_CLASS_NAME: string;
|
|
6
|
+
export declare const DEFAULT_ARK_METHOD_NAME: string;
|
|
7
|
+
export declare const ANONYMOUS_CLASS_PREFIX: string;
|
|
8
|
+
export declare const ANONYMOUS_CLASS_DELIMITER = "$";
|
|
9
|
+
export declare const INSTANCE_INIT_METHOD_NAME: string;
|
|
10
|
+
export declare const STATIC_INIT_METHOD_NAME: string;
|
|
11
|
+
export declare const ANONYMOUS_METHOD_PREFIX: string;
|
|
8
12
|
export declare const CALL_SIGNATURE_NAME = "create";
|
|
9
|
-
export declare const UNKNOWN_PROJECT_NAME
|
|
10
|
-
export declare const UNKNOWN_FILE_NAME
|
|
11
|
-
export declare const UNKNOWN_NAMESPACE_NAME
|
|
13
|
+
export declare const UNKNOWN_PROJECT_NAME: string;
|
|
14
|
+
export declare const UNKNOWN_FILE_NAME: string;
|
|
15
|
+
export declare const UNKNOWN_NAMESPACE_NAME: string;
|
|
12
16
|
export declare const UNKNOWN_CLASS_NAME = "";
|
|
13
17
|
export declare const UNKNOWN_FIELD_NAME = "";
|
|
14
18
|
export declare const UNKNOWN_METHOD_NAME = "";
|
|
19
|
+
export declare const TEMP_LOCAL_PREFIX = "%";
|
|
15
20
|
//# sourceMappingURL=Const.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Const.d.ts","sourceRoot":"","sources":["../../../src/core/common/Const.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"Const.d.ts","sourceRoot":"","sources":["../../../src/core/common/Const.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,YAAY,SAAS,CAAC;AAGnC,eAAO,MAAM,sBAAsB,QAA6B,CAAC;AACjE,eAAO,MAAM,uBAAuB,QAA6B,CAAC;AAClE,eAAO,MAAM,sBAAsB,QAAqB,CAAC;AACzD,eAAO,MAAM,yBAAyB,MAAiB,CAAC;AAGxD,eAAO,MAAM,yBAAyB,QAA2B,CAAC;AAClE,eAAO,MAAM,uBAAuB,QAA2B,CAAC;AAChE,eAAO,MAAM,uBAAuB,QAAqB,CAAC;AAC1D,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAG5C,eAAO,MAAM,oBAAoB,QAA6B,CAAC;AAC/D,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,eAAO,MAAM,sBAAsB,QAA6B,CAAC;AACjE,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAGtC,eAAO,MAAM,iBAAiB,MAAc,CAAC"}
|
package/lib/core/common/Const.js
CHANGED
|
@@ -14,21 +14,28 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.UNKNOWN_METHOD_NAME = exports.UNKNOWN_FIELD_NAME = exports.UNKNOWN_CLASS_NAME = exports.UNKNOWN_NAMESPACE_NAME = exports.UNKNOWN_FILE_NAME = exports.UNKNOWN_PROJECT_NAME = exports.CALL_SIGNATURE_NAME = exports.ANONYMOUS_METHOD_PREFIX = exports.STATIC_INIT_METHOD_NAME = exports.INSTANCE_INIT_METHOD_NAME = exports.ANONYMOUS_CLASS_DELIMITER = exports.ANONYMOUS_CLASS_PREFIX = exports.DEFAULT_ARK_METHOD_NAME = exports.DEFAULT_ARK_CLASS_NAME = void 0;
|
|
17
|
+
exports.TEMP_LOCAL_PREFIX = exports.UNKNOWN_METHOD_NAME = exports.UNKNOWN_FIELD_NAME = exports.UNKNOWN_CLASS_NAME = exports.UNKNOWN_NAMESPACE_NAME = exports.UNKNOWN_FILE_NAME = exports.UNKNOWN_PROJECT_NAME = exports.CALL_SIGNATURE_NAME = exports.ANONYMOUS_METHOD_PREFIX = exports.STATIC_INIT_METHOD_NAME = exports.INSTANCE_INIT_METHOD_NAME = exports.ANONYMOUS_CLASS_DELIMITER = exports.ANONYMOUS_CLASS_PREFIX = exports.DEFAULT_ARK_METHOD_NAME = exports.DEFAULT_ARK_CLASS_NAME = exports.DEFAULT_NAME = exports.UNKNOWN_NAME = exports.NAME_PREFIX = exports.NAME_DELIMITER = void 0;
|
|
18
|
+
// names
|
|
19
|
+
exports.NAME_DELIMITER = '$';
|
|
20
|
+
exports.NAME_PREFIX = '%';
|
|
21
|
+
exports.UNKNOWN_NAME = 'unk';
|
|
22
|
+
exports.DEFAULT_NAME = 'dflt';
|
|
18
23
|
// ArkClass const
|
|
19
|
-
exports.DEFAULT_ARK_CLASS_NAME =
|
|
20
|
-
exports.DEFAULT_ARK_METHOD_NAME =
|
|
21
|
-
exports.ANONYMOUS_CLASS_PREFIX = '
|
|
22
|
-
exports.ANONYMOUS_CLASS_DELIMITER =
|
|
24
|
+
exports.DEFAULT_ARK_CLASS_NAME = exports.NAME_PREFIX + exports.DEFAULT_NAME;
|
|
25
|
+
exports.DEFAULT_ARK_METHOD_NAME = exports.NAME_PREFIX + exports.DEFAULT_NAME;
|
|
26
|
+
exports.ANONYMOUS_CLASS_PREFIX = exports.NAME_PREFIX + 'AC';
|
|
27
|
+
exports.ANONYMOUS_CLASS_DELIMITER = exports.NAME_DELIMITER;
|
|
23
28
|
// ArkMethod const
|
|
24
|
-
exports.INSTANCE_INIT_METHOD_NAME = '
|
|
25
|
-
exports.STATIC_INIT_METHOD_NAME = '
|
|
26
|
-
exports.ANONYMOUS_METHOD_PREFIX = '
|
|
29
|
+
exports.INSTANCE_INIT_METHOD_NAME = exports.NAME_PREFIX + 'instInit';
|
|
30
|
+
exports.STATIC_INIT_METHOD_NAME = exports.NAME_PREFIX + 'statInit';
|
|
31
|
+
exports.ANONYMOUS_METHOD_PREFIX = exports.NAME_PREFIX + 'AM';
|
|
27
32
|
exports.CALL_SIGNATURE_NAME = 'create';
|
|
28
33
|
// ArkSignature const
|
|
29
|
-
exports.UNKNOWN_PROJECT_NAME =
|
|
30
|
-
exports.UNKNOWN_FILE_NAME =
|
|
31
|
-
exports.UNKNOWN_NAMESPACE_NAME =
|
|
34
|
+
exports.UNKNOWN_PROJECT_NAME = exports.NAME_PREFIX + exports.UNKNOWN_NAME;
|
|
35
|
+
exports.UNKNOWN_FILE_NAME = exports.NAME_PREFIX + exports.UNKNOWN_NAME;
|
|
36
|
+
exports.UNKNOWN_NAMESPACE_NAME = exports.NAME_PREFIX + exports.UNKNOWN_NAME;
|
|
32
37
|
exports.UNKNOWN_CLASS_NAME = ''; // temp for being compatible with existing type inference
|
|
33
38
|
exports.UNKNOWN_FIELD_NAME = ''; // temp for being compatible with existing type inference
|
|
34
39
|
exports.UNKNOWN_METHOD_NAME = ''; // temp for being compatible with existing type inference
|
|
40
|
+
// IR const
|
|
41
|
+
exports.TEMP_LOCAL_PREFIX = exports.NAME_PREFIX;
|
|
@@ -3,20 +3,20 @@ import { ArkClass } from '../model/ArkClass';
|
|
|
3
3
|
import { ArkMethod } from '../model/ArkMethod';
|
|
4
4
|
/**
|
|
5
5
|
收集所有的onCreate,onStart等函数,构造一个虚拟函数,具体为:
|
|
6
|
-
|
|
6
|
+
%statInit()
|
|
7
7
|
...
|
|
8
8
|
count = 0
|
|
9
9
|
while (true) {
|
|
10
|
-
if (count
|
|
10
|
+
if (count === 1) {
|
|
11
11
|
temp1 = new ability
|
|
12
12
|
temp2 = new want
|
|
13
13
|
temp1.onCreate(temp2)
|
|
14
14
|
}
|
|
15
|
-
if (count
|
|
15
|
+
if (count === 2) {
|
|
16
16
|
onDestroy()
|
|
17
17
|
}
|
|
18
18
|
...
|
|
19
|
-
if (count
|
|
19
|
+
if (count === *) {
|
|
20
20
|
callbackMethod1()
|
|
21
21
|
}
|
|
22
22
|
...
|
|
@@ -40,6 +40,7 @@ export declare class DummyMainCreater {
|
|
|
40
40
|
private addCfg2Stmt;
|
|
41
41
|
getDummyMain(): ArkMethod;
|
|
42
42
|
private getEntryMethodsFromComponents;
|
|
43
|
+
private classInheritsAbility;
|
|
43
44
|
getMethodsFromAllAbilities(): ArkMethod[];
|
|
44
45
|
getEntryMethodsFromModuleJson5(): ArkMethod[];
|
|
45
46
|
getAbilitiesByParseModuleJson(modulePath: string): ArkClass[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DummyMainCreater.d.ts","sourceRoot":"","sources":["../../../src/core/common/DummyMainCreater.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"DummyMainCreater.d.ts","sourceRoot":"","sources":["../../../src/core/common/DummyMainCreater.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAsBpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAY/C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,aAAa,CAA2C;IAChE,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,YAAY,CAAkC;gBAE1C,KAAK,EAAE,KAAK;IAUxB,OAAO,CAAC,iBAAiB;IASlB,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IAI3C,eAAe,IAAI,IAAI;IAiD9B,OAAO,CAAC,kBAAkB;IAkI1B,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,WAAW;IAYZ,YAAY,IAAI,SAAS;IAIhC,OAAO,CAAC,6BAA6B;IAmBrC,OAAO,CAAC,oBAAoB;IAYrB,0BAA0B,IAAI,SAAS,EAAE;IAUzC,8BAA8B,IAAI,SAAS,EAAE;IAkD7C,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IA2B7D,kBAAkB,IAAI,SAAS,EAAE;CAiB3C"}
|
|
@@ -61,24 +61,25 @@ const ArkSignatureBuilder_1 = require("../model/builder/ArkSignatureBuilder");
|
|
|
61
61
|
const TSConst_1 = require("./TSConst");
|
|
62
62
|
const json5parser_1 = require("../../utils/json5parser");
|
|
63
63
|
const logger_1 = __importStar(require("../../utils/logger"));
|
|
64
|
-
const
|
|
64
|
+
const ArkMethodBuilder_1 = require("../model/builder/ArkMethodBuilder");
|
|
65
|
+
const ValueUtil_1 = require("./ValueUtil");
|
|
65
66
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'Scene');
|
|
66
67
|
/**
|
|
67
68
|
收集所有的onCreate,onStart等函数,构造一个虚拟函数,具体为:
|
|
68
|
-
|
|
69
|
+
%statInit()
|
|
69
70
|
...
|
|
70
71
|
count = 0
|
|
71
72
|
while (true) {
|
|
72
|
-
if (count
|
|
73
|
+
if (count === 1) {
|
|
73
74
|
temp1 = new ability
|
|
74
75
|
temp2 = new want
|
|
75
76
|
temp1.onCreate(temp2)
|
|
76
77
|
}
|
|
77
|
-
if (count
|
|
78
|
+
if (count === 2) {
|
|
78
79
|
onDestroy()
|
|
79
80
|
}
|
|
80
81
|
...
|
|
81
|
-
if (count
|
|
82
|
+
if (count === *) {
|
|
82
83
|
callbackMethod1()
|
|
83
84
|
}
|
|
84
85
|
...
|
|
@@ -102,8 +103,8 @@ class DummyMainCreater {
|
|
|
102
103
|
this.buildBuiltInClass();
|
|
103
104
|
}
|
|
104
105
|
buildBuiltInClass() {
|
|
105
|
-
for (const sdkFile of this.scene.
|
|
106
|
-
if (sdkFile.getName()
|
|
106
|
+
for (const sdkFile of this.scene.getSdkArkFiles()) {
|
|
107
|
+
if (sdkFile.getName() === 'api\\@ohos.app.ability.Want.d.ts') {
|
|
107
108
|
const arkClass = sdkFile.getClassWithName('Want');
|
|
108
109
|
this.builtInClass.set('Want', arkClass);
|
|
109
110
|
}
|
|
@@ -118,7 +119,7 @@ class DummyMainCreater {
|
|
|
118
119
|
dummyMainFile.setScene(this.scene);
|
|
119
120
|
const dummyMainFileSignature = new ArkSignature_1.FileSignature(this.scene.getProjectName(), '@dummyFile');
|
|
120
121
|
dummyMainFile.setFileSignature(dummyMainFileSignature);
|
|
121
|
-
this.scene.
|
|
122
|
+
this.scene.setFile(dummyMainFile);
|
|
122
123
|
const dummyMainClass = new ArkClass_1.ArkClass();
|
|
123
124
|
dummyMainClass.setDeclaringArkFile(dummyMainFile);
|
|
124
125
|
const dummyMainClassSignature = new ArkSignature_1.ClassSignature('@dummyClass', dummyMainClass.getDeclaringArkFile().getFileSignature(), ((_a = dummyMainClass.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
|
|
@@ -128,7 +129,9 @@ class DummyMainCreater {
|
|
|
128
129
|
this.dummyMain.setDeclaringArkClass(dummyMainClass);
|
|
129
130
|
const methodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName('@dummyMain');
|
|
130
131
|
const methodSignature = new ArkSignature_1.MethodSignature(this.dummyMain.getDeclaringArkClass().getSignature(), methodSubSignature);
|
|
131
|
-
this.dummyMain.
|
|
132
|
+
this.dummyMain.setImplementationSignature(methodSignature);
|
|
133
|
+
this.dummyMain.setLineCol(0);
|
|
134
|
+
(0, ArkMethodBuilder_1.checkAndUpdateMethod)(this.dummyMain, dummyMainClass);
|
|
132
135
|
dummyMainClass.addMethod(this.dummyMain);
|
|
133
136
|
for (const method of this.entryMethods) {
|
|
134
137
|
if (method.getDeclaringArkClass().isDefaultArkClass()) {
|
|
@@ -138,7 +141,7 @@ class DummyMainCreater {
|
|
|
138
141
|
const declaringArkClass = method.getDeclaringArkClass();
|
|
139
142
|
let newLocal = null;
|
|
140
143
|
for (const local of this.classLocalMap.values()) {
|
|
141
|
-
if ((local === null || local === void 0 ? void 0 : local.getType()).getClassSignature()
|
|
144
|
+
if ((local === null || local === void 0 ? void 0 : local.getType()).getClassSignature() === declaringArkClass.getSignature()) {
|
|
142
145
|
newLocal = local;
|
|
143
146
|
break;
|
|
144
147
|
}
|
|
@@ -151,7 +154,7 @@ class DummyMainCreater {
|
|
|
151
154
|
}
|
|
152
155
|
}
|
|
153
156
|
const localSet = new Set(Array.from(this.classLocalMap.values()).filter((value) => value !== null));
|
|
154
|
-
const dummyBody = new ArkBody_1.ArkBody(localSet,
|
|
157
|
+
const dummyBody = new ArkBody_1.ArkBody(localSet, this.createDummyMainCfg());
|
|
155
158
|
this.dummyMain.setBody(dummyBody);
|
|
156
159
|
this.addCfg2Stmt();
|
|
157
160
|
this.scene.addToMethodsMap(this.dummyMain);
|
|
@@ -161,10 +164,14 @@ class DummyMainCreater {
|
|
|
161
164
|
const dummyCfg = new Cfg_1.Cfg();
|
|
162
165
|
dummyCfg.setDeclaringMethod(this.dummyMain);
|
|
163
166
|
const firstBlock = new BasicBlock_1.BasicBlock();
|
|
164
|
-
|
|
167
|
+
let isStartingStmt = true;
|
|
165
168
|
for (const method of this.scene.getStaticInitMethods()) {
|
|
166
169
|
const staticInvokeExpr = new Expr_1.ArkStaticInvokeExpr(method.getSignature(), []);
|
|
167
170
|
const invokeStmt = new Stmt_1.ArkInvokeStmt(staticInvokeExpr);
|
|
171
|
+
if (isStartingStmt) {
|
|
172
|
+
dummyCfg.setStartingStmt(invokeStmt);
|
|
173
|
+
isStartingStmt = false;
|
|
174
|
+
}
|
|
168
175
|
firstBlock.addStmt(invokeStmt);
|
|
169
176
|
}
|
|
170
177
|
const locals = Array.from(new Set(this.classLocalMap.values()));
|
|
@@ -187,15 +194,17 @@ class DummyMainCreater {
|
|
|
187
194
|
}
|
|
188
195
|
}
|
|
189
196
|
const countLocal = new Local_1.Local('count', Type_1.NumberType.getInstance());
|
|
190
|
-
const zero =
|
|
197
|
+
const zero = ValueUtil_1.ValueUtil.getOrCreateNumberConst(0);
|
|
191
198
|
const countAssignStmt = new Stmt_1.ArkAssignStmt(countLocal, zero);
|
|
192
|
-
const truE =
|
|
199
|
+
const truE = ValueUtil_1.ValueUtil.getBooleanConstant(true);
|
|
193
200
|
const conditionTrue = new Expr_1.ArkConditionExpr(truE, zero, Expr_1.RelationalBinaryOperator.Equality);
|
|
194
201
|
const whileStmt = new Stmt_1.ArkIfStmt(conditionTrue);
|
|
195
202
|
firstBlock.addStmt(countAssignStmt);
|
|
203
|
+
dummyCfg.addBlock(firstBlock);
|
|
204
|
+
dummyCfg.setStartingStmt(firstBlock.getStmts()[0]);
|
|
196
205
|
const whileBlock = new BasicBlock_1.BasicBlock();
|
|
197
|
-
dummyCfg.addBlock(whileBlock);
|
|
198
206
|
whileBlock.addStmt(whileStmt);
|
|
207
|
+
dummyCfg.addBlock(whileBlock);
|
|
199
208
|
firstBlock.addSuccessorBlock(whileBlock);
|
|
200
209
|
whileBlock.addPredecessorBlock(firstBlock);
|
|
201
210
|
let lastBlocks = [whileBlock];
|
|
@@ -205,8 +214,8 @@ class DummyMainCreater {
|
|
|
205
214
|
const condition = new Expr_1.ArkConditionExpr(countLocal, new Constant_1.Constant(count.toString(), Type_1.NumberType.getInstance()), Expr_1.RelationalBinaryOperator.Equality);
|
|
206
215
|
const ifStmt = new Stmt_1.ArkIfStmt(condition);
|
|
207
216
|
const ifBlock = new BasicBlock_1.BasicBlock();
|
|
208
|
-
dummyCfg.addBlock(ifBlock);
|
|
209
217
|
ifBlock.addStmt(ifStmt);
|
|
218
|
+
dummyCfg.addBlock(ifBlock);
|
|
210
219
|
for (const block of lastBlocks) {
|
|
211
220
|
ifBlock.addPredecessorBlock(block);
|
|
212
221
|
block.addSuccessorBlock(ifBlock);
|
|
@@ -254,8 +263,8 @@ class DummyMainCreater {
|
|
|
254
263
|
invokeExpr = new Expr_1.ArkStaticInvokeExpr(method.getSignature(), paramLocals);
|
|
255
264
|
}
|
|
256
265
|
const invokeStmt = new Stmt_1.ArkInvokeStmt(invokeExpr);
|
|
257
|
-
dummyCfg.addBlock(invokeBlock);
|
|
258
266
|
invokeBlock.addStmt(invokeStmt);
|
|
267
|
+
dummyCfg.addBlock(invokeBlock);
|
|
259
268
|
ifBlock.addSuccessorBlock(invokeBlock);
|
|
260
269
|
invokeBlock.addPredecessorBlock(ifBlock);
|
|
261
270
|
lastBlocks = [ifBlock, invokeBlock];
|
|
@@ -266,8 +275,8 @@ class DummyMainCreater {
|
|
|
266
275
|
}
|
|
267
276
|
const returnStmt = new Stmt_1.ArkReturnVoidStmt();
|
|
268
277
|
const returnBlock = new BasicBlock_1.BasicBlock();
|
|
269
|
-
dummyCfg.addBlock(returnBlock);
|
|
270
278
|
returnBlock.addStmt(returnStmt);
|
|
279
|
+
dummyCfg.addBlock(returnBlock);
|
|
271
280
|
whileBlock.addSuccessorBlock(returnBlock);
|
|
272
281
|
returnBlock.addPredecessorBlock(whileBlock);
|
|
273
282
|
return dummyCfg;
|
|
@@ -317,10 +326,8 @@ class DummyMainCreater {
|
|
|
317
326
|
if (COMPONENT_BASE_CLASSES.includes(cls.getSuperClassName())) {
|
|
318
327
|
return true;
|
|
319
328
|
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
return true;
|
|
323
|
-
}
|
|
329
|
+
if (cls.hasDecorator('Component')) {
|
|
330
|
+
return true;
|
|
324
331
|
}
|
|
325
332
|
return false;
|
|
326
333
|
})
|
|
@@ -329,11 +336,21 @@ class DummyMainCreater {
|
|
|
329
336
|
});
|
|
330
337
|
return methods;
|
|
331
338
|
}
|
|
339
|
+
classInheritsAbility(arkClass) {
|
|
340
|
+
const ABILITY_BASE_CLASSES = ['UIExtensionAbility', 'Ability', 'FormExtensionAbility', 'UIAbility', 'BackupExtensionAbility'];
|
|
341
|
+
let superClass = arkClass.getSuperClass();
|
|
342
|
+
while (superClass) {
|
|
343
|
+
if (ABILITY_BASE_CLASSES.includes(superClass.getName())) {
|
|
344
|
+
return true;
|
|
345
|
+
}
|
|
346
|
+
superClass = superClass.getSuperClass();
|
|
347
|
+
}
|
|
348
|
+
return false;
|
|
349
|
+
}
|
|
332
350
|
getMethodsFromAllAbilities() {
|
|
333
|
-
const ABILITY_BASE_CLASSES = ['UIExtensionAbility', 'Ability', 'FormExtensionAbility'];
|
|
334
351
|
let methods = [];
|
|
335
352
|
this.scene.getClasses()
|
|
336
|
-
.filter(cls =>
|
|
353
|
+
.filter(cls => this.classInheritsAbility(cls))
|
|
337
354
|
.forEach(cls => {
|
|
338
355
|
methods.push(...cls.getMethods().filter(mtd => entryMethodUtils_1.LIFECYCLE_METHOD_NAME.includes(mtd.getName())));
|
|
339
356
|
});
|
|
@@ -369,10 +386,8 @@ class DummyMainCreater {
|
|
|
369
386
|
const abilityEntryMethods = [];
|
|
370
387
|
let cls = ability;
|
|
371
388
|
for (const method of cls.getMethods()) {
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
continue;
|
|
375
|
-
}
|
|
389
|
+
if (method.isPrivate()) {
|
|
390
|
+
continue;
|
|
376
391
|
}
|
|
377
392
|
for (const mtd of abilityEntryMethods) {
|
|
378
393
|
if (mtd.getName() === method.getName()) {
|
|
@@ -62,4 +62,5 @@ export declare const COMPONENT_COMMON: string;
|
|
|
62
62
|
export declare const COMPONENT_INSTANCE: string;
|
|
63
63
|
export declare const API_INTERNAL: string;
|
|
64
64
|
export declare const COMPONENT_ATTRIBUTE: string;
|
|
65
|
+
export declare const CALL_BACK: string;
|
|
65
66
|
//# sourceMappingURL=EtsConst.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EtsConst.d.ts","sourceRoot":"","sources":["../../../src/core/common/EtsConst.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoyBhC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAgD,CAAC;AAElG,eAAO,MAAM,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAqD/C,CAAC;AAEH,eAAO,MAAM,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAqE,CAAC;AAClH,eAAO,MAAM,eAAe,EAAE,MAAgB,CAAC;AAC/C,eAAO,MAAM,iBAAiB,EAAE,MAAkB,CAAC;AACnD,eAAO,MAAM,uBAAuB,EAAE,MAAuB,CAAC;AAE9D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,eAAO,MAAM,yBAAyB,EAAE,MAAiB,CAAC;AAC1D,eAAO,MAAM,sBAAsB,EAAE,MAAc,CAAC;AACpD,eAAO,MAAM,oBAAoB,EAAE,MAAe,CAAC;AACnD,eAAO,MAAM,gBAAgB,EAAE,MAAiB,CAAC;AACjD,eAAO,MAAM,kBAAkB,EAAE,MAAkB,CAAC;AACpD,eAAO,MAAM,uBAAuB,EAAE,MAAsB,CAAC;AAE7D,eAAO,MAAM,YAAY,EAAE,MAAa,CAAC;AACzC,eAAO,MAAM,mBAAmB,EAAE,MAAmB,CAAC;AACtD,eAAO,MAAM,yBAAyB,EAAE,MAAiB,CAAC;AAC1D,eAAO,MAAM,wBAAwB,EAAE,MAAgB,CAAC;AAExD,eAAO,MAAM,2BAA2B,EAAE,GAAG,CAAC,MAAM,CAKlD,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,MAA0C,CAAC;AACxE,eAAO,MAAM,gBAAgB,EAAE,MAAiB,CAAC;AACjD,eAAO,MAAM,kBAAkB,EAAE,MAAmB,CAAC;AACrD,eAAO,MAAM,YAAY,EAAE,MAA0C,CAAC;AAEtE,eAAO,MAAM,mBAAmB,EAAE,MAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"EtsConst.d.ts","sourceRoot":"","sources":["../../../src/core/common/EtsConst.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoyBhC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAgD,CAAC;AAElG,eAAO,MAAM,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAqD/C,CAAC;AAEH,eAAO,MAAM,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAqE,CAAC;AAClH,eAAO,MAAM,eAAe,EAAE,MAAgB,CAAC;AAC/C,eAAO,MAAM,iBAAiB,EAAE,MAAkB,CAAC;AACnD,eAAO,MAAM,uBAAuB,EAAE,MAAuB,CAAC;AAE9D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,eAAO,MAAM,yBAAyB,EAAE,MAAiB,CAAC;AAC1D,eAAO,MAAM,sBAAsB,EAAE,MAAc,CAAC;AACpD,eAAO,MAAM,oBAAoB,EAAE,MAAe,CAAC;AACnD,eAAO,MAAM,gBAAgB,EAAE,MAAiB,CAAC;AACjD,eAAO,MAAM,kBAAkB,EAAE,MAAkB,CAAC;AACpD,eAAO,MAAM,uBAAuB,EAAE,MAAsB,CAAC;AAE7D,eAAO,MAAM,YAAY,EAAE,MAAa,CAAC;AACzC,eAAO,MAAM,mBAAmB,EAAE,MAAmB,CAAC;AACtD,eAAO,MAAM,yBAAyB,EAAE,MAAiB,CAAC;AAC1D,eAAO,MAAM,wBAAwB,EAAE,MAAgB,CAAC;AAExD,eAAO,MAAM,2BAA2B,EAAE,GAAG,CAAC,MAAM,CAKlD,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,MAA0C,CAAC;AACxE,eAAO,MAAM,gBAAgB,EAAE,MAAiB,CAAC;AACjD,eAAO,MAAM,kBAAkB,EAAE,MAAmB,CAAC;AACrD,eAAO,MAAM,YAAY,EAAE,MAA0C,CAAC;AAEtE,eAAO,MAAM,mBAAmB,EAAE,MAAoB,CAAC;AACvD,eAAO,MAAM,SAAS,EAAE,MAAmB,CAAC"}
|
|
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.COMPONENT_ATTRIBUTE = exports.API_INTERNAL = exports.COMPONENT_INSTANCE = exports.COMPONENT_COMMON = exports.COMPONENT_PATH = exports.SPECIAL_CONTAINER_COMPONENT = exports.COMPONENT_BUILD_FUNCTION = exports.COMPONENT_BRANCH_FUNCTION = exports.COMPONENT_IF_BRANCH = exports.COMPONENT_IF = exports.COMPONENT_LAZY_FOR_EACH = exports.COMPONENT_FOR_EACH = exports.COMPONENT_REPEAT = exports.COMPONENT_CUSTOMVIEW = exports.COMPONENT_POP_FUNCTION = exports.COMPONENT_CREATE_FUNCTION = exports.isEtsContainerComponent = exports.isEtsSystemComponent = exports.isEtsAtomicComponent = exports.BUILDER_PARAM_DECORATOR = exports.BUILDER_DECORATOR = exports.ENTRY_DECORATOR = exports.COMPONENT_DECORATOR = exports.BUILDIN_ATOMIC_COMPONENT = exports.BUILDIN_SYSTEM_COMPONENT = exports.ETS_COMPILER_OPTIONS = void 0;
|
|
20
|
+
exports.CALL_BACK = exports.COMPONENT_ATTRIBUTE = exports.API_INTERNAL = exports.COMPONENT_INSTANCE = exports.COMPONENT_COMMON = exports.COMPONENT_PATH = exports.SPECIAL_CONTAINER_COMPONENT = exports.COMPONENT_BUILD_FUNCTION = exports.COMPONENT_BRANCH_FUNCTION = exports.COMPONENT_IF_BRANCH = exports.COMPONENT_IF = exports.COMPONENT_LAZY_FOR_EACH = exports.COMPONENT_FOR_EACH = exports.COMPONENT_REPEAT = exports.COMPONENT_CUSTOMVIEW = exports.COMPONENT_POP_FUNCTION = exports.COMPONENT_CREATE_FUNCTION = exports.isEtsContainerComponent = exports.isEtsSystemComponent = exports.isEtsAtomicComponent = exports.BUILDER_PARAM_DECORATOR = exports.BUILDER_DECORATOR = exports.ENTRY_DECORATOR = exports.COMPONENT_DECORATOR = exports.BUILDIN_ATOMIC_COMPONENT = exports.BUILDIN_SYSTEM_COMPONENT = exports.ETS_COMPILER_OPTIONS = void 0;
|
|
21
21
|
const path_1 = __importDefault(require("path"));
|
|
22
22
|
exports.ETS_COMPILER_OPTIONS = {
|
|
23
23
|
ets: {
|
|
@@ -916,3 +916,4 @@ exports.COMPONENT_COMMON = 'Common';
|
|
|
916
916
|
exports.COMPONENT_INSTANCE = 'Instance';
|
|
917
917
|
exports.API_INTERNAL = path_1.default.sep + '@internal' + path_1.default.sep;
|
|
918
918
|
exports.COMPONENT_ATTRIBUTE = 'Attribute';
|
|
919
|
+
exports.CALL_BACK = 'Callback';
|
|
@@ -46,41 +46,41 @@ class ExprUseReplacer {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
caseBinopExpr(expr) {
|
|
49
|
-
if (expr.getOp1()
|
|
49
|
+
if (expr.getOp1() === this.oldUse) {
|
|
50
50
|
expr.setOp1(this.newUse);
|
|
51
51
|
}
|
|
52
|
-
if (expr.getOp2()
|
|
52
|
+
if (expr.getOp2() === this.oldUse) {
|
|
53
53
|
expr.setOp2(this.newUse);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
caseInvokeExpr(expr) {
|
|
57
57
|
let args = expr.getArgs();
|
|
58
58
|
for (let i = 0; i < args.length; i++) {
|
|
59
|
-
if (args[i]
|
|
59
|
+
if (args[i] === this.oldUse) {
|
|
60
60
|
args[i] = this.newUse;
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
if (expr instanceof Expr_1.ArkInstanceInvokeExpr && expr.getBase()
|
|
63
|
+
if (expr instanceof Expr_1.ArkInstanceInvokeExpr && expr.getBase() === this.oldUse) {
|
|
64
64
|
expr.setBase(this.newUse);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
caseNewArrayExpr(expr) {
|
|
68
|
-
if (expr.getSize()
|
|
68
|
+
if (expr.getSize() === this.oldUse) {
|
|
69
69
|
expr.setSize(this.newUse);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
caseTypeOfExpr(expr) {
|
|
73
|
-
if (expr.getOp()
|
|
73
|
+
if (expr.getOp() === this.oldUse) {
|
|
74
74
|
expr.setOp(this.newUse);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
caseInstanceOfExpr(expr) {
|
|
78
|
-
if (expr.getOp()
|
|
78
|
+
if (expr.getOp() === this.oldUse) {
|
|
79
79
|
expr.setOp(this.newUse);
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
caseCastExpr(expr) {
|
|
83
|
-
if (expr.getOp()
|
|
83
|
+
if (expr.getOp() === this.oldUse) {
|
|
84
84
|
expr.setOp(this.newUse);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { Value } from '../base/Value';
|
|
2
2
|
import { Scene } from '../../Scene';
|
|
3
|
+
import ts from 'ohos-typescript';
|
|
4
|
+
import { SceneOptions } from '../../Config';
|
|
5
|
+
import { Stmt } from '../base/Stmt';
|
|
6
|
+
import { ArkBaseModel } from '../model/ArkBaseModel';
|
|
3
7
|
export declare class IRUtils {
|
|
4
8
|
static moreThanOneAddress(value: Value): boolean;
|
|
5
9
|
static generateTextForStmt(scene: Scene): void;
|
|
10
|
+
static setLeadingComments(metadata: Stmt | ArkBaseModel, node: ts.Node, sourceFile: ts.SourceFile, options: SceneOptions): void;
|
|
11
|
+
static getLeadingComments(node: ts.Node, sourceFile: ts.SourceFile, options: SceneOptions): string[];
|
|
12
|
+
static isTempLocal(value: Value): boolean;
|
|
6
13
|
}
|
|
7
14
|
//# sourceMappingURL=IRUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IRUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRUtils.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"IRUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRUtils.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,qBAAa,OAAO;WACF,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;WAczC,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;WAWvC,kBAAkB,CAC5B,QAAQ,EAAE,IAAI,GAAG,YAAY,EAC7B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,OAAO,EAAE,YAAY,GACtB,IAAI;WAOO,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE;WAa7F,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;CAGnD"}
|
|
@@ -13,14 +13,25 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
16
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
20
|
exports.IRUtils = void 0;
|
|
18
21
|
const Expr_1 = require("../base/Expr");
|
|
19
22
|
const Ref_1 = require("../base/Ref");
|
|
23
|
+
const ohos_typescript_1 = __importDefault(require("ohos-typescript"));
|
|
24
|
+
const ArkMetadata_1 = require("../model/ArkMetadata");
|
|
25
|
+
const Local_1 = require("../base/Local");
|
|
26
|
+
const Const_1 = require("./Const");
|
|
20
27
|
class IRUtils {
|
|
21
28
|
static moreThanOneAddress(value) {
|
|
22
|
-
if (value instanceof Expr_1.AbstractBinopExpr ||
|
|
23
|
-
value instanceof
|
|
29
|
+
if (value instanceof Expr_1.AbstractBinopExpr ||
|
|
30
|
+
value instanceof Expr_1.AbstractInvokeExpr ||
|
|
31
|
+
value instanceof Ref_1.AbstractFieldRef ||
|
|
32
|
+
value instanceof Ref_1.ArkArrayRef ||
|
|
33
|
+
value instanceof Expr_1.ArkCastExpr ||
|
|
34
|
+
value instanceof Expr_1.ArkUnopExpr) {
|
|
24
35
|
return true;
|
|
25
36
|
}
|
|
26
37
|
return false;
|
|
@@ -35,5 +46,26 @@ class IRUtils {
|
|
|
35
46
|
}
|
|
36
47
|
}
|
|
37
48
|
}
|
|
49
|
+
static setLeadingComments(metadata, node, sourceFile, options) {
|
|
50
|
+
let comments = this.getLeadingComments(node, sourceFile, options);
|
|
51
|
+
if (comments.length > 0) {
|
|
52
|
+
metadata.setMetadata(ArkMetadata_1.ArkMetadataKind.LEADING_COMMENTS, comments);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
static getLeadingComments(node, sourceFile, options) {
|
|
56
|
+
let comments = [];
|
|
57
|
+
if (!options.enableLeadingComments) {
|
|
58
|
+
return comments;
|
|
59
|
+
}
|
|
60
|
+
const commentRanges = ohos_typescript_1.default.getLeadingCommentRanges(node.getFullText(sourceFile), 0) || [];
|
|
61
|
+
for (const range of commentRanges) {
|
|
62
|
+
const comment = node.getFullText(sourceFile).slice(range.pos, range.end).replace(/\r\n/g, '\n');
|
|
63
|
+
comments.push(comment);
|
|
64
|
+
}
|
|
65
|
+
return comments;
|
|
66
|
+
}
|
|
67
|
+
static isTempLocal(value) {
|
|
68
|
+
return value instanceof Local_1.Local && value.getName().startsWith(Const_1.NAME_PREFIX);
|
|
69
|
+
}
|
|
38
70
|
}
|
|
39
71
|
exports.IRUtils = IRUtils;
|
|
@@ -57,5 +57,6 @@ export declare function getArkFile(im: FromInfo): ArkFile | null | undefined;
|
|
|
57
57
|
* @param fromInfo importInfo or exportInfo
|
|
58
58
|
*/
|
|
59
59
|
export declare function findExportInfo(fromInfo: FromInfo): ExportInfo | null;
|
|
60
|
+
export declare function findArkExport(exportInfo: ExportInfo | undefined): ArkExport | null;
|
|
60
61
|
export declare function findArkExportInFile(name: string, declaringArkFile: ArkFile): ArkExport | null;
|
|
61
62
|
//# sourceMappingURL=ModelUtils.d.ts.map
|
|
@@ -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,EAAE,cAAc,EAAiB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAc,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/ModelUtils.ts"],"names":[],"mappings":"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"}
|