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
|
@@ -74,7 +74,7 @@ class PagBuilder {
|
|
|
74
74
|
this.sdkMethodReturnValueMap = new Map();
|
|
75
75
|
// record the SDK API param, and create fake Values
|
|
76
76
|
this.methodParamValueMap = new Map();
|
|
77
|
-
this.fakeSdkMethodParamDeclaringStmt = new Stmt_1.ArkAssignStmt(new Local_1.Local(
|
|
77
|
+
this.fakeSdkMethodParamDeclaringStmt = new Stmt_1.ArkAssignStmt(new Local_1.Local(''), new Local_1.Local(''));
|
|
78
78
|
this.funcHandledThisRound = new Set();
|
|
79
79
|
this.updatedNodesThisRound = new Map();
|
|
80
80
|
this.singletonFuncMap = new Map();
|
|
@@ -85,7 +85,7 @@ class PagBuilder {
|
|
|
85
85
|
this.pag = p;
|
|
86
86
|
this.cg = cg;
|
|
87
87
|
this.scale = scale;
|
|
88
|
-
this.funcPags = new Map;
|
|
88
|
+
this.funcPags = new Map();
|
|
89
89
|
this.ctx = new Context_1.KLimitedContextSensitive(kLimit);
|
|
90
90
|
this.scene = s;
|
|
91
91
|
this.pagStat = new Statistics_1.PAGStat();
|
|
@@ -184,7 +184,7 @@ class PagBuilder {
|
|
|
184
184
|
if (callSites.length !== 0) {
|
|
185
185
|
// direct call is already existing in CG
|
|
186
186
|
// TODO: API Invoke stmt has anonymous method param, how to add these param into callee
|
|
187
|
-
callSites.forEach(
|
|
187
|
+
callSites.forEach(cs => {
|
|
188
188
|
this.addFuncPagCallSite(fpag, cs, ivkExpr);
|
|
189
189
|
});
|
|
190
190
|
}
|
|
@@ -201,8 +201,7 @@ class PagBuilder {
|
|
|
201
201
|
}
|
|
202
202
|
addFuncPagCallSite(fpag, cs, ivkExpr) {
|
|
203
203
|
if (ivkExpr instanceof Expr_1.ArkStaticInvokeExpr) {
|
|
204
|
-
if (ivkExpr.getMethodSignature().getDeclaringClassSignature()
|
|
205
|
-
.getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME) {
|
|
204
|
+
if (ivkExpr.getMethodSignature().getDeclaringClassSignature().getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME) {
|
|
206
205
|
fpag.addUnknownCallSite(cs);
|
|
207
206
|
}
|
|
208
207
|
else {
|
|
@@ -217,7 +216,7 @@ class PagBuilder {
|
|
|
217
216
|
// direct call or constructor call is already existing in CG
|
|
218
217
|
// TODO: some ptr invoke stmt is recognized as Static invoke in tests/resources/callgraph/funPtrTest1/fnPtrTest4.ts
|
|
219
218
|
// TODO: instance invoke(ptr invoke)
|
|
220
|
-
callSites.forEach(
|
|
219
|
+
callSites.forEach(cs => {
|
|
221
220
|
if (this.cg.isUnknownMethod(cs.calleeFuncID)) {
|
|
222
221
|
fpag.addUnknownCallSite(cs);
|
|
223
222
|
}
|
|
@@ -236,11 +235,15 @@ class PagBuilder {
|
|
|
236
235
|
}
|
|
237
236
|
}
|
|
238
237
|
processExternalScopeValue(value, funcID) {
|
|
238
|
+
let dummyMainFuncID = this.cg.getDummyMainFuncID();
|
|
239
|
+
if (dummyMainFuncID && funcID === dummyMainFuncID) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
239
242
|
if (value instanceof Local_1.Local) {
|
|
240
243
|
this.handleValueFromExternalScope(value, funcID);
|
|
241
244
|
}
|
|
242
245
|
else if (value instanceof Expr_1.ArkInstanceInvokeExpr) {
|
|
243
|
-
value.getUses().forEach(
|
|
246
|
+
value.getUses().forEach(v => {
|
|
244
247
|
this.handleValueFromExternalScope(v, funcID);
|
|
245
248
|
});
|
|
246
249
|
}
|
|
@@ -365,8 +368,7 @@ class PagBuilder {
|
|
|
365
368
|
this.addStaticPagCallEdge(cs, cid, calleeCid);
|
|
366
369
|
}
|
|
367
370
|
// Add edge to thisRef for special calls
|
|
368
|
-
if (calleeCGNode.getKind() === CallGraph_1.CallGraphNodeKind.constructor ||
|
|
369
|
-
calleeCGNode.getKind() === CallGraph_1.CallGraphNodeKind.intrinsic) {
|
|
371
|
+
if (calleeCGNode.getKind() === CallGraph_1.CallGraphNodeKind.constructor || calleeCGNode.getKind() === CallGraph_1.CallGraphNodeKind.intrinsic) {
|
|
370
372
|
let callee = this.scene.getMethod(this.cg.getMethodByFuncID(cs.calleeFuncID));
|
|
371
373
|
if (ivkExpr instanceof Expr_1.ArkInstanceInvokeExpr) {
|
|
372
374
|
let baseNode = this.getOrNewPagNode(cid, ivkExpr.getBase());
|
|
@@ -391,6 +393,14 @@ class PagBuilder {
|
|
|
391
393
|
else if (invokeExpr instanceof Expr_1.ArkPtrInvokeExpr && invokeExpr.getFuncPtrLocal() instanceof Local_1.Local) {
|
|
392
394
|
base = invokeExpr.getFuncPtrLocal();
|
|
393
395
|
}
|
|
396
|
+
else if (invokeExpr instanceof Expr_1.ArkPtrInvokeExpr && invokeExpr.getFuncPtrLocal() instanceof Ref_1.AbstractFieldRef) {
|
|
397
|
+
/**
|
|
398
|
+
* TODO: wait for IR change
|
|
399
|
+
* throw error in ptrInvoke with field ref
|
|
400
|
+
* this.field() // field is lambda expression
|
|
401
|
+
*/
|
|
402
|
+
continue;
|
|
403
|
+
}
|
|
394
404
|
// TODO: check base under different cid
|
|
395
405
|
let baseNodeIDs = this.pag.getNodesByValue(base);
|
|
396
406
|
if (!baseNodeIDs) {
|
|
@@ -423,7 +433,7 @@ class PagBuilder {
|
|
|
423
433
|
throw new Error(`can not find ArkMethod by FuncID ${funcID}`);
|
|
424
434
|
}
|
|
425
435
|
let locals = (_a = method.getBody()) === null || _a === void 0 ? void 0 : _a.getLocals();
|
|
426
|
-
funcPag.getUnknownCallSites().forEach(
|
|
436
|
+
funcPag.getUnknownCallSites().forEach(unknownCallSite => {
|
|
427
437
|
var _a;
|
|
428
438
|
let calleeName = (_a = unknownCallSite.callStmt.getInvokeExpr()) === null || _a === void 0 ? void 0 : _a.getMethodSignature().getMethodSubSignature().getMethodName();
|
|
429
439
|
let base = locals.get(calleeName);
|
|
@@ -458,7 +468,7 @@ class PagBuilder {
|
|
|
458
468
|
let dstCGNode = this.cg.getCallGraphNodeByMethod(callee.getSignature());
|
|
459
469
|
let callerNode = this.cg.getNode(cs.callerFuncID);
|
|
460
470
|
if (!callerNode) {
|
|
461
|
-
throw new Error(
|
|
471
|
+
throw new Error('Can not get caller method node');
|
|
462
472
|
}
|
|
463
473
|
// update call graph
|
|
464
474
|
// TODO: movo to cgbuilder
|
|
@@ -549,7 +559,11 @@ class PagBuilder {
|
|
|
549
559
|
srcNodes.push(srcBaseNode);
|
|
550
560
|
}
|
|
551
561
|
else if (!dstCGNode.isSdkMethod() && ivkExpr instanceof Expr_1.ArkPtrInvokeExpr) {
|
|
552
|
-
let
|
|
562
|
+
let originCS = ptNode.getCS();
|
|
563
|
+
if (!originCS) {
|
|
564
|
+
return srcNodes;
|
|
565
|
+
}
|
|
566
|
+
let thisValue = originCS.args[0];
|
|
553
567
|
if (!(thisValue instanceof Local_1.Local)) {
|
|
554
568
|
return srcNodes;
|
|
555
569
|
}
|
|
@@ -658,7 +672,7 @@ class PagBuilder {
|
|
|
658
672
|
srcNode.setOriginCid(cid);
|
|
659
673
|
}
|
|
660
674
|
addThisEdge(staticCS, cid, realCallee, srcNodes, baseClassPTNode, calleeCid) {
|
|
661
|
-
if (!(staticCS.args[0] instanceof Constant_1.NullConstant) && !
|
|
675
|
+
if (!(staticCS.args[0] instanceof Constant_1.NullConstant) && !realCallee.isStatic()) {
|
|
662
676
|
srcNodes.push(this.addThisRefCallEdge(baseClassPTNode, cid, staticCS.args[0], realCallee, calleeCid, staticCS.callerFuncID));
|
|
663
677
|
}
|
|
664
678
|
}
|
|
@@ -678,8 +692,7 @@ class PagBuilder {
|
|
|
678
692
|
let srcNodes = [];
|
|
679
693
|
let callerNode = this.cg.getNode(cs.callerFuncID);
|
|
680
694
|
let ivkExpr = cs.callStmt.getInvokeExpr();
|
|
681
|
-
logger.warn(
|
|
682
|
-
+ '\n --> ' + ivkExpr.toString() + '\n CID: ' + cid);
|
|
695
|
+
logger.warn('Handling unknown dyn call site : \n ' + callerNode.getMethod().toString() + '\n --> ' + ivkExpr.toString() + '\n CID: ' + cid);
|
|
683
696
|
let callees = [];
|
|
684
697
|
let callee = null;
|
|
685
698
|
callee = this.scene.getMethod(ivkExpr.getMethodSignature());
|
|
@@ -703,7 +716,7 @@ class PagBuilder {
|
|
|
703
716
|
callees.forEach(callee => {
|
|
704
717
|
let dstCGNode = this.cg.getCallGraphNodeByMethod(callee.getSignature());
|
|
705
718
|
if (!callerNode) {
|
|
706
|
-
throw new Error(
|
|
719
|
+
throw new Error('Can not get caller method node');
|
|
707
720
|
}
|
|
708
721
|
if (this.processStorage(cs, dstCGNode, cid)) {
|
|
709
722
|
if (ivkExpr.getArgs().length !== 0) {
|
|
@@ -733,7 +746,7 @@ class PagBuilder {
|
|
|
733
746
|
}
|
|
734
747
|
let callSites = funcPag.getDynamicCallSites();
|
|
735
748
|
const diffCallSites = new Set(Array.from(callSites).filter(item => !processedCallSites.has(item)));
|
|
736
|
-
diffCallSites.forEach(
|
|
749
|
+
diffCallSites.forEach(cs => {
|
|
737
750
|
let ivkExpr = cs.callStmt.getInvokeExpr();
|
|
738
751
|
if (!(ivkExpr instanceof Expr_1.ArkInstanceInvokeExpr)) {
|
|
739
752
|
return;
|
|
@@ -780,7 +793,8 @@ class PagBuilder {
|
|
|
780
793
|
logger.error(`callee is null`);
|
|
781
794
|
return -1;
|
|
782
795
|
}
|
|
783
|
-
let thisAssignStmt = (_a = callee
|
|
796
|
+
let thisAssignStmt = (_a = callee
|
|
797
|
+
.getCfg()) === null || _a === void 0 ? void 0 : _a.getStmts().filter(s => s instanceof Stmt_1.ArkAssignStmt && s.getRightOp() instanceof Ref_1.ArkThisRef);
|
|
784
798
|
let thisPtr = (thisAssignStmt === null || thisAssignStmt === void 0 ? void 0 : thisAssignStmt.at(0)).getRightOp();
|
|
785
799
|
if (!thisPtr) {
|
|
786
800
|
throw new Error('Can not get this ptr');
|
|
@@ -837,7 +851,9 @@ class PagBuilder {
|
|
|
837
851
|
*/
|
|
838
852
|
addCallParamPagEdge(calleeMethod, args, callStmt, callerCid, calleeCid, offset) {
|
|
839
853
|
var _a;
|
|
840
|
-
let params = calleeMethod
|
|
854
|
+
let params = calleeMethod
|
|
855
|
+
.getCfg()
|
|
856
|
+
.getStmts()
|
|
841
857
|
.filter(stmt => stmt instanceof Stmt_1.ArkAssignStmt && stmt.getRightOp() instanceof Ref_1.ArkParameterRef)
|
|
842
858
|
.map(stmt => stmt.getRightOp());
|
|
843
859
|
let srcNodes = [];
|
|
@@ -1043,7 +1059,7 @@ class PagBuilder {
|
|
|
1043
1059
|
// remove below block once this issue fixed
|
|
1044
1060
|
// globalThis process can not be removed while all `globalThis` ref is the same Value
|
|
1045
1061
|
if (v instanceof Local_1.Local) {
|
|
1046
|
-
if (v.getName() ===
|
|
1062
|
+
if (v.getName() === 'this') {
|
|
1047
1063
|
return this.getOrNewThisLoalNode(cid, v, s);
|
|
1048
1064
|
}
|
|
1049
1065
|
else if (v.getName() === TSConst_1.GLOBAL_THIS_NAME && v.getDeclaringStmt() == null) {
|
|
@@ -1201,9 +1217,7 @@ class PagBuilder {
|
|
|
1201
1217
|
return false;
|
|
1202
1218
|
}
|
|
1203
1219
|
let funcPag = this.funcPags.get(funcID);
|
|
1204
|
-
let heapObjects = [...funcPag.getInternalEdges()]
|
|
1205
|
-
.filter(edge => edge.kind === Pag_1.PagEdgeKind.Address)
|
|
1206
|
-
.map(edge => edge.dst);
|
|
1220
|
+
let heapObjects = [...funcPag.getInternalEdges()].filter(edge => edge.kind === Pag_1.PagEdgeKind.Address).map(edge => edge.dst);
|
|
1207
1221
|
let returnValues = arkMethod.getReturnValues();
|
|
1208
1222
|
let result = this.isValueConnected([...funcPag.getInternalEdges()], heapObjects, returnValues);
|
|
1209
1223
|
this.singletonFuncMap.set(funcID, result);
|
|
@@ -1442,10 +1456,11 @@ class PagBuilder {
|
|
|
1442
1456
|
stmtIsCreateAddressObj(stmt) {
|
|
1443
1457
|
let lhOp = stmt.getLeftOp();
|
|
1444
1458
|
let rhOp = stmt.getRightOp();
|
|
1445
|
-
if (
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
(rhOp instanceof
|
|
1459
|
+
if (rhOp instanceof Expr_1.ArkNewExpr ||
|
|
1460
|
+
rhOp instanceof Expr_1.ArkNewArrayExpr ||
|
|
1461
|
+
(lhOp instanceof Local_1.Local &&
|
|
1462
|
+
((rhOp instanceof Local_1.Local && rhOp.getType() instanceof Type_1.FunctionType && rhOp.getDeclaringStmt() === null) ||
|
|
1463
|
+
(rhOp instanceof Ref_1.AbstractFieldRef && rhOp.getType() instanceof Type_1.FunctionType))) ||
|
|
1449
1464
|
(rhOp instanceof Local_1.Local && rhOp.getName() === TSConst_1.GLOBAL_THIS_NAME && rhOp.getDeclaringStmt() == null)) {
|
|
1450
1465
|
return true;
|
|
1451
1466
|
}
|
|
@@ -1456,8 +1471,8 @@ class PagBuilder {
|
|
|
1456
1471
|
stmtIsCopyKind(stmt) {
|
|
1457
1472
|
let lhOp = stmt.getLeftOp();
|
|
1458
1473
|
let rhOp = stmt.getRightOp();
|
|
1459
|
-
let condition = (lhOp instanceof Local_1.Local &&
|
|
1460
|
-
rhOp instanceof Ref_1.ArkThisRef || rhOp instanceof Ref_1.ArkStaticFieldRef)) ||
|
|
1474
|
+
let condition = (lhOp instanceof Local_1.Local &&
|
|
1475
|
+
(rhOp instanceof Local_1.Local || rhOp instanceof Ref_1.ArkParameterRef || rhOp instanceof Ref_1.ArkThisRef || rhOp instanceof Ref_1.ArkStaticFieldRef)) ||
|
|
1461
1476
|
(lhOp instanceof Ref_1.ArkStaticFieldRef && rhOp instanceof Local_1.Local);
|
|
1462
1477
|
if (condition) {
|
|
1463
1478
|
return true;
|
|
@@ -1467,8 +1482,7 @@ class PagBuilder {
|
|
|
1467
1482
|
stmtIsWriteKind(stmt) {
|
|
1468
1483
|
let lhOp = stmt.getLeftOp();
|
|
1469
1484
|
let rhOp = stmt.getRightOp();
|
|
1470
|
-
if (rhOp instanceof Local_1.Local &&
|
|
1471
|
-
(lhOp instanceof Ref_1.ArkInstanceFieldRef || lhOp instanceof Ref_1.ArkArrayRef)) {
|
|
1485
|
+
if (rhOp instanceof Local_1.Local && (lhOp instanceof Ref_1.ArkInstanceFieldRef || lhOp instanceof Ref_1.ArkArrayRef)) {
|
|
1472
1486
|
return true;
|
|
1473
1487
|
}
|
|
1474
1488
|
return false;
|
|
@@ -1476,8 +1490,7 @@ class PagBuilder {
|
|
|
1476
1490
|
stmtIsReadKind(stmt) {
|
|
1477
1491
|
let lhOp = stmt.getLeftOp();
|
|
1478
1492
|
let rhOp = stmt.getRightOp();
|
|
1479
|
-
if (lhOp instanceof Local_1.Local &&
|
|
1480
|
-
(rhOp instanceof Ref_1.ArkInstanceFieldRef || rhOp instanceof Ref_1.ArkArrayRef)) {
|
|
1493
|
+
if (lhOp instanceof Local_1.Local && (rhOp instanceof Ref_1.ArkInstanceFieldRef || rhOp instanceof Ref_1.ArkArrayRef)) {
|
|
1481
1494
|
return true;
|
|
1482
1495
|
}
|
|
1483
1496
|
return false;
|
|
@@ -1486,7 +1499,7 @@ class PagBuilder {
|
|
|
1486
1499
|
var _a;
|
|
1487
1500
|
funcPag.addDynamicCallSite(cs);
|
|
1488
1501
|
this.pagStat.numDynamicCall++;
|
|
1489
|
-
logger.trace(
|
|
1502
|
+
logger.trace('[add dynamic callsite] ' + cs.callStmt.toString() + ': ' + ((_a = cs.callStmt.getCfg()) === null || _a === void 0 ? void 0 : _a.getDeclaringMethod().getSignature().toString()));
|
|
1490
1503
|
}
|
|
1491
1504
|
setPtForNode(node, pts) {
|
|
1492
1505
|
if (!pts) {
|
|
@@ -1496,8 +1509,9 @@ class PagBuilder {
|
|
|
1496
1509
|
}
|
|
1497
1510
|
getRealThisLocal(input, funcId) {
|
|
1498
1511
|
var _a;
|
|
1499
|
-
if (input.getName() !== 'this')
|
|
1512
|
+
if (input.getName() !== 'this') {
|
|
1500
1513
|
return input;
|
|
1514
|
+
}
|
|
1501
1515
|
let real = input;
|
|
1502
1516
|
let f = this.cg.getArkMethodByFuncID(funcId);
|
|
1503
1517
|
(_a = f === null || f === void 0 ? void 0 : f.getCfg()) === null || _a === void 0 ? void 0 : _a.getStmts().forEach(s => {
|
|
@@ -1537,7 +1551,7 @@ class PagBuilder {
|
|
|
1537
1551
|
*/
|
|
1538
1552
|
handleValueFromExternalScope(value, funcID, originValue) {
|
|
1539
1553
|
if (value instanceof Local_1.Local) {
|
|
1540
|
-
if (value.getDeclaringStmt() ||
|
|
1554
|
+
if (value.getDeclaringStmt() || value.getName() === 'this') {
|
|
1541
1555
|
// not from external scope
|
|
1542
1556
|
return;
|
|
1543
1557
|
}
|
|
@@ -1564,7 +1578,11 @@ class PagBuilder {
|
|
|
1564
1578
|
// Export a local
|
|
1565
1579
|
// Add a InterProcedural edge
|
|
1566
1580
|
if (dst instanceof Local_1.Local) {
|
|
1567
|
-
let e = {
|
|
1581
|
+
let e = {
|
|
1582
|
+
src: src,
|
|
1583
|
+
dst: dst,
|
|
1584
|
+
kind: Pag_1.PagEdgeKind.InterProceduralCopy,
|
|
1585
|
+
};
|
|
1568
1586
|
interFuncPag.addToInterProceduralEdgeSet(e);
|
|
1569
1587
|
this.addExportVariableMap(src, dst);
|
|
1570
1588
|
}
|
|
@@ -1596,12 +1614,11 @@ class PagBuilder {
|
|
|
1596
1614
|
// namespace check
|
|
1597
1615
|
let arkMethod = this.cg.getArkMethodByFuncID(funcID);
|
|
1598
1616
|
if (!arkMethod) {
|
|
1599
|
-
return;
|
|
1617
|
+
return undefined;
|
|
1600
1618
|
}
|
|
1601
1619
|
let declaringNameSpace = arkMethod.getDeclaringArkClass().getDeclaringArkNamespace();
|
|
1602
1620
|
while (declaringNameSpace) {
|
|
1603
|
-
let nameSpaceLocals = (_c = (_b = (_a = declaringNameSpace.getDefaultClass()
|
|
1604
|
-
.getDefaultArkMethod()) === null || _a === void 0 ? void 0 : _a.getBody()) === null || _b === void 0 ? void 0 : _b.getLocals()) !== null && _c !== void 0 ? _c : new Map();
|
|
1621
|
+
let nameSpaceLocals = (_c = (_b = (_a = declaringNameSpace.getDefaultClass().getDefaultArkMethod()) === null || _a === void 0 ? void 0 : _a.getBody()) === null || _b === void 0 ? void 0 : _b.getLocals()) !== null && _c !== void 0 ? _c : new Map();
|
|
1605
1622
|
if (nameSpaceLocals.has(value.getName())) {
|
|
1606
1623
|
return nameSpaceLocals.get(value.getName());
|
|
1607
1624
|
}
|
|
@@ -1609,31 +1626,31 @@ class PagBuilder {
|
|
|
1609
1626
|
}
|
|
1610
1627
|
// file check
|
|
1611
1628
|
let declaringFile = arkMethod.getDeclaringArkFile();
|
|
1612
|
-
let fileLocals = (_g = (_f = (_e = declaringFile.getDefaultClass()
|
|
1613
|
-
.getDefaultArkMethod()) === null || _e === void 0 ? void 0 : _e.getBody()) === null || _f === void 0 ? void 0 : _f.getLocals()) !== null && _g !== void 0 ? _g : new Map();
|
|
1629
|
+
let fileLocals = (_g = (_f = (_e = declaringFile.getDefaultClass().getDefaultArkMethod()) === null || _e === void 0 ? void 0 : _e.getBody()) === null || _f === void 0 ? void 0 : _f.getLocals()) !== null && _g !== void 0 ? _g : new Map();
|
|
1614
1630
|
if (!fileLocals.has(value.getName())) {
|
|
1615
|
-
return;
|
|
1631
|
+
return undefined;
|
|
1616
1632
|
}
|
|
1617
1633
|
return fileLocals.get(value.getName());
|
|
1618
1634
|
}
|
|
1619
1635
|
getExportSourceValue(value, funcID) {
|
|
1620
1636
|
let curMethod = this.cg.getArkMethodByFuncID(funcID);
|
|
1621
1637
|
if (!curMethod) {
|
|
1622
|
-
return;
|
|
1638
|
+
return undefined;
|
|
1623
1639
|
}
|
|
1624
1640
|
let curFile = curMethod.getDeclaringArkFile();
|
|
1625
1641
|
let impInfo = curFile.getImportInfoBy(value.getName());
|
|
1626
1642
|
if (!impInfo) {
|
|
1627
|
-
return;
|
|
1643
|
+
return undefined;
|
|
1628
1644
|
}
|
|
1629
1645
|
let exportSource = impInfo.getLazyExportInfo();
|
|
1630
1646
|
if (!exportSource) {
|
|
1631
|
-
return;
|
|
1647
|
+
return undefined;
|
|
1632
1648
|
}
|
|
1633
1649
|
let exportSouceValue = exportSource.getArkExport();
|
|
1634
1650
|
if (exportSouceValue instanceof Local_1.Local) {
|
|
1635
1651
|
return exportSouceValue;
|
|
1636
1652
|
}
|
|
1653
|
+
return undefined;
|
|
1637
1654
|
}
|
|
1638
1655
|
addExportVariableMap(src, dst) {
|
|
1639
1656
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointerAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysis.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAG5D,OAAO,EAAE,SAAS,EAAiB,QAAQ,EAAe,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAa,IAAI,EAAe,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAI5C,OAAO,EAAE,GAAG,EAAgF,MAAM,OAAO,CAAC;AAE1G,OAAO,EAAE,qBAAqB,EAAoB,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAIvD,qBAAa,eAAgB,SAAQ,gBAAgB;IACjD,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,GAAG,CAAqD;IAChE,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,MAAM,CAAwB;gBAE1B,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB;IAW1E,MAAM,CAAC,8BAA8B,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,eAAe;IAuB3G,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,eAAe;IAgB7G,SAAS,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"PointerAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysis.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAG5D,OAAO,EAAE,SAAS,EAAiB,QAAQ,EAAe,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAa,IAAI,EAAe,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAI5C,OAAO,EAAE,GAAG,EAAgF,MAAM,OAAO,CAAC;AAE1G,OAAO,EAAE,qBAAqB,EAAoB,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAIvD,qBAAa,eAAgB,SAAQ,gBAAgB;IACjD,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,GAAG,CAAqD;IAChE,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,MAAM,CAAwB;gBAE1B,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB;IAW1E,MAAM,CAAC,8BAA8B,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,eAAe;IAuB3G,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,eAAe;IAgB7G,SAAS,CAAC,IAAI,IAAI,IAAI;IAYf,KAAK,IAAI,IAAI;IAMpB,OAAO,CAAC,WAAW;IAgBZ,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAI5D,OAAO,IAAI,MAAM;IAQxB,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE;IAK/C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAIvC,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,eAAe;IAkDvB,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,SAAS;IAoBjB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACI,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,GAAG,OAAO;IAmCrD,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,GAAG,OAAO;IAItD,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IA6BhD,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,cAAc;IA2Cf,cAAc,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAI9C,SAAS,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,QAAQ,EAAE;IAIlE,iBAAiB,IAAI,MAAM,EAAE;IAI7B,eAAe,IAAI,MAAM,EAAE;IAI3B,YAAY,IAAI,qBAAqB;IAI5C,OAAO,CAAC,sBAAsB;IA8BvB,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAU9G"}
|
|
@@ -226,7 +226,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
226
226
|
// get intra procedural field node by exportMap
|
|
227
227
|
let intraProceduralFieldNodeMap = new Map();
|
|
228
228
|
if (nodeValue instanceof Local_1.Local) {
|
|
229
|
-
this.pagBuilder.getExportVariableMap(nodeValue).forEach(
|
|
229
|
+
this.pagBuilder.getExportVariableMap(nodeValue).forEach(dst => {
|
|
230
230
|
var _a;
|
|
231
231
|
let temp = (_a = this.pag.getNodesByBaseValue(dst)) !== null && _a !== void 0 ? _a : new Map();
|
|
232
232
|
intraProceduralFieldNodeMap = this.mergeInstanceFieldMap(instanceFieldNodeMap, temp);
|
|
@@ -247,7 +247,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
247
247
|
});
|
|
248
248
|
});
|
|
249
249
|
// without cid check, because closure and export is under different cid
|
|
250
|
-
intraProceduralFieldNodeMap.forEach(
|
|
250
|
+
intraProceduralFieldNodeMap.forEach(nodeIDs => {
|
|
251
251
|
nodeIDs.forEach((nodeID) => {
|
|
252
252
|
// get abstract field node
|
|
253
253
|
let fieldNode = this.pag.getNode(nodeID);
|
|
@@ -258,7 +258,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
258
258
|
return true;
|
|
259
259
|
}
|
|
260
260
|
handleFieldInEdges(fieldNode, diffPts) {
|
|
261
|
-
fieldNode.getIncomingEdge().forEach(
|
|
261
|
+
fieldNode.getIncomingEdge().forEach(edge => {
|
|
262
262
|
if (edge.getKind() !== Pag_1.PagEdgeKind.Write) {
|
|
263
263
|
return;
|
|
264
264
|
}
|
|
@@ -285,7 +285,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
285
285
|
});
|
|
286
286
|
}
|
|
287
287
|
handleFieldOutEdges(fieldNode, diffPts) {
|
|
288
|
-
fieldNode.getOutgoingEdges().forEach(
|
|
288
|
+
fieldNode.getOutgoingEdges().forEach(edge => {
|
|
289
289
|
if (edge.getKind() !== Pag_1.PagEdgeKind.Load) {
|
|
290
290
|
return;
|
|
291
291
|
}
|
|
@@ -379,7 +379,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
379
379
|
return changed;
|
|
380
380
|
}
|
|
381
381
|
logger.info(`[process dynamic callsite] node ${node.getID()}`);
|
|
382
|
-
dynCallSites.forEach(
|
|
382
|
+
dynCallSites.forEach(dynCallsite => {
|
|
383
383
|
for (let pt of pts) {
|
|
384
384
|
let srcNodes = this.pagBuilder.addDynamicCallEdge(dynCallsite, pt, node.getCid());
|
|
385
385
|
changed = this.addToReanalyze(srcNodes) || changed;
|
|
@@ -396,7 +396,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
396
396
|
return changed;
|
|
397
397
|
}
|
|
398
398
|
logger.info(`[process unknown callsite] node ${node.getID()}`);
|
|
399
|
-
unknownCallSites.forEach(
|
|
399
|
+
unknownCallSites.forEach(unknownCallSite => {
|
|
400
400
|
for (let pt of pts) {
|
|
401
401
|
let srcNodes = this.pagBuilder.addDynamicCallEdge(unknownCallSite, pt, node.getCid());
|
|
402
402
|
changed = this.addToReanalyze(srcNodes) || changed;
|
|
@@ -481,7 +481,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
481
481
|
addIncomingEdgesToWorkList(valueNode, workListNodes, processedNodes) {
|
|
482
482
|
let inCopyEdges = valueNode.getIncomingCopyEdges();
|
|
483
483
|
let inThisEdges = valueNode.getIncomingThisEdges();
|
|
484
|
-
let combinedEdges = new Set([...inCopyEdges !== null && inCopyEdges !== void 0 ? inCopyEdges : [], ...inThisEdges !== null && inThisEdges !== void 0 ? inThisEdges : []]);
|
|
484
|
+
let combinedEdges = new Set([...(inCopyEdges !== null && inCopyEdges !== void 0 ? inCopyEdges : []), ...(inThisEdges !== null && inThisEdges !== void 0 ? inThisEdges : [])]);
|
|
485
485
|
if (combinedEdges) {
|
|
486
486
|
combinedEdges.forEach(edge => {
|
|
487
487
|
let srcID = edge.getSrcID();
|
|
@@ -494,7 +494,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
494
494
|
addOutgoingEdgesToWorkList(valueNode, workListNodes, processedNodes) {
|
|
495
495
|
let outCopyEdges = valueNode.getOutgoingCopyEdges();
|
|
496
496
|
let outThisEdges = valueNode.getOutgoingThisEdges();
|
|
497
|
-
let combinedEdges = new Set([...outCopyEdges !== null && outCopyEdges !== void 0 ? outCopyEdges : [], ...outThisEdges !== null && outThisEdges !== void 0 ? outThisEdges : []]);
|
|
497
|
+
let combinedEdges = new Set([...(outCopyEdges !== null && outCopyEdges !== void 0 ? outCopyEdges : []), ...(outThisEdges !== null && outThisEdges !== void 0 ? outThisEdges : [])]);
|
|
498
498
|
if (combinedEdges) {
|
|
499
499
|
combinedEdges.forEach(edge => {
|
|
500
500
|
let dstID = edge.getDstID();
|
|
@@ -536,7 +536,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
536
536
|
findSameType = true;
|
|
537
537
|
}
|
|
538
538
|
}
|
|
539
|
-
// If find pts to original type,
|
|
539
|
+
// If find pts to original type,
|
|
540
540
|
// need add original type back since it is a correct type
|
|
541
541
|
let diffSet = this.typeDiffMap.get(value);
|
|
542
542
|
if (diffSet && findSameType) {
|
|
@@ -561,9 +561,9 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
561
561
|
}
|
|
562
562
|
dumpUnhandledFunctions() {
|
|
563
563
|
const filePath = path_1.default.join(this.config.outputDirectory, 'PtaUnhandledFunctionList.txt');
|
|
564
|
-
fs.access(filePath, fs.constants.F_OK,
|
|
564
|
+
fs.access(filePath, fs.constants.F_OK, err => {
|
|
565
565
|
if (!err) {
|
|
566
|
-
fs.truncate(filePath, 0,
|
|
566
|
+
fs.truncate(filePath, 0, err => {
|
|
567
567
|
err && logger.error('Error to truncate file ', err);
|
|
568
568
|
});
|
|
569
569
|
}
|
|
@@ -578,7 +578,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
578
578
|
updatedContent += f.getSignature().toString() + '\n';
|
|
579
579
|
}
|
|
580
580
|
});
|
|
581
|
-
fs.writeFile(filePath, updatedContent, 'utf8',
|
|
581
|
+
fs.writeFile(filePath, updatedContent, 'utf8', err => {
|
|
582
582
|
if (err) {
|
|
583
583
|
logger.error('Error to write file', err);
|
|
584
584
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointerAnalysisConfig.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysisConfig.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA2B,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,oBAAY,gBAAgB;IACxB,YAAY,IAAI;IAChB,WAAW,IAAI;CAClB;AAED,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAExC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,gBAAgB,CAAC;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,EAAE,UAAU,cAAc,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"PointerAnalysisConfig.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysisConfig.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA2B,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,oBAAY,gBAAgB;IACxB,YAAY,IAAI;IAChB,WAAW,IAAI;CAClB;AAED,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAExC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,gBAAgB,CAAC;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,EAAE,UAAU,cAAc,CAAC,MAAM,CAAC,CAAC;gBAOvD,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,cAAc,GAAE,OAAe,EAC/B,OAAO,GAAE,OAAe,EACxB,iBAAiB,GAAE,OAAe,EAClC,aAAa,GAAE,gBAAgD,EAC/D,SAAS,oBAAwB;WAuBvB,MAAM,CAChB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,cAAc,GAAE,OAAe,EAC/B,OAAO,GAAE,OAAe,EACxB,iBAAiB,GAAE,OAAe,EAClC,aAAa,GAAE,gBAAgD,EAC/D,SAAS,oBAAwB,GAClC,qBAAqB;WAgBV,WAAW,IAAI,qBAAqB;CAMrD"}
|
|
@@ -58,7 +58,7 @@ export declare class DiffPTData<K, D extends Idx, DS extends IPtsCollection<D>>
|
|
|
58
58
|
private DSCreator;
|
|
59
59
|
private diffPtsMap;
|
|
60
60
|
private propaPtsMap;
|
|
61
|
-
constructor(DSCreator:
|
|
61
|
+
constructor(DSCreator: new () => DS);
|
|
62
62
|
clear(): void;
|
|
63
63
|
addPts(v: K, elem: D): boolean;
|
|
64
64
|
resetElem(v: K): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PtsDS.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PtsDS.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,KAAK,GAAG,GAAG,MAAM,CAAC;AAClB,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,GAAG;IACzC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;IAC3B,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;IACzB,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;IACd,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC;IAC/B,KAAK,IAAI,IAAI,CAAC;IACd,KAAK,IAAI,MAAM,CAAC;IAChB,OAAO,IAAI,OAAO,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC;IAC/B,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC;IAChC,cAAc,IAAI,GAAG,CAAC;IACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC5C;AAKD,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,iBAAiB,GAAG,UAAU,cAAc,CAAC,CAAC,CAAC,CAO3G;AAKD,qBAAa,MAAM,CAAC,CAAC,SAAS,GAAG,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IAC3D,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;;IAMZ,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAI1B,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAQxB,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAQxB,KAAK,IAAI,IAAI;IAOb,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAQ3B,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAS9B,KAAK,IAAI,IAAI;IAIb,KAAK,IAAI,MAAM;IAIf,OAAO,IAAI,OAAO;IAKlB,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAU9B,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAS/B,cAAc,IAAI,GAAG,CAAC,CAAC,CAAC;IAIxB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC;CAG3C;AAED,qBAAa,KAAK,CAAC,CAAC,SAAS,GAAG,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IAC1D,GAAG,EAAE,eAAe,CAAC;;IAMrB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAI1B,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAKxB,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAKxB,KAAK,IAAI,IAAI;IAMb,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAI3B,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAI9B,KAAK,IAAI,IAAI;IAIb,KAAK,IAAI,MAAM;IAIf,OAAO,IAAI,OAAO;IAKlB,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAU9B,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAS/B,cAAc,IAAI,eAAe;IAIjC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC;CAG3C;AAED,oBAAY,iBAAiB;
|
|
1
|
+
{"version":3,"file":"PtsDS.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PtsDS.ts"],"names":[],"mappings":"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"}
|
|
@@ -174,7 +174,6 @@ var PtsCollectionType;
|
|
|
174
174
|
PtsCollectionType[PtsCollectionType["Set"] = 0] = "Set";
|
|
175
175
|
PtsCollectionType[PtsCollectionType["BitVector"] = 1] = "BitVector";
|
|
176
176
|
})(PtsCollectionType = exports.PtsCollectionType || (exports.PtsCollectionType = {}));
|
|
177
|
-
;
|
|
178
177
|
class DiffPTData {
|
|
179
178
|
constructor(DSCreator) {
|
|
180
179
|
this.DSCreator = DSCreator;
|
|
@@ -268,8 +267,9 @@ class DiffPTData {
|
|
|
268
267
|
return this.propaPtsMap.get(v);
|
|
269
268
|
}
|
|
270
269
|
flush(v) {
|
|
271
|
-
if (!this.diffPtsMap.has(v))
|
|
270
|
+
if (!this.diffPtsMap.has(v)) {
|
|
272
271
|
return;
|
|
272
|
+
}
|
|
273
273
|
let diff = this.diffPtsMap.get(v);
|
|
274
274
|
let propa = this.getPropaPtsMut(v);
|
|
275
275
|
// do not clear origin propa, only copy the pt and add it to diff
|
|
@@ -278,21 +278,25 @@ class DiffPTData {
|
|
|
278
278
|
}
|
|
279
279
|
clearPts(v) {
|
|
280
280
|
let diff = this.diffPtsMap.get(v);
|
|
281
|
-
if (diff)
|
|
281
|
+
if (diff) {
|
|
282
282
|
diff.clear();
|
|
283
|
+
}
|
|
283
284
|
let propa = this.propaPtsMap.get(v);
|
|
284
|
-
if (propa)
|
|
285
|
+
if (propa) {
|
|
285
286
|
propa.clear();
|
|
287
|
+
}
|
|
286
288
|
}
|
|
287
289
|
clearDiffPts(v) {
|
|
288
290
|
let diff = this.diffPtsMap.get(v);
|
|
289
|
-
if (diff)
|
|
291
|
+
if (diff) {
|
|
290
292
|
diff.clear();
|
|
293
|
+
}
|
|
291
294
|
}
|
|
292
295
|
clearPropaPts(v) {
|
|
293
296
|
let propa = this.propaPtsMap.get(v);
|
|
294
|
-
if (propa)
|
|
297
|
+
if (propa) {
|
|
295
298
|
propa.clear();
|
|
299
|
+
}
|
|
296
300
|
}
|
|
297
301
|
calculateDiff(src, dst) {
|
|
298
302
|
let srcDiff = this.diffPtsMap.get(src);
|
|
@@ -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
|
|
@@ -49,7 +49,7 @@ class Constant {
|
|
|
49
49
|
toString() {
|
|
50
50
|
let str = '';
|
|
51
51
|
if (this.type instanceof Type_1.StringType) {
|
|
52
|
-
str = '
|
|
52
|
+
str = "'" + this.value + "'";
|
|
53
53
|
}
|
|
54
54
|
else {
|
|
55
55
|
str = this.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefUseChain.d.ts","sourceRoot":"","sources":["../../../src/core/base/DefUseChain.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,WAAW;IACpB,KAAK,
|
|
1
|
+
{"version":3,"file":"DefUseChain.d.ts","sourceRoot":"","sources":["../../../src/core/base/DefUseChain.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,WAAW;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,IAAI,CAAC;gBACE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;CAKjD"}
|
|
@@ -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":"Expr.d.ts","sourceRoot":"","sources":["../../../src/core/base/Expr.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAEH,SAAS,
|
|
1
|
+
{"version":3,"file":"Expr.d.ts","sourceRoot":"","sources":["../../../src/core/base/Expr.ts"],"names":[],"mappings":"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"}
|
package/lib/core/base/Expr.js
CHANGED
|
@@ -592,8 +592,7 @@ class AbstractBinopExpr extends AbstractExpr {
|
|
|
592
592
|
}
|
|
593
593
|
break;
|
|
594
594
|
case '??':
|
|
595
|
-
if (op1Type === Type_1.UnknownType.getInstance() || op1Type === Type_1.UndefinedType.getInstance()
|
|
596
|
-
|| op1Type === Type_1.NullType.getInstance()) {
|
|
595
|
+
if (op1Type === Type_1.UnknownType.getInstance() || op1Type === Type_1.UndefinedType.getInstance() || op1Type === Type_1.NullType.getInstance()) {
|
|
597
596
|
type = op2Type;
|
|
598
597
|
}
|
|
599
598
|
else {
|
|
@@ -601,7 +600,6 @@ class AbstractBinopExpr extends AbstractExpr {
|
|
|
601
600
|
}
|
|
602
601
|
break;
|
|
603
602
|
default:
|
|
604
|
-
;
|
|
605
603
|
}
|
|
606
604
|
this.type = type;
|
|
607
605
|
}
|
|
@@ -957,12 +955,12 @@ class AliasTypeExpr extends AbstractExpr {
|
|
|
957
955
|
return `${typeOf}${typeObject.getName()}`;
|
|
958
956
|
}
|
|
959
957
|
static isAliasTypeOriginalModel(object) {
|
|
960
|
-
return object instanceof Type_1.Type ||
|
|
958
|
+
return (object instanceof Type_1.Type ||
|
|
961
959
|
object instanceof ArkImport_1.ImportInfo ||
|
|
962
960
|
object instanceof Local_1.Local ||
|
|
963
961
|
object instanceof ArkClass_1.ArkClass ||
|
|
964
962
|
object instanceof ArkMethod_1.ArkMethod ||
|
|
965
|
-
object instanceof ArkField_1.ArkField;
|
|
963
|
+
object instanceof ArkField_1.ArkField);
|
|
966
964
|
}
|
|
967
965
|
}
|
|
968
966
|
exports.AliasTypeExpr = AliasTypeExpr;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Local.d.ts","sourceRoot":"","sources":["../../../src/core/base/Local.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,
|
|
1
|
+
{"version":3,"file":"Local.d.ts","sourceRoot":"","sources":["../../../src/core/base/Local.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAa,IAAI,EAAe,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAkB,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAGxF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C;;GAEG;AACH,qBAAa,KAAM,YAAW,KAAK,EAAE,SAAS;IAC1C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAO;IAEnB,OAAO,CAAC,aAAa,CAAe;IAEpC,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,SAAS,CAAC,CAAU;gBAEhB,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,IAAgC;IASzD,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK;IAa7C;;;;;;;;;;;;;;;;;OAiBG;IACI,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;;OAGG;IACI,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IAI5B,gBAAgB,IAAI,KAAK,GAAG,IAAI;IAIhC,gBAAgB,CAAC,aAAa,EAAE,KAAK,GAAG,IAAI;IAInD;;;;;;;;;;;;;;;;;OAiBG;IACI,gBAAgB,IAAI,IAAI,GAAG,IAAI;IAI/B,gBAAgB,CAAC,aAAa,EAAE,IAAI,GAAG,IAAI;IAIlD;;;OAGG;IACI,OAAO,IAAI,KAAK,EAAE;IAIlB,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAIxC;;;;;;OAMG;IACI,YAAY,IAAI,IAAI,EAAE;IAI7B;;;;;;;;;;;;OAYG;IACI,QAAQ,IAAI,MAAM;IAIlB,aAAa,IAAI,UAAU;IAI3B,YAAY,IAAI,MAAM;IAItB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO;IAOrD,YAAY,IAAI,cAAc;IAU9B,YAAY,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IAI7C,YAAY,IAAI,OAAO;IAOvB,YAAY,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI;CAGnD"}
|