arkanalyzer 1.0.32 → 1.0.34
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 +1 -0
- package/lib/Config.d.ts +1 -0
- package/lib/Config.d.ts.map +1 -1
- package/lib/Config.js +26 -18
- package/lib/Scene.d.ts +5 -5
- package/lib/Scene.d.ts.map +1 -1
- package/lib/Scene.js +21 -19
- package/lib/VFG/DVFG.d.ts.map +1 -1
- package/lib/VFG/builder/DVFGBuilder.d.ts +2 -2
- package/lib/VFG/builder/DVFGBuilder.d.ts.map +1 -1
- package/lib/VFG/builder/DVFGBuilder.js +15 -7
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +1 -0
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/AbstractAnalysis.js +24 -8
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +3 -2
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +4 -3
- package/lib/callgraph/common/Statistics.d.ts +9 -7
- package/lib/callgraph/common/Statistics.d.ts.map +1 -1
- package/lib/callgraph/common/Statistics.js +18 -6
- package/lib/callgraph/model/CallGraph.d.ts +2 -0
- package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
- package/lib/callgraph/model/CallGraph.js +14 -8
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +1 -0
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts.map +1 -1
- package/lib/callgraph/model/builder/CallGraphBuilder.js +9 -4
- package/lib/callgraph/pointerAnalysis/Context.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Context.js +2 -2
- package/lib/callgraph/pointerAnalysis/DummyCallCreator.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/DummyCallCreator.js +4 -2
- package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PTAUtils.js +2 -3
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +27 -35
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +63 -46
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +12 -12
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts +1 -1
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PtsDS.js +10 -6
- package/lib/core/base/Constant.js +2 -2
- package/lib/core/base/DefUseChain.d.ts.map +1 -1
- package/lib/core/base/DefUseChain.js +1 -1
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +3 -5
- package/lib/core/base/Local.d.ts.map +1 -1
- package/lib/core/base/Local.js +7 -2
- package/lib/core/base/Position.d.ts.map +1 -1
- package/lib/core/base/Position.js +1 -1
- package/lib/core/base/Ref.d.ts.map +1 -1
- package/lib/core/base/Ref.js +3 -1
- package/lib/core/base/Stmt.d.ts.map +1 -1
- package/lib/core/base/Stmt.js +1 -4
- package/lib/core/base/Trap.js +1 -1
- package/lib/core/base/Type.d.ts.map +1 -1
- package/lib/core/base/Type.js +2 -2
- package/lib/core/base/Value.d.ts +1 -1
- package/lib/core/base/Value.d.ts.map +1 -1
- package/lib/core/base/Value.js +1 -1
- package/lib/core/common/ArkError.js +1 -1
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +46 -36
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +295 -109
- package/lib/core/common/Builtin.d.ts.map +1 -1
- package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
- package/lib/core/common/DummyMainCreater.js +10 -4
- package/lib/core/common/EtsConst.d.ts.map +1 -1
- package/lib/core/common/EtsConst.js +3 -12
- package/lib/core/common/ExprUseReplacer.js +1 -1
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +40 -20
- package/lib/core/common/IRUtils.d.ts.map +1 -1
- package/lib/core/common/IRUtils.js +5 -4
- package/lib/core/common/ModelUtils.d.ts +1 -1
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +40 -29
- package/lib/core/common/RefUseReplacer.js +1 -1
- package/lib/core/common/SdkUtils.d.ts +3 -0
- package/lib/core/common/SdkUtils.d.ts.map +1 -1
- package/lib/core/common/SdkUtils.js +29 -10
- package/lib/core/common/StmtDefReplacer.d.ts.map +1 -1
- package/lib/core/common/StmtDefReplacer.js +1 -1
- package/lib/core/common/StmtUseReplacer.d.ts.map +1 -1
- package/lib/core/common/StmtUseReplacer.js +1 -1
- package/lib/core/common/TSConst.d.ts.map +1 -1
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +25 -17
- package/lib/core/common/ValueUtil.d.ts.map +1 -1
- package/lib/core/common/ValueUtil.js +1 -1
- package/lib/core/common/VisibleValue.d.ts.map +1 -1
- package/lib/core/common/VisibleValue.js +5 -5
- package/lib/core/dataflow/DataflowProblem.d.ts.map +1 -1
- package/lib/core/dataflow/DataflowProblem.js +1 -1
- package/lib/core/dataflow/DataflowResult.js +1 -1
- package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -1
- package/lib/core/dataflow/DataflowSolver.js +5 -3
- package/lib/core/dataflow/Edge.d.ts.map +1 -1
- package/lib/core/dataflow/Edge.js +1 -1
- package/lib/core/dataflow/Fact.js +1 -1
- package/lib/core/dataflow/GenericDataFlow.js +5 -5
- package/lib/core/dataflow/ReachingDef.js +4 -4
- package/lib/core/dataflow/UndefinedVariable.d.ts.map +1 -1
- package/lib/core/dataflow/UndefinedVariable.js +17 -13
- package/lib/core/dataflow/Util.d.ts +4 -4
- package/lib/core/dataflow/Util.d.ts.map +1 -1
- package/lib/core/dataflow/Util.js +3 -5
- package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
- package/lib/core/graph/BaseExplicitGraph.js +1 -1
- package/lib/core/graph/BaseImplicitGraph.d.ts.map +1 -1
- package/lib/core/graph/BasicBlock.d.ts.map +1 -1
- package/lib/core/graph/BasicBlock.js +11 -7
- package/lib/core/graph/Cfg.d.ts.map +1 -1
- package/lib/core/graph/Cfg.js +10 -4
- package/lib/core/graph/DependsGraph.d.ts.map +1 -1
- package/lib/core/graph/DependsGraph.js +1 -1
- package/lib/core/graph/DominanceFinder.d.ts.map +1 -1
- package/lib/core/graph/DominanceFinder.js +4 -4
- package/lib/core/graph/DominanceTree.js +1 -1
- package/lib/core/graph/GraphTraits.js +1 -1
- package/lib/core/graph/Scc.js +2 -2
- package/lib/core/graph/ViewTree.js +1 -1
- package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/CfgBuilder.js +22 -13
- package/lib/core/graph/builder/ConditionBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/ConditionBuilder.js +21 -22
- package/lib/core/graph/builder/LoopBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/LoopBuilder.js +13 -10
- package/lib/core/graph/builder/SwitchBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/SwitchBuilder.js +7 -4
- package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/TrapBuilder.js +4 -3
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/ViewTreeBuilder.js +18 -19
- package/lib/core/model/ArkBaseModel.d.ts.map +1 -1
- package/lib/core/model/ArkBaseModel.js +8 -5
- package/lib/core/model/ArkBody.d.ts +1 -0
- package/lib/core/model/ArkBody.d.ts.map +1 -1
- package/lib/core/model/ArkBody.js +11 -1
- package/lib/core/model/ArkClass.d.ts.map +1 -1
- package/lib/core/model/ArkClass.js +3 -5
- package/lib/core/model/ArkExport.d.ts +4 -0
- package/lib/core/model/ArkExport.d.ts.map +1 -1
- package/lib/core/model/ArkExport.js +8 -1
- package/lib/core/model/ArkField.d.ts.map +1 -1
- package/lib/core/model/ArkField.js +2 -2
- package/lib/core/model/ArkFile.d.ts +1 -0
- package/lib/core/model/ArkFile.d.ts.map +1 -1
- package/lib/core/model/ArkFile.js +21 -6
- package/lib/core/model/ArkImport.d.ts.map +1 -1
- package/lib/core/model/ArkImport.js +1 -1
- package/lib/core/model/ArkMetadata.d.ts.map +1 -1
- package/lib/core/model/ArkMetadata.js +1 -1
- package/lib/core/model/ArkMethod.d.ts +6 -5
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +27 -13
- package/lib/core/model/ArkNamespace.d.ts +1 -1
- package/lib/core/model/ArkNamespace.d.ts.map +1 -1
- package/lib/core/model/ArkNamespace.js +5 -6
- package/lib/core/model/ArkSignature.d.ts +4 -2
- package/lib/core/model/ArkSignature.d.ts.map +1 -1
- package/lib/core/model/ArkSignature.js +17 -17
- package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkClassBuilder.js +15 -16
- package/lib/core/model/builder/ArkExportBuilder.d.ts +2 -1
- package/lib/core/model/builder/ArkExportBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkExportBuilder.js +17 -11
- package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkFieldBuilder.js +6 -7
- package/lib/core/model/builder/ArkFileBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkFileBuilder.js +22 -11
- package/lib/core/model/builder/ArkImportBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkImportBuilder.js +13 -8
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +3 -3
- package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkNamespaceBuilder.js +7 -9
- package/lib/core/model/builder/ArkSignatureBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkSignatureBuilder.js +1 -1
- package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/BodyBuilder.js +8 -5
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +15 -13
- package/lib/index.d.ts.map +1 -1
- package/lib/save/ArkStream.d.ts.map +1 -1
- package/lib/save/ArkStream.js +1 -1
- package/lib/save/DotPrinter.d.ts.map +1 -1
- package/lib/save/DotPrinter.js +2 -4
- package/lib/save/GraphPrinter.d.ts.map +1 -1
- package/lib/save/GraphPrinter.js +2 -3
- package/lib/save/JsonPrinter.d.ts.map +1 -1
- package/lib/save/JsonPrinter.js +29 -29
- package/lib/save/Printer.js +1 -1
- package/lib/save/PrinterBuilder.d.ts.map +1 -1
- package/lib/save/PrinterBuilder.js +1 -1
- package/lib/save/ViewTreePrinter.d.ts.map +1 -1
- package/lib/save/ViewTreePrinter.js +3 -3
- package/lib/save/arkir/ArkIRClassPrinter.js +1 -1
- package/lib/save/arkir/ArkIRMethodPrinter.js +5 -5
- package/lib/save/arkir/ArkIRNamespacePrinter.d.ts.map +1 -1
- package/lib/save/arkir/ArkIRNamespacePrinter.js +2 -3
- package/lib/save/base/BasePrinter.js +2 -2
- package/lib/save/base/ExportPrinter.d.ts.map +1 -1
- package/lib/save/base/ExportPrinter.js +3 -6
- package/lib/save/base/ImportPrinter.d.ts.map +1 -1
- package/lib/save/base/ImportPrinter.js +2 -6
- package/lib/save/base/PrinterUtils.d.ts.map +1 -1
- package/lib/save/base/PrinterUtils.js +2 -4
- package/lib/save/serializeArkIR.d.ts.map +1 -1
- package/lib/save/serializeArkIR.js +2 -2
- package/lib/save/source/SourceBase.d.ts.map +1 -1
- package/lib/save/source/SourceBase.js +1 -3
- package/lib/save/source/SourceBody.d.ts.map +1 -1
- package/lib/save/source/SourceBody.js +1 -5
- package/lib/save/source/SourceClass.d.ts.map +1 -1
- package/lib/save/source/SourceClass.js +2 -3
- package/lib/save/source/SourceField.js +2 -2
- package/lib/save/source/SourceFilePrinter.d.ts.map +1 -1
- package/lib/save/source/SourceMethod.d.ts.map +1 -1
- package/lib/save/source/SourceMethod.js +5 -6
- package/lib/save/source/SourceNamespace.d.ts.map +1 -1
- package/lib/save/source/SourceNamespace.js +2 -3
- package/lib/save/source/SourceStmt.d.ts.map +1 -1
- package/lib/save/source/SourceStmt.js +9 -14
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +6 -10
- package/lib/transformer/FunctionTransformer.d.ts.map +1 -1
- package/lib/transformer/FunctionTransformer.js +1 -1
- package/lib/transformer/SceneTransformer.d.ts.map +1 -1
- package/lib/transformer/SceneTransformer.js +1 -1
- package/lib/transformer/StaticSingleAssignmentFormer.d.ts.map +1 -1
- package/lib/transformer/StaticSingleAssignmentFormer.js +1 -1
- package/lib/transformer/Transformer.d.ts.map +1 -1
- package/lib/transformer/Transformer.js +2 -3
- package/lib/utils/AstTreeUtils.d.ts.map +1 -1
- package/lib/utils/AstTreeUtils.js +1 -1
- package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -1
- package/lib/utils/CfgStructualAnalysis.js +6 -18
- package/lib/utils/FileUtils.d.ts.map +1 -1
- package/lib/utils/FileUtils.js +7 -7
- package/lib/utils/SparseBitVector.d.ts.map +1 -1
- package/lib/utils/SparseBitVector.js +6 -5
- package/lib/utils/callGraphUtils.d.ts.map +1 -1
- package/lib/utils/callGraphUtils.js +9 -7
- package/lib/utils/crypto_utils.d.ts.map +1 -1
- package/lib/utils/crypto_utils.js +2 -2
- package/lib/utils/entryMethodUtils.d.ts.map +1 -1
- package/lib/utils/entryMethodUtils.js +18 -18
- package/lib/utils/getAllFiles.d.ts.map +1 -1
- package/lib/utils/json5parser.d.ts.map +1 -1
- package/lib/utils/json5parser.js +1 -1
- package/lib/utils/logger.d.ts.map +1 -1
- package/lib/utils/pathTransfer.d.ts +0 -1
- package/lib/utils/pathTransfer.d.ts.map +1 -1
- package/lib/utils/pathTransfer.js +2 -11
- package/package.json +2 -2
|
@@ -27,21 +27,28 @@ const ArkSignature_1 = require("../model/ArkSignature");
|
|
|
27
27
|
const ModelUtils_1 = require("./ModelUtils");
|
|
28
28
|
const Local_1 = require("../base/Local");
|
|
29
29
|
const path_1 = __importDefault(require("path"));
|
|
30
|
-
const IRInference_1 = require("./IRInference");
|
|
31
30
|
const Type_1 = require("../base/Type");
|
|
32
31
|
const ArkNamespace_1 = require("../model/ArkNamespace");
|
|
32
|
+
const TypeInference_1 = require("./TypeInference");
|
|
33
33
|
class SdkUtils {
|
|
34
|
-
static
|
|
35
|
-
var _a, _b, _c, _d;
|
|
34
|
+
static buildSdkImportMap(file) {
|
|
36
35
|
const fileName = path_1.default.basename(file.getName());
|
|
37
36
|
if (fileName.startsWith('@')) {
|
|
38
|
-
|
|
37
|
+
this.sdkImportMap.set(fileName.replace(/\.d\.e?ts$/, ''), file);
|
|
39
38
|
}
|
|
40
|
-
|
|
39
|
+
}
|
|
40
|
+
static getImportSdkFile(from) {
|
|
41
|
+
return this.sdkImportMap.get(from);
|
|
42
|
+
}
|
|
43
|
+
static buildGlobalMap(file, globalMap) {
|
|
44
|
+
var _a, _b, _c, _d;
|
|
45
|
+
const isGlobalPath = (_a = file
|
|
46
|
+
.getScene()
|
|
47
|
+
.getOptions()
|
|
48
|
+
.sdkGlobalFolders) === null || _a === void 0 ? void 0 : _a.find(x => file.getFilePath().includes(path_1.default.sep + x + path_1.default.sep));
|
|
41
49
|
if (!isGlobalPath) {
|
|
42
50
|
return;
|
|
43
51
|
}
|
|
44
|
-
IRInference_1.IRInference.inferFile(file);
|
|
45
52
|
ModelUtils_1.ModelUtils.getAllClassesInFile(file).forEach(cls => {
|
|
46
53
|
if (!cls.isAnonymousClass() && !cls.isDefaultArkClass()) {
|
|
47
54
|
SdkUtils.loadClass(globalMap, cls);
|
|
@@ -53,6 +60,9 @@ class SdkUtils {
|
|
|
53
60
|
}
|
|
54
61
|
});
|
|
55
62
|
const defaultArkMethod = file.getDefaultClass().getDefaultArkMethod();
|
|
63
|
+
if (defaultArkMethod) {
|
|
64
|
+
TypeInference_1.TypeInference.inferTypeInMethod(defaultArkMethod);
|
|
65
|
+
}
|
|
56
66
|
(_b = defaultArkMethod === null || defaultArkMethod === void 0 ? void 0 : defaultArkMethod.getBody()) === null || _b === void 0 ? void 0 : _b.getLocals().forEach(local => {
|
|
57
67
|
const name = local.getName();
|
|
58
68
|
if (name !== TSConst_1.THIS_NAME && !name.startsWith(Const_1.TEMP_LOCAL_PREFIX)) {
|
|
@@ -86,7 +96,10 @@ class SdkUtils {
|
|
|
86
96
|
const instance = globalMap.get(name + 'Interface');
|
|
87
97
|
const attr = globalMap.get(name + EtsConst_1.COMPONENT_ATTRIBUTE);
|
|
88
98
|
if (attr instanceof ArkClass_1.ArkClass && instance instanceof ArkClass_1.ArkClass) {
|
|
89
|
-
instance
|
|
99
|
+
instance
|
|
100
|
+
.getMethods()
|
|
101
|
+
.filter(m => !attr.getMethodWithName(m.getName()))
|
|
102
|
+
.forEach(m => attr.addMethod(m));
|
|
90
103
|
globalMap.set(name, attr);
|
|
91
104
|
return;
|
|
92
105
|
}
|
|
@@ -98,7 +111,10 @@ class SdkUtils {
|
|
|
98
111
|
else if (old instanceof ArkClass_1.ArkClass && local.getType() instanceof Type_1.ClassType) {
|
|
99
112
|
const localConstructor = scene.getClass(local.getType().getClassSignature());
|
|
100
113
|
if (localConstructor) {
|
|
101
|
-
localConstructor
|
|
114
|
+
localConstructor
|
|
115
|
+
.getMethods()
|
|
116
|
+
.filter(m => !old.getMethodWithName(m.getName()))
|
|
117
|
+
.forEach(m => old.addMethod(m));
|
|
102
118
|
}
|
|
103
119
|
}
|
|
104
120
|
}
|
|
@@ -118,10 +134,13 @@ class SdkUtils {
|
|
|
118
134
|
static computeGlobalThis(leftOp, arkMethod) {
|
|
119
135
|
const globalThis = arkMethod.getDeclaringArkFile().getScene().getSdkGlobal(TSConst_1.GLOBAL_THIS_NAME);
|
|
120
136
|
if (globalThis instanceof ArkNamespace_1.ArkNamespace) {
|
|
121
|
-
const exportInfo = new ArkExport_1.ExportInfo.Builder()
|
|
122
|
-
.
|
|
137
|
+
const exportInfo = new ArkExport_1.ExportInfo.Builder()
|
|
138
|
+
.exportClauseName(leftOp.getFieldName())
|
|
139
|
+
.arkExport(new Local_1.Local(leftOp.getFieldName(), leftOp.getType()))
|
|
140
|
+
.build();
|
|
123
141
|
globalThis.addExportInfo(exportInfo);
|
|
124
142
|
}
|
|
125
143
|
}
|
|
126
144
|
}
|
|
127
145
|
exports.SdkUtils = SdkUtils;
|
|
146
|
+
SdkUtils.sdkImportMap = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StmtDefReplacer.d.ts","sourceRoot":"","sources":["../../../src/core/common/StmtDefReplacer.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAiB,IAAI,EAAE,MAAM,cAAc,CAAC;AAGnD;;GAEG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;IAKjC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAMjC,OAAO,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"StmtDefReplacer.d.ts","sourceRoot":"","sources":["../../../src/core/common/StmtDefReplacer.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAiB,IAAI,EAAE,MAAM,cAAc,CAAC;AAGnD;;GAEG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;IAKjC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAMjC,OAAO,CAAC,cAAc;CAOzB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StmtUseReplacer.d.ts","sourceRoot":"","sources":["../../../src/core/common/StmtUseReplacer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC1G,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAKtC;;GAEG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;IAKjC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAcjC,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"StmtUseReplacer.d.ts","sourceRoot":"","sources":["../../../src/core/common/StmtUseReplacer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC1G,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAKtC;;GAEG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;IAKjC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAcjC,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,aAAa;CAMxB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TSConst.d.ts","sourceRoot":"","sources":["../../../src/core/common/TSConst.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,eAAO,MAAM,gBAAgB,EAAE,MAAqB,
|
|
1
|
+
{"version":3,"file":"TSConst.d.ts","sourceRoot":"","sources":["../../../src/core/common/TSConst.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,eAAO,MAAM,gBAAgB,EAAE,MAAqB,CAAC;AAErD,eAAO,MAAM,OAAO,YAAY,CAAC;AAEjC,eAAO,MAAM,GAAG,MAAM,CAAC;AAEvB,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,QAAQ,aAAa,CAAC;AAGnC,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAChD,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAC7C,eAAO,MAAM,WAAW,QAAQ,CAAC;AACjC,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,cAAc,WAAW,CAAC;AACvC,eAAO,MAAM,cAAc,WAAW,CAAC;AACvC,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,eAAO,MAAM,aAAa,UAAU,CAAC;AACrC,eAAO,MAAM,cAAc,WAAW,CAAC;AACvC,eAAO,MAAM,aAAa,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/TypeInference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/TypeInference.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,8 +116,7 @@ class TypeInference {
|
|
|
116
116
|
visited.add(leftOpType);
|
|
117
117
|
}
|
|
118
118
|
let type;
|
|
119
|
-
if (leftOpType instanceof Type_1.ClassType &&
|
|
120
|
-
leftOpType.getClassSignature().getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME) {
|
|
119
|
+
if (leftOpType instanceof Type_1.ClassType && leftOpType.getClassSignature().getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME) {
|
|
121
120
|
type = TypeInference.inferUnclearRefName(leftOpType.getClassSignature().getClassName(), declaringArkClass);
|
|
122
121
|
}
|
|
123
122
|
else if (leftOpType instanceof Type_1.UnionType || leftOpType instanceof Type_1.IntersectionType || leftOpType instanceof Type_1.TupleType) {
|
|
@@ -163,7 +162,9 @@ class TypeInference {
|
|
|
163
162
|
signatures.push(impl);
|
|
164
163
|
}
|
|
165
164
|
signatures.forEach(s => {
|
|
166
|
-
s.getMethodSubSignature()
|
|
165
|
+
s.getMethodSubSignature()
|
|
166
|
+
.getParameters()
|
|
167
|
+
.forEach(p => {
|
|
167
168
|
this.inferParameterType(p, arkMethod);
|
|
168
169
|
});
|
|
169
170
|
});
|
|
@@ -216,8 +217,8 @@ class TypeInference {
|
|
|
216
217
|
static resolveExprsInStmt(stmt, arkMethod) {
|
|
217
218
|
for (const expr of stmt.getExprs()) {
|
|
218
219
|
const newExpr = expr.inferType(arkMethod);
|
|
219
|
-
if (stmt.containsInvokeExpr() &&
|
|
220
|
-
newExpr instanceof Expr_1.ArkPtrInvokeExpr)) {
|
|
220
|
+
if (stmt.containsInvokeExpr() &&
|
|
221
|
+
((expr instanceof Expr_1.ArkInstanceInvokeExpr && newExpr instanceof Expr_1.ArkStaticInvokeExpr) || newExpr instanceof Expr_1.ArkPtrInvokeExpr)) {
|
|
221
222
|
stmt.replaceUse(expr, newExpr);
|
|
222
223
|
}
|
|
223
224
|
}
|
|
@@ -244,8 +245,10 @@ class TypeInference {
|
|
|
244
245
|
}
|
|
245
246
|
const stmtDef = stmt.getDef();
|
|
246
247
|
if (stmtDef && stmtDef instanceof Ref_1.AbstractRef) {
|
|
247
|
-
if (arkMethod.getName() === Const_1.INSTANCE_INIT_METHOD_NAME &&
|
|
248
|
-
stmtDef
|
|
248
|
+
if (arkMethod.getName() === Const_1.INSTANCE_INIT_METHOD_NAME &&
|
|
249
|
+
stmtDef instanceof Ref_1.ArkInstanceFieldRef &&
|
|
250
|
+
stmtDef.getBase().getName() === TSConst_1.THIS_NAME &&
|
|
251
|
+
arkMethod.getDeclaringArkClass().isAnonymousClass() &&
|
|
249
252
|
stmtDef.getFieldName().indexOf('.') === -1) {
|
|
250
253
|
return;
|
|
251
254
|
}
|
|
@@ -371,14 +374,14 @@ class TypeInference {
|
|
|
371
374
|
static isUnclearType(type) {
|
|
372
375
|
var _a;
|
|
373
376
|
// TODO: For UnionType, IntersectionType and TupleType, it should recurse check every item of them.
|
|
374
|
-
if (!type || type instanceof Type_1.UnknownType || type instanceof Type_1.UnclearReferenceType
|
|
375
|
-
|| type instanceof Type_1.NullType || type instanceof Type_1.UndefinedType) {
|
|
377
|
+
if (!type || type instanceof Type_1.UnknownType || type instanceof Type_1.UnclearReferenceType || type instanceof Type_1.NullType || type instanceof Type_1.UndefinedType) {
|
|
376
378
|
return true;
|
|
377
379
|
}
|
|
378
|
-
else if (type instanceof Type_1.ClassType &&
|
|
379
|
-
(type.getClassSignature().
|
|
380
|
-
|
|
381
|
-
(
|
|
380
|
+
else if (type instanceof Type_1.ClassType &&
|
|
381
|
+
(type.getClassSignature().getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME ||
|
|
382
|
+
(type.getClassSignature().getClassName() === TSConst_1.PROMISE && !type.getRealGenericTypes()) ||
|
|
383
|
+
(type.getClassSignature().getDeclaringFileSignature().getFileName() === Builtin_1.Builtin.DUMMY_FILE_NAME &&
|
|
384
|
+
((_a = type.getRealGenericTypes()) === null || _a === void 0 ? void 0 : _a.find(t => t instanceof Type_1.GenericType))))) {
|
|
382
385
|
return true;
|
|
383
386
|
}
|
|
384
387
|
else if (type instanceof Type_1.UnionType || type instanceof Type_1.IntersectionType || type instanceof Type_1.TupleType) {
|
|
@@ -528,7 +531,9 @@ class TypeInference {
|
|
|
528
531
|
for (let returnValue of arkMethod.getReturnValues()) {
|
|
529
532
|
const type = returnValue.getType();
|
|
530
533
|
if (type instanceof Type_1.UnionType) {
|
|
531
|
-
type.flatType()
|
|
534
|
+
type.flatType()
|
|
535
|
+
.filter(t => !TypeInference.isUnclearType(t))
|
|
536
|
+
.forEach(t => typeMap.set(t.toString(), t));
|
|
532
537
|
}
|
|
533
538
|
else if (!TypeInference.isUnclearType(type)) {
|
|
534
539
|
typeMap.set(type.toString(), type);
|
|
@@ -648,8 +653,8 @@ class TypeInference {
|
|
|
648
653
|
}
|
|
649
654
|
let propertyAndType = null;
|
|
650
655
|
if (baseType instanceof Type_1.ClassType) {
|
|
651
|
-
if (fieldName === Builtin_1.Builtin.ITERATOR_RESULT_VALUE &&
|
|
652
|
-
.getDeclaringFileSignature().getProjectName() === Builtin_1.Builtin.DUMMY_PROJECT_NAME) {
|
|
656
|
+
if (fieldName === Builtin_1.Builtin.ITERATOR_RESULT_VALUE &&
|
|
657
|
+
baseType.getClassSignature().getDeclaringFileSignature().getProjectName() === Builtin_1.Builtin.DUMMY_PROJECT_NAME) {
|
|
653
658
|
const types = baseType.getRealGenericTypes();
|
|
654
659
|
if (types && types.length > 0) {
|
|
655
660
|
return [null, types[0]];
|
|
@@ -840,7 +845,10 @@ class TypeInference {
|
|
|
840
845
|
if (!params) {
|
|
841
846
|
return;
|
|
842
847
|
}
|
|
843
|
-
argType
|
|
848
|
+
argType
|
|
849
|
+
.getMethodSignature()
|
|
850
|
+
.getMethodSubSignature()
|
|
851
|
+
.getParameters()
|
|
844
852
|
.filter(p => !p.getName().startsWith(Const_1.LEXICAL_ENV_NAME_PREFIX))
|
|
845
853
|
.forEach((p, i) => {
|
|
846
854
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueUtil.d.ts","sourceRoot":"","sources":["../../../src/core/common/ValueUtil.ts"],"names":[],"mappings":"AAeA,OAAO,
|
|
1
|
+
{"version":3,"file":"ValueUtil.d.ts","sourceRoot":"","sources":["../../../src/core/common/ValueUtil.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAmB,QAAQ,EAAgC,cAAc,EAAqB,MAAM,kBAAkB,CAAC;AAE9I,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAoC;IAC/E,gBAAuB,qBAAqB,iBAAoC;WAElE,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ;WAS3C,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;WAIjD,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;WAOxC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;WAQlC,iBAAiB,IAAI,QAAQ;WAI7B,eAAe,IAAI,QAAQ;WAI3B,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ;CAG7D"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisibleValue.d.ts","sourceRoot":"","sources":["../../../src/core/common/VisibleValue.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,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;AAIrD,qBAAa,YAAY;IACrB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,iBAAiB,CAAU;;IASnC,+CAA+C;IACxC,oBAAoB,IAAI,KAAK,EAAE;IAI/B,aAAa,IAAI,KAAK,EAAE;IAI/B,6EAA6E;IACtE,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"VisibleValue.d.ts","sourceRoot":"","sources":["../../../src/core/common/VisibleValue.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,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;AAIrD,qBAAa,YAAY;IACrB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,iBAAiB,CAAU;;IASnC,+CAA+C;IACxC,oBAAoB,IAAI,KAAK,EAAE;IAI/B,aAAa,IAAI,KAAK,EAAE;IAI/B,6EAA6E;IACtE,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IA0B7C,0EAA0E;IACnE,cAAc,IAAI,IAAI;IAsB7B,8BAA8B;IAC9B,OAAO,CAAC,WAAW;IAsBnB,8DAA8D;IAC9D,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,mCAAmC;IAK3C,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,8BAA8B;CASzC;AAED,KAAK,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3E,qBAAa,KAAK;IACP,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;gBACrB,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,GAAE,MAAW,EAAE,QAAQ,GAAE,QAAQ,GAAG,IAAW;CAKpF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -153,16 +153,16 @@ class VisibleValue {
|
|
|
153
153
|
targetDepth = prevDepth;
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
|
-
else if (
|
|
156
|
+
else if (model instanceof ArkFile_1.ArkFile && prevModel instanceof ArkFile_1.ArkFile) {
|
|
157
157
|
targetDepth = prevDepth;
|
|
158
158
|
}
|
|
159
|
-
else if (
|
|
159
|
+
else if (model instanceof ArkNamespace_1.ArkNamespace && prevModel instanceof ArkNamespace_1.ArkNamespace) {
|
|
160
160
|
targetDepth = prevDepth;
|
|
161
161
|
}
|
|
162
|
-
else if (
|
|
162
|
+
else if (model instanceof ArkClass_1.ArkClass && prevModel instanceof ArkClass_1.ArkClass) {
|
|
163
163
|
targetDepth = prevDepth;
|
|
164
164
|
}
|
|
165
|
-
else if (
|
|
165
|
+
else if (model instanceof ArkMethod_1.ArkMethod && prevModel instanceof ArkMethod_1.ArkMethod) {
|
|
166
166
|
targetDepth = prevDepth;
|
|
167
167
|
}
|
|
168
168
|
return targetDepth;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataflowProblem.d.ts","sourceRoot":"","sources":["../../../src/core/dataflow/DataflowProblem.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,8BAAsB,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"DataflowProblem.d.ts","sourceRoot":"","sources":["../../../src/core/dataflow/DataflowProblem.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,8BAAsB,eAAe,CAAC,CAAC;IACnC;;;;OAIG;IAWH,QAAQ,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC;IAE7E,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC;IAE/E,QAAQ,CAAC,2BAA2B,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC;IAEnG,QAAQ,CAAC,2BAA2B,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC;IAEnF,QAAQ,CAAC,eAAe,IAAI,CAAC;IAE7B,QAAQ,CAAC,aAAa,IAAI,IAAI;IAE9B,QAAQ,CAAC,cAAc,IAAI,SAAS;IAEpC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO;CAC5C;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC3B,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAC9B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataflowSolver.d.ts","sourceRoot":"","sources":["../../../src/core/dataflow/DataflowSolver.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAoC,IAAI,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAgB,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAa1F,KAAK,qBAAqB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE5C,8BAAsB,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"DataflowSolver.d.ts","sourceRoot":"","sources":["../../../src/core/dataflow/DataflowSolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -122,8 +122,10 @@ class DataflowSolver {
|
|
|
122
122
|
pathEdgeSetHasEdge(edge) {
|
|
123
123
|
for (const path of this.pathEdgeSet) {
|
|
124
124
|
this.problem.factEqual(path.edgeEnd.fact, edge.edgeEnd.fact);
|
|
125
|
-
if (path.edgeEnd.node === edge.edgeEnd.node &&
|
|
126
|
-
|
|
125
|
+
if (path.edgeEnd.node === edge.edgeEnd.node &&
|
|
126
|
+
this.problem.factEqual(path.edgeEnd.fact, edge.edgeEnd.fact) &&
|
|
127
|
+
path.edgeStart.node === edge.edgeStart.node &&
|
|
128
|
+
this.problem.factEqual(path.edgeStart.fact, edge.edgeStart.fact)) {
|
|
127
129
|
return true;
|
|
128
130
|
}
|
|
129
131
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Edge.d.ts","sourceRoot":"","sources":["../../../src/core/dataflow/Edge.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,qBAAa,aAAa,CAAC,CAAC;IACjB,IAAI,
|
|
1
|
+
{"version":3,"file":"Edge.d.ts","sourceRoot":"","sources":["../../../src/core/dataflow/Edge.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,qBAAa,aAAa,CAAC,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,CAAC,CAAC;gBAEH,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;CAIlC;AAED,qBAAa,QAAQ,CAAC,CAAC;IACZ,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;gBAErB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;CAI7D"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -52,11 +52,11 @@ class MFPDataFlowSolver {
|
|
|
52
52
|
let newEntries = new Set();
|
|
53
53
|
while (workList.length > 0) {
|
|
54
54
|
newEntries.clear();
|
|
55
|
-
workList.forEach(
|
|
55
|
+
workList.forEach(n => {
|
|
56
56
|
let inSet;
|
|
57
57
|
const predecessors = problem.flowGraph.pred(n);
|
|
58
58
|
if (predecessors && predecessors.length > 0) {
|
|
59
|
-
const predecessorOuts = predecessors.map(
|
|
59
|
+
const predecessorOuts = predecessors.map(pred => _out.get(pred));
|
|
60
60
|
inSet = predecessorOuts.reduce((acc, cur) => problem.meet(acc, cur), problem.empty);
|
|
61
61
|
}
|
|
62
62
|
else {
|
|
@@ -67,7 +67,7 @@ class MFPDataFlowSolver {
|
|
|
67
67
|
let newSet = problem.transferFunction.apply(n, inSet);
|
|
68
68
|
if (!old || old.count() === 0 || !old.equals(newSet)) {
|
|
69
69
|
_out.set(n, newSet);
|
|
70
|
-
problem.flowGraph.succ(n).forEach(
|
|
70
|
+
problem.flowGraph.succ(n).forEach(succ => newEntries.add(succ));
|
|
71
71
|
}
|
|
72
72
|
});
|
|
73
73
|
workList = [...newEntries];
|
|
@@ -89,7 +89,7 @@ class MFPDataFlowSolver {
|
|
|
89
89
|
let newEntries = new Set();
|
|
90
90
|
while (workList.length > 0) {
|
|
91
91
|
newEntries.clear();
|
|
92
|
-
workList.forEach(
|
|
92
|
+
workList.forEach(n => {
|
|
93
93
|
let outSet = problem.flowGraph.succ(n).reduce((acc, curr) => {
|
|
94
94
|
return problem.meet(acc, _in.get(curr));
|
|
95
95
|
}, problem.empty);
|
|
@@ -98,7 +98,7 @@ class MFPDataFlowSolver {
|
|
|
98
98
|
let newSet = problem.transferFunction.apply(n, outSet);
|
|
99
99
|
if (!old || !old.equals(newSet)) {
|
|
100
100
|
_in.set(n, newSet);
|
|
101
|
-
problem.flowGraph.pred(n).forEach(
|
|
101
|
+
problem.flowGraph.pred(n).forEach(pred => newEntries.add(pred));
|
|
102
102
|
}
|
|
103
103
|
});
|
|
104
104
|
workList = [...newEntries];
|
|
@@ -52,8 +52,8 @@ class ReachingDefProblem {
|
|
|
52
52
|
r.unionWith(y);
|
|
53
53
|
return r;
|
|
54
54
|
};
|
|
55
|
-
this.initIn = new Map(this.flowGraph.nodesInPostOrder.map(
|
|
56
|
-
this.initOut = new Map(this.flowGraph.nodesInPostOrder.map(
|
|
55
|
+
this.initIn = new Map(this.flowGraph.nodesInPostOrder.map(i => [i, new coCtor(BV_SIZE)]));
|
|
56
|
+
this.initOut = new Map(this.flowGraph.nodesInPostOrder.map(i => [i, new coCtor(BV_SIZE)]));
|
|
57
57
|
this.forward = forward;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -86,7 +86,7 @@ class ReachingDefFlowGraph extends BaseImplicitGraph_1.BaseImplicitGraph {
|
|
|
86
86
|
initSuccPred(nodes, cfg) {
|
|
87
87
|
this.succMap = new Map();
|
|
88
88
|
this.predMap = new Map();
|
|
89
|
-
cfg.getBlocks().forEach(
|
|
89
|
+
cfg.getBlocks().forEach(bb => {
|
|
90
90
|
let stmts = bb.getStmts();
|
|
91
91
|
if (stmts.length === 0) {
|
|
92
92
|
return;
|
|
@@ -104,7 +104,7 @@ class ReachingDefFlowGraph extends BaseImplicitGraph_1.BaseImplicitGraph {
|
|
|
104
104
|
if (!terminate) {
|
|
105
105
|
throw new Error('cfg has no terminal');
|
|
106
106
|
}
|
|
107
|
-
bb.getSuccessors().forEach(
|
|
107
|
+
bb.getSuccessors().forEach(succBB => {
|
|
108
108
|
var _a, _b, _c, _d;
|
|
109
109
|
let head = succBB.getHead();
|
|
110
110
|
if (!head) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UndefinedVariable.d.ts","sourceRoot":"","sources":["../../../src/core/dataflow/UndefinedVariable.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAiB,IAAI,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAK7C,qBAAa,wBAAyB,SAAQ,eAAe,CAAC,KAAK,CAAC;IAChE,SAAS,EAAE,QAAQ,CAA0D;IAC7E,UAAU,EAAE,IAAI,CAAC;IACjB,WAAW,EAAE,SAAS,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC,aAAa,GAAG,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9D,iBAAiB,EAAE,GAAG,CAAC,aAAa,GAAG,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,QAAQ,EAAE,OAAO,EAAE,CAAM;gBACb,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS;IASzC,aAAa,IAAI,IAAI;IAIrB,cAAc,IAAI,SAAS;IAI3B,OAAO,CAAC,WAAW;IAUnB,qBAAqB,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"UndefinedVariable.d.ts","sourceRoot":"","sources":["../../../src/core/dataflow/UndefinedVariable.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAiB,IAAI,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAK7C,qBAAa,wBAAyB,SAAQ,eAAe,CAAC,KAAK,CAAC;IAChE,SAAS,EAAE,QAAQ,CAA0D;IAC7E,UAAU,EAAE,IAAI,CAAC;IACjB,WAAW,EAAE,SAAS,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC,aAAa,GAAG,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9D,iBAAiB,EAAE,GAAG,CAAC,aAAa,GAAG,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,QAAQ,EAAE,OAAO,EAAE,CAAM;gBACb,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS;IASzC,aAAa,IAAI,IAAI;IAIrB,cAAc,IAAI,SAAS;IAI3B,OAAO,CAAC,WAAW;IAUnB,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC;IAiBxE,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,GAAG,IAAI;IA6BxF,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;IAkC1E,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI;IAmBhE,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI;IAe5E,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI;IAmBvF,2BAA2B,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC;IAa9F,2BAA2B,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC;IAiB9E,eAAe,IAAI,KAAK;IAIxB,YAAY,IAAI,KAAK;IAIrB,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO;IAWjC,WAAW,IAAI,OAAO,EAAE;CAGlC;AAED,qBAAa,uBAAwB,SAAQ,cAAc,CAAC,KAAK,CAAC;gBAClD,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,KAAK;CAG9D;AAED,cAAM,OAAO;IACT,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;gBACC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI;CAIhC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -78,7 +78,7 @@ class UndefinedVariableChecker extends DataflowProblem_1.DataflowProblem {
|
|
|
78
78
|
}
|
|
79
79
|
getNormalFlowFunction(srcStmt, tgtStmt) {
|
|
80
80
|
let checkerInstance = this;
|
|
81
|
-
return new class {
|
|
81
|
+
return new (class {
|
|
82
82
|
getDataFacts(dataFact) {
|
|
83
83
|
let ret = new Set();
|
|
84
84
|
if (checkerInstance.getEntryPoint() === srcStmt && checkerInstance.getZeroValue() === dataFact) {
|
|
@@ -90,7 +90,7 @@ class UndefinedVariableChecker extends DataflowProblem_1.DataflowProblem {
|
|
|
90
90
|
}
|
|
91
91
|
return ret;
|
|
92
92
|
}
|
|
93
|
-
};
|
|
93
|
+
})();
|
|
94
94
|
}
|
|
95
95
|
insideNormalFlowFunction(ret, srcStmt, dataFact) {
|
|
96
96
|
if (!this.factEqual(srcStmt.getDef(), dataFact)) {
|
|
@@ -111,7 +111,7 @@ class UndefinedVariableChecker extends DataflowProblem_1.DataflowProblem {
|
|
|
111
111
|
}
|
|
112
112
|
else if (rightOp instanceof Ref_1.ArkInstanceFieldRef) {
|
|
113
113
|
const base = rightOp.getBase();
|
|
114
|
-
if (base === dataFact || !base.getDeclaringStmt() && base.getName() === dataFact.toString()) {
|
|
114
|
+
if (base === dataFact || (!base.getDeclaringStmt() && base.getName() === dataFact.toString())) {
|
|
115
115
|
this.outcomes.push(new Outcome(rightOp, ass));
|
|
116
116
|
logger.info('undefined base');
|
|
117
117
|
logger.info(srcStmt.toString());
|
|
@@ -125,7 +125,7 @@ class UndefinedVariableChecker extends DataflowProblem_1.DataflowProblem {
|
|
|
125
125
|
}
|
|
126
126
|
getCallFlowFunction(srcStmt, method) {
|
|
127
127
|
let checkerInstance = this;
|
|
128
|
-
return new class {
|
|
128
|
+
return new (class {
|
|
129
129
|
getDataFacts(dataFact) {
|
|
130
130
|
const ret = new Set();
|
|
131
131
|
if (checkerInstance.getZeroValue() === dataFact) {
|
|
@@ -133,19 +133,23 @@ class UndefinedVariableChecker extends DataflowProblem_1.DataflowProblem {
|
|
|
133
133
|
}
|
|
134
134
|
else {
|
|
135
135
|
const callExpr = srcStmt.getExprs()[0];
|
|
136
|
-
if (callExpr instanceof Expr_1.ArkInstanceInvokeExpr &&
|
|
136
|
+
if (callExpr instanceof Expr_1.ArkInstanceInvokeExpr &&
|
|
137
|
+
dataFact instanceof Ref_1.ArkInstanceFieldRef &&
|
|
138
|
+
callExpr.getBase().getName() === dataFact.getBase().getName()) {
|
|
137
139
|
// todo:base转this
|
|
138
140
|
const thisRef = new Ref_1.ArkInstanceFieldRef(new Local_1.Local('this', new Type_1.ClassType(method.getDeclaringArkClass().getSignature())), dataFact.getFieldSignature());
|
|
139
141
|
ret.add(thisRef);
|
|
140
142
|
}
|
|
141
|
-
else if (callExpr instanceof Expr_1.ArkStaticInvokeExpr &&
|
|
143
|
+
else if (callExpr instanceof Expr_1.ArkStaticInvokeExpr &&
|
|
144
|
+
dataFact instanceof Ref_1.ArkStaticFieldRef &&
|
|
145
|
+
callExpr.getMethodSignature().getDeclaringClassSignature() === dataFact.getFieldSignature().getDeclaringSignature()) {
|
|
142
146
|
ret.add(dataFact);
|
|
143
147
|
}
|
|
144
148
|
}
|
|
145
149
|
checkerInstance.addParameters(srcStmt, dataFact, method, ret);
|
|
146
150
|
return ret;
|
|
147
151
|
}
|
|
148
|
-
};
|
|
152
|
+
})();
|
|
149
153
|
}
|
|
150
154
|
insideCallFlowFunction(ret, method) {
|
|
151
155
|
ret.add(this.getZeroValue());
|
|
@@ -183,7 +187,7 @@ class UndefinedVariableChecker extends DataflowProblem_1.DataflowProblem {
|
|
|
183
187
|
const callStmt = srcStmt;
|
|
184
188
|
const args = callStmt.getInvokeExpr().getArgs();
|
|
185
189
|
for (let i = 0; i < args.length; i++) {
|
|
186
|
-
if (args[i] === dataFact || this.isUndefined(args[i]) && this.getZeroValue() === dataFact) {
|
|
190
|
+
if (args[i] === dataFact || (this.isUndefined(args[i]) && this.getZeroValue() === dataFact)) {
|
|
187
191
|
const realParameter = [...method.getCfg().getBlocks()][0].getStmts()[i].getDef();
|
|
188
192
|
if (realParameter) {
|
|
189
193
|
ret.add(realParameter);
|
|
@@ -200,7 +204,7 @@ class UndefinedVariableChecker extends DataflowProblem_1.DataflowProblem {
|
|
|
200
204
|
}
|
|
201
205
|
getExitToReturnFlowFunction(srcStmt, tgtStmt, callStmt) {
|
|
202
206
|
let checkerInstance = this;
|
|
203
|
-
return new class {
|
|
207
|
+
return new (class {
|
|
204
208
|
getDataFacts(dataFact) {
|
|
205
209
|
let ret = new Set();
|
|
206
210
|
if (dataFact === checkerInstance.getZeroValue()) {
|
|
@@ -208,11 +212,11 @@ class UndefinedVariableChecker extends DataflowProblem_1.DataflowProblem {
|
|
|
208
212
|
}
|
|
209
213
|
return ret;
|
|
210
214
|
}
|
|
211
|
-
};
|
|
215
|
+
})();
|
|
212
216
|
}
|
|
213
217
|
getCallToReturnFlowFunction(srcStmt, tgtStmt) {
|
|
214
218
|
let checkerInstance = this;
|
|
215
|
-
return new class {
|
|
219
|
+
return new (class {
|
|
216
220
|
getDataFacts(dataFact) {
|
|
217
221
|
const ret = new Set();
|
|
218
222
|
if (checkerInstance.getZeroValue() === dataFact) {
|
|
@@ -224,7 +228,7 @@ class UndefinedVariableChecker extends DataflowProblem_1.DataflowProblem {
|
|
|
224
228
|
}
|
|
225
229
|
return ret;
|
|
226
230
|
}
|
|
227
|
-
};
|
|
231
|
+
})();
|
|
228
232
|
}
|
|
229
233
|
createZeroValue() {
|
|
230
234
|
return this.zeroValue;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ArkInvokeStmt } from
|
|
2
|
-
import { ArkMethod } from
|
|
3
|
-
import { Local } from
|
|
4
|
-
import { AbstractRef } from
|
|
1
|
+
import { ArkInvokeStmt } from '../base/Stmt';
|
|
2
|
+
import { ArkMethod } from '../model/ArkMethod';
|
|
3
|
+
import { Local } from '../base/Local';
|
|
4
|
+
import { AbstractRef } from '../base/Ref';
|
|
5
5
|
export declare const INTERNAL_PARAMETER_SOURCE: string[];
|
|
6
6
|
export declare const INTERNAL_SINK_METHOD: string[];
|
|
7
7
|
export declare function getRecallMethodInParam(stmt: ArkInvokeStmt): ArkMethod | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../../src/core/dataflow/Util.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAA0C,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../../src/core/dataflow/Util.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAA0C,MAAM,aAAa,CAAC;AAElF,eAAO,MAAM,yBAAyB,EAAE,MAAM,EAA0C,CAAC;AAEzF,eAAO,MAAM,oBAAoB,EAAE,MAAM,EAMxC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAW5E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAQhE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAOtE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -17,15 +17,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
exports.RefEqual = exports.LocalEqual = exports.getRecallMethodInParam = exports.INTERNAL_SINK_METHOD = exports.INTERNAL_PARAMETER_SOURCE = void 0;
|
|
18
18
|
const Type_1 = require("../base/Type");
|
|
19
19
|
const Ref_1 = require("../base/Ref");
|
|
20
|
-
exports.INTERNAL_PARAMETER_SOURCE = [
|
|
21
|
-
'@ohos.app.ability.Want.d.ts: Want'
|
|
22
|
-
];
|
|
20
|
+
exports.INTERNAL_PARAMETER_SOURCE = ['@ohos.app.ability.Want.d.ts: Want'];
|
|
23
21
|
exports.INTERNAL_SINK_METHOD = [
|
|
24
22
|
'console.<@%unk/%unk: .log()>',
|
|
25
23
|
'console.<@%unk/%unk: .error()>',
|
|
26
24
|
'console.<@%unk/%unk: .info()>',
|
|
27
25
|
'console.<@%unk/%unk: .warn()>',
|
|
28
|
-
'console.<@%unk/%unk: .assert()>'
|
|
26
|
+
'console.<@%unk/%unk: .assert()>',
|
|
29
27
|
];
|
|
30
28
|
function getRecallMethodInParam(stmt) {
|
|
31
29
|
var _a;
|