arkanalyzer 1.0.20 → 1.0.21
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/lib/Config.d.ts +70 -70
- package/lib/Config.js +198 -198
- package/lib/Scene.d.ts +316 -316
- package/lib/Scene.js +1316 -1316
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +28 -28
- package/lib/callgraph/algorithm/AbstractAnalysis.js +144 -144
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts +10 -10
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +69 -69
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts +15 -15
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +146 -146
- package/lib/callgraph/common/Statistics.d.ts +57 -57
- package/lib/callgraph/common/Statistics.js +228 -228
- package/lib/callgraph/model/CallGraph.d.ts +96 -96
- package/lib/callgraph/model/CallGraph.js +354 -354
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +15 -15
- package/lib/callgraph/model/builder/CallGraphBuilder.js +106 -106
- package/lib/callgraph/pointerAnalysis/Context.d.ts +37 -37
- package/lib/callgraph/pointerAnalysis/Context.js +155 -155
- package/lib/callgraph/pointerAnalysis/DummyCallCreator.d.ts +22 -22
- package/lib/callgraph/pointerAnalysis/DummyCallCreator.js +104 -104
- package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts +5 -5
- package/lib/callgraph/pointerAnalysis/PTAUtils.js +46 -46
- package/lib/callgraph/pointerAnalysis/Pag.d.ts +261 -261
- package/lib/callgraph/pointerAnalysis/Pag.js +930 -930
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +157 -157
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +1399 -1399
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +72 -72
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +573 -573
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +15 -15
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +81 -81
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts +80 -80
- package/lib/callgraph/pointerAnalysis/PtsDS.js +308 -308
- package/lib/core/base/Constant.d.ts +48 -48
- package/lib/core/base/Constant.js +103 -103
- package/lib/core/base/Decorator.d.ts +15 -15
- package/lib/core/base/Decorator.js +46 -46
- package/lib/core/base/DefUseChain.d.ts +8 -8
- package/lib/core/base/DefUseChain.js +25 -25
- package/lib/core/base/Expr.d.ts +340 -340
- package/lib/core/base/Expr.js +917 -917
- package/lib/core/base/Local.d.ts +104 -104
- package/lib/core/base/Local.js +176 -176
- package/lib/core/base/Position.d.ts +30 -30
- package/lib/core/base/Position.js +147 -147
- package/lib/core/base/Ref.d.ts +173 -173
- package/lib/core/base/Ref.js +374 -374
- package/lib/core/base/Stmt.d.ts +237 -237
- package/lib/core/base/Stmt.js +525 -525
- package/lib/core/base/Trap.d.ts +8 -8
- package/lib/core/base/Trap.js +30 -30
- package/lib/core/base/Type.d.ts +308 -308
- package/lib/core/base/Type.js +639 -639
- package/lib/core/base/TypeExpr.d.ts +71 -71
- package/lib/core/base/TypeExpr.js +155 -155
- package/lib/core/base/Value.d.ts +32 -32
- package/lib/core/base/Value.js +16 -16
- package/lib/core/common/ArkError.d.ts +14 -14
- package/lib/core/common/ArkError.js +28 -28
- package/lib/core/common/ArkIRTransformer.d.ts +67 -67
- package/lib/core/common/ArkIRTransformer.js +690 -690
- package/lib/core/common/ArkValueTransformer.d.ts +89 -89
- package/lib/core/common/ArkValueTransformer.js +1478 -1478
- package/lib/core/common/Builtin.d.ts +36 -36
- package/lib/core/common/Builtin.js +81 -81
- package/lib/core/common/Const.d.ts +21 -21
- package/lib/core/common/Const.js +43 -43
- package/lib/core/common/DummyMainCreater.d.ts +46 -46
- package/lib/core/common/DummyMainCreater.js +319 -319
- package/lib/core/common/EtsConst.d.ts +73 -73
- package/lib/core/common/EtsConst.js +1021 -1021
- package/lib/core/common/ExprUseReplacer.d.ts +21 -21
- package/lib/core/common/ExprUseReplacer.js +124 -124
- package/lib/core/common/IRInference.d.ts +36 -36
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +651 -648
- package/lib/core/common/IRUtils.d.ts +18 -18
- package/lib/core/common/IRUtils.js +141 -141
- package/lib/core/common/ModelUtils.d.ts +70 -70
- package/lib/core/common/ModelUtils.js +712 -712
- package/lib/core/common/RefUseReplacer.d.ts +13 -13
- package/lib/core/common/RefUseReplacer.js +52 -52
- package/lib/core/common/SdkUtils.d.ts +8 -8
- package/lib/core/common/SdkUtils.js +105 -105
- package/lib/core/common/StmtDefReplacer.d.ts +12 -12
- package/lib/core/common/StmtDefReplacer.js +41 -41
- package/lib/core/common/StmtUseReplacer.d.ts +16 -16
- package/lib/core/common/StmtUseReplacer.js +108 -108
- package/lib/core/common/TSConst.d.ts +18 -18
- package/lib/core/common/TSConst.js +36 -36
- package/lib/core/common/TypeInference.d.ts +102 -102
- package/lib/core/common/TypeInference.js +748 -748
- package/lib/core/common/ValueUtil.d.ts +12 -12
- package/lib/core/common/ValueUtil.js +54 -54
- package/lib/core/common/VisibleValue.d.ts +36 -36
- package/lib/core/common/VisibleValue.js +212 -212
- package/lib/core/dataflow/DataflowProblem.d.ts +20 -20
- package/lib/core/dataflow/DataflowProblem.js +20 -20
- package/lib/core/dataflow/DataflowResult.d.ts +7 -7
- package/lib/core/dataflow/DataflowResult.js +26 -26
- package/lib/core/dataflow/DataflowSolver.d.ts +43 -43
- package/lib/core/dataflow/DataflowSolver.js +307 -307
- package/lib/core/dataflow/Edge.d.ts +11 -11
- package/lib/core/dataflow/Edge.js +31 -31
- package/lib/core/dataflow/Fact.d.ts +6 -6
- package/lib/core/dataflow/Fact.js +24 -24
- package/lib/core/dataflow/GenericDataFlow.d.ts +142 -142
- package/lib/core/dataflow/GenericDataFlow.js +109 -109
- package/lib/core/dataflow/ReachingDef.d.ts +62 -62
- package/lib/core/dataflow/ReachingDef.js +168 -168
- package/lib/core/dataflow/UndefinedVariable.d.ts +45 -45
- package/lib/core/dataflow/UndefinedVariable.js +288 -288
- package/lib/core/dataflow/Util.d.ts +9 -9
- package/lib/core/dataflow/Util.js +64 -64
- package/lib/core/graph/BaseExplicitGraph.d.ts +58 -58
- package/lib/core/graph/BaseExplicitGraph.js +157 -157
- package/lib/core/graph/BaseImplicitGraph.d.ts +77 -77
- package/lib/core/graph/BaseImplicitGraph.js +78 -78
- package/lib/core/graph/BasicBlock.d.ts +104 -104
- package/lib/core/graph/BasicBlock.js +280 -280
- package/lib/core/graph/Cfg.d.ts +59 -59
- package/lib/core/graph/Cfg.js +282 -282
- package/lib/core/graph/DependsGraph.d.ts +35 -35
- package/lib/core/graph/DependsGraph.js +87 -87
- package/lib/core/graph/DominanceFinder.d.ts +15 -15
- package/lib/core/graph/DominanceFinder.js +121 -121
- package/lib/core/graph/DominanceTree.d.ts +12 -12
- package/lib/core/graph/DominanceTree.js +70 -70
- package/lib/core/graph/GraphTraits.d.ts +7 -7
- package/lib/core/graph/GraphTraits.js +16 -16
- package/lib/core/graph/Scc.d.ts +61 -61
- package/lib/core/graph/Scc.js +222 -222
- package/lib/core/graph/ViewTree.d.ts +114 -114
- package/lib/core/graph/ViewTree.js +16 -16
- package/lib/core/graph/builder/CfgBuilder.d.ts +176 -176
- package/lib/core/graph/builder/CfgBuilder.js +1139 -1139
- package/lib/core/graph/builder/ConditionBuilder.d.ts +15 -15
- package/lib/core/graph/builder/ConditionBuilder.js +252 -252
- package/lib/core/graph/builder/LoopBuilder.d.ts +20 -20
- package/lib/core/graph/builder/LoopBuilder.js +251 -251
- package/lib/core/graph/builder/SwitchBuilder.d.ts +11 -11
- package/lib/core/graph/builder/SwitchBuilder.js +152 -152
- package/lib/core/graph/builder/TrapBuilder.d.ts +16 -16
- package/lib/core/graph/builder/TrapBuilder.js +272 -272
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts +203 -203
- package/lib/core/graph/builder/ViewTreeBuilder.js +1055 -1055
- package/lib/core/model/ArkBaseModel.d.ts +59 -59
- package/lib/core/model/ArkBaseModel.js +274 -274
- package/lib/core/model/ArkBody.d.ts +24 -24
- package/lib/core/model/ArkBody.js +65 -65
- package/lib/core/model/ArkClass.d.ts +206 -206
- package/lib/core/model/ArkClass.js +439 -439
- package/lib/core/model/ArkExport.d.ts +72 -72
- package/lib/core/model/ArkExport.js +147 -147
- package/lib/core/model/ArkField.d.ts +62 -62
- package/lib/core/model/ArkField.js +113 -113
- package/lib/core/model/ArkFile.d.ts +131 -131
- package/lib/core/model/ArkFile.js +267 -267
- package/lib/core/model/ArkImport.d.ts +44 -44
- package/lib/core/model/ArkImport.js +108 -108
- package/lib/core/model/ArkMetadata.d.ts +31 -31
- package/lib/core/model/ArkMetadata.js +55 -55
- package/lib/core/model/ArkMethod.d.ts +261 -261
- package/lib/core/model/ArkMethod.js +592 -592
- package/lib/core/model/ArkNamespace.d.ts +66 -66
- package/lib/core/model/ArkNamespace.js +209 -209
- package/lib/core/model/ArkSignature.d.ts +162 -162
- package/lib/core/model/ArkSignature.js +379 -379
- package/lib/core/model/builder/ArkClassBuilder.d.ts +12 -12
- package/lib/core/model/builder/ArkClassBuilder.js +454 -454
- package/lib/core/model/builder/ArkExportBuilder.d.ts +24 -24
- package/lib/core/model/builder/ArkExportBuilder.js +210 -210
- package/lib/core/model/builder/ArkFieldBuilder.d.ts +8 -8
- package/lib/core/model/builder/ArkFieldBuilder.js +193 -193
- package/lib/core/model/builder/ArkFileBuilder.d.ts +9 -9
- package/lib/core/model/builder/ArkFileBuilder.js +165 -165
- package/lib/core/model/builder/ArkImportBuilder.d.ts +4 -4
- package/lib/core/model/builder/ArkImportBuilder.js +128 -128
- package/lib/core/model/builder/ArkMethodBuilder.d.ts +63 -63
- package/lib/core/model/builder/ArkMethodBuilder.js +486 -486
- package/lib/core/model/builder/ArkNamespaceBuilder.d.ts +5 -5
- package/lib/core/model/builder/ArkNamespaceBuilder.js +205 -205
- package/lib/core/model/builder/ArkSignatureBuilder.d.ts +8 -8
- package/lib/core/model/builder/ArkSignatureBuilder.js +40 -40
- package/lib/core/model/builder/BodyBuilder.d.ts +55 -30
- package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/BodyBuilder.js +542 -371
- package/lib/core/model/builder/builderUtils.d.ts +18 -18
- package/lib/core/model/builder/builderUtils.js +558 -558
- package/lib/index.d.ts +82 -80
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +201 -196
- package/lib/save/ArkStream.d.ts +23 -23
- package/lib/save/ArkStream.js +83 -83
- package/lib/save/DotPrinter.d.ts +43 -43
- package/lib/save/DotPrinter.js +170 -170
- package/lib/save/GraphPrinter.d.ts +16 -16
- package/lib/save/GraphPrinter.js +134 -134
- package/lib/save/JsonPrinter.d.ts +30 -30
- package/lib/save/JsonPrinter.js +580 -580
- package/lib/save/Printer.d.ts +12 -12
- package/lib/save/Printer.js +27 -27
- package/lib/save/PrinterBuilder.d.ts +53 -53
- package/lib/save/PrinterBuilder.js +145 -145
- package/lib/save/ViewTreePrinter.d.ts +14 -14
- package/lib/save/ViewTreePrinter.js +123 -123
- package/lib/save/arkir/ArkIRClassPrinter.d.ts +13 -13
- package/lib/save/arkir/ArkIRClassPrinter.js +92 -92
- package/lib/save/arkir/ArkIRFieldPrinter.d.ts +11 -11
- package/lib/save/arkir/ArkIRFieldPrinter.js +64 -64
- package/lib/save/arkir/ArkIRFilePrinter.d.ts +12 -12
- package/lib/save/arkir/ArkIRFilePrinter.js +54 -54
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts +16 -16
- package/lib/save/arkir/ArkIRMethodPrinter.js +159 -159
- package/lib/save/arkir/ArkIRNamespacePrinter.d.ts +11 -11
- package/lib/save/arkir/ArkIRNamespacePrinter.js +66 -66
- package/lib/save/base/BasePrinter.d.ts +23 -23
- package/lib/save/base/BasePrinter.js +70 -70
- package/lib/save/base/ExportPrinter.d.ts +8 -8
- package/lib/save/base/ExportPrinter.js +67 -67
- package/lib/save/base/ImportPrinter.d.ts +9 -9
- package/lib/save/base/ImportPrinter.js +92 -92
- package/lib/save/base/PrinterUtils.d.ts +24 -24
- package/lib/save/base/PrinterUtils.js +208 -208
- package/lib/save/serializeArkIR.d.ts +8 -8
- package/lib/save/serializeArkIR.js +294 -294
- package/lib/save/source/SourceBase.d.ts +22 -22
- package/lib/save/source/SourceBase.js +64 -64
- package/lib/save/source/SourceBody.d.ts +58 -58
- package/lib/save/source/SourceBody.js +296 -296
- package/lib/save/source/SourceClass.d.ts +25 -25
- package/lib/save/source/SourceClass.js +187 -187
- package/lib/save/source/SourceField.d.ts +13 -13
- package/lib/save/source/SourceField.js +73 -73
- package/lib/save/source/SourceFilePrinter.d.ts +12 -12
- package/lib/save/source/SourceFilePrinter.js +69 -69
- package/lib/save/source/SourceMethod.d.ts +22 -22
- package/lib/save/source/SourceMethod.d.ts.map +1 -1
- package/lib/save/source/SourceMethod.js +196 -193
- package/lib/save/source/SourceNamespace.d.ts +11 -11
- package/lib/save/source/SourceNamespace.js +83 -83
- package/lib/save/source/SourceStmt.d.ts +178 -178
- package/lib/save/source/SourceStmt.js +838 -838
- package/lib/save/source/SourceTransformer.d.ts +46 -46
- package/lib/save/source/SourceTransformer.js +446 -446
- package/lib/transformer/FunctionTransformer.d.ts +2 -2
- package/lib/transformer/FunctionTransformer.js +17 -17
- package/lib/transformer/SceneTransformer.d.ts +2 -2
- package/lib/transformer/SceneTransformer.js +17 -17
- package/lib/transformer/StaticSingleAssignmentFormer.d.ts +12 -12
- package/lib/transformer/StaticSingleAssignmentFormer.js +259 -259
- package/lib/transformer/Transformer.d.ts +6 -6
- package/lib/transformer/Transformer.js +22 -22
- package/lib/utils/AstTreeUtils.d.ts +4 -4
- package/lib/utils/AstTreeUtils.js +26 -26
- package/lib/utils/CfgStructualAnalysis.d.ts +110 -110
- package/lib/utils/CfgStructualAnalysis.js +1277 -1277
- package/lib/utils/FileUtils.d.ts +18 -18
- package/lib/utils/FileUtils.js +135 -135
- package/lib/utils/SparseBitVector.d.ts +100 -100
- package/lib/utils/SparseBitVector.js +445 -445
- package/lib/utils/callGraphUtils.d.ts +30 -30
- package/lib/utils/callGraphUtils.js +205 -205
- package/lib/utils/crypto_utils.d.ts +5 -5
- package/lib/utils/crypto_utils.js +57 -57
- package/lib/utils/entryMethodUtils.d.ts +13 -13
- package/lib/utils/entryMethodUtils.js +110 -110
- package/lib/utils/getAllFiles.d.ts +9 -9
- package/lib/utils/getAllFiles.js +90 -90
- package/lib/utils/json5parser.d.ts +6 -6
- package/lib/utils/json5parser.js +146 -146
- package/lib/utils/logger.d.ts +18 -18
- package/lib/utils/logger.d.ts.map +1 -1
- package/lib/utils/logger.js +97 -90
- package/lib/utils/pathTransfer.d.ts +1 -1
- package/lib/utils/pathTransfer.js +25 -25
- package/node_modules/json5/lib/cli.js +0 -0
- package/node_modules/ohos-typescript/bin/tsc +0 -0
- package/node_modules/ohos-typescript/bin/tsserver +0 -0
- package/package.json +3 -3
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
import { Constant } from '../base/Constant';
|
|
2
|
-
import { Decorator } from '../base/Decorator';
|
|
3
|
-
import { ArkInstanceFieldRef } from '../base/Ref';
|
|
4
|
-
import { Stmt } from '../base/Stmt';
|
|
5
|
-
import { Type } from '../base/Type';
|
|
6
|
-
import { ArkField } from '../model/ArkField';
|
|
7
|
-
import { ArkMethod } from '../model/ArkMethod';
|
|
8
|
-
import { ClassSignature, MethodSignature } from '../model/ArkSignature';
|
|
9
|
-
/**
|
|
10
|
-
* @category core/graph
|
|
11
|
-
*/
|
|
12
|
-
export interface ViewTreeNode {
|
|
13
|
-
/** Component node name */
|
|
14
|
-
name: string;
|
|
15
|
-
/** @deprecated Use {@link attributes} instead. */
|
|
16
|
-
stmts: Map<string, [Stmt, (Constant | ArkInstanceFieldRef | MethodSignature)[]]>;
|
|
17
|
-
/** Component attribute stmts, key is attribute name, value is [Stmt, [Uses Values]]. */
|
|
18
|
-
attributes: Map<string, [Stmt, (Constant | ArkInstanceFieldRef | MethodSignature)[]]>;
|
|
19
|
-
/** Used state values. */
|
|
20
|
-
stateValues: Set<ArkField>;
|
|
21
|
-
/** Node's parent, CustomComponent and root node no parent. */
|
|
22
|
-
parent: ViewTreeNode | null;
|
|
23
|
-
/** Node's children. */
|
|
24
|
-
children: ViewTreeNode[];
|
|
25
|
-
/** @deprecated Use {@link signature} instead. */
|
|
26
|
-
classSignature?: ClassSignature | MethodSignature;
|
|
27
|
-
/** CustomComponent class signature or Builder method signature. */
|
|
28
|
-
signature?: ClassSignature | MethodSignature;
|
|
29
|
-
/**
|
|
30
|
-
* Custom component value transfer
|
|
31
|
-
* - key: ArkField, child custom component class stateValue field.
|
|
32
|
-
* - value: ArkField | ArkMethod, parent component transfer value.
|
|
33
|
-
* key is BuilderParam, the value is Builder ArkMethod.
|
|
34
|
-
* Others, the value is parent class stateValue field.
|
|
35
|
-
*/
|
|
36
|
-
stateValuesTransfer?: Map<ArkField, ArkField | ArkMethod>;
|
|
37
|
-
/** BuilderParam placeholders ArkField. */
|
|
38
|
-
builderParam?: ArkField;
|
|
39
|
-
/** builderParam bind builder method signature. */
|
|
40
|
-
builder?: MethodSignature;
|
|
41
|
-
/**
|
|
42
|
-
* walk node and node's children
|
|
43
|
-
* @param selector Node selector function, return true skipping the follow-up nodes.
|
|
44
|
-
* @returns
|
|
45
|
-
* - true: There are nodes that meet the selector.
|
|
46
|
-
* - false: does not exist.
|
|
47
|
-
*/
|
|
48
|
-
walk(selector: (item: ViewTreeNode) => boolean): boolean;
|
|
49
|
-
/**
|
|
50
|
-
* Whether the node type is Builder.
|
|
51
|
-
* @returns true: node is Builder, false others.
|
|
52
|
-
*/
|
|
53
|
-
isBuilder(): boolean;
|
|
54
|
-
/**
|
|
55
|
-
* Whether the node type is custom component.
|
|
56
|
-
* @returns true: node is custom component, false others.
|
|
57
|
-
*/
|
|
58
|
-
isCustomComponent(): boolean;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* ArkUI Component Tree
|
|
62
|
-
* @example
|
|
63
|
-
* // Component Class get ViewTree
|
|
64
|
-
* let arkClas: ArkClass = ...;
|
|
65
|
-
* let viewtree = arkClas.getViewTree();
|
|
66
|
-
*
|
|
67
|
-
* // get viewtree root node
|
|
68
|
-
* let root: ViewTreeNode = viewtree.getRoot();
|
|
69
|
-
*
|
|
70
|
-
* // get viewtree stateValues Map
|
|
71
|
-
* let stateValues: Map<ArkField, Set<ViewTreeNode>> = viewtree.getStateValues();
|
|
72
|
-
*
|
|
73
|
-
* // walk all nodes
|
|
74
|
-
* root.walk((node) => {
|
|
75
|
-
* // check node is builder
|
|
76
|
-
* if (node.isBuilder()) {
|
|
77
|
-
* xx
|
|
78
|
-
* }
|
|
79
|
-
*
|
|
80
|
-
* // check node is sub CustomComponent
|
|
81
|
-
* if (node.isCustomComponent()) {
|
|
82
|
-
* xx
|
|
83
|
-
* }
|
|
84
|
-
*
|
|
85
|
-
* if (xxx) {
|
|
86
|
-
* // Skip the remaining nodes and end the traversal
|
|
87
|
-
* return true;
|
|
88
|
-
* }
|
|
89
|
-
*
|
|
90
|
-
* return false;
|
|
91
|
-
* })
|
|
92
|
-
*
|
|
93
|
-
* @category core/graph
|
|
94
|
-
*/
|
|
95
|
-
export interface ViewTree {
|
|
96
|
-
/**
|
|
97
|
-
* @deprecated Use {@link getStateValues} instead.
|
|
98
|
-
*/
|
|
99
|
-
isClassField(name: string): boolean;
|
|
100
|
-
/**
|
|
101
|
-
* @deprecated Use {@link getStateValues} instead.
|
|
102
|
-
*/
|
|
103
|
-
getClassFieldType(name: string): Decorator | Type | undefined;
|
|
104
|
-
/**
|
|
105
|
-
* Map of the component controlled by the state variable
|
|
106
|
-
* @returns
|
|
107
|
-
*/
|
|
108
|
-
getStateValues(): Map<ArkField, Set<ViewTreeNode>>;
|
|
109
|
-
/**
|
|
110
|
-
* ViewTree root node.
|
|
111
|
-
* @returns root node
|
|
112
|
-
*/
|
|
113
|
-
getRoot(): ViewTreeNode | null;
|
|
114
|
-
}
|
|
1
|
+
import { Constant } from '../base/Constant';
|
|
2
|
+
import { Decorator } from '../base/Decorator';
|
|
3
|
+
import { ArkInstanceFieldRef } from '../base/Ref';
|
|
4
|
+
import { Stmt } from '../base/Stmt';
|
|
5
|
+
import { Type } from '../base/Type';
|
|
6
|
+
import { ArkField } from '../model/ArkField';
|
|
7
|
+
import { ArkMethod } from '../model/ArkMethod';
|
|
8
|
+
import { ClassSignature, MethodSignature } from '../model/ArkSignature';
|
|
9
|
+
/**
|
|
10
|
+
* @category core/graph
|
|
11
|
+
*/
|
|
12
|
+
export interface ViewTreeNode {
|
|
13
|
+
/** Component node name */
|
|
14
|
+
name: string;
|
|
15
|
+
/** @deprecated Use {@link attributes} instead. */
|
|
16
|
+
stmts: Map<string, [Stmt, (Constant | ArkInstanceFieldRef | MethodSignature)[]]>;
|
|
17
|
+
/** Component attribute stmts, key is attribute name, value is [Stmt, [Uses Values]]. */
|
|
18
|
+
attributes: Map<string, [Stmt, (Constant | ArkInstanceFieldRef | MethodSignature)[]]>;
|
|
19
|
+
/** Used state values. */
|
|
20
|
+
stateValues: Set<ArkField>;
|
|
21
|
+
/** Node's parent, CustomComponent and root node no parent. */
|
|
22
|
+
parent: ViewTreeNode | null;
|
|
23
|
+
/** Node's children. */
|
|
24
|
+
children: ViewTreeNode[];
|
|
25
|
+
/** @deprecated Use {@link signature} instead. */
|
|
26
|
+
classSignature?: ClassSignature | MethodSignature;
|
|
27
|
+
/** CustomComponent class signature or Builder method signature. */
|
|
28
|
+
signature?: ClassSignature | MethodSignature;
|
|
29
|
+
/**
|
|
30
|
+
* Custom component value transfer
|
|
31
|
+
* - key: ArkField, child custom component class stateValue field.
|
|
32
|
+
* - value: ArkField | ArkMethod, parent component transfer value.
|
|
33
|
+
* key is BuilderParam, the value is Builder ArkMethod.
|
|
34
|
+
* Others, the value is parent class stateValue field.
|
|
35
|
+
*/
|
|
36
|
+
stateValuesTransfer?: Map<ArkField, ArkField | ArkMethod>;
|
|
37
|
+
/** BuilderParam placeholders ArkField. */
|
|
38
|
+
builderParam?: ArkField;
|
|
39
|
+
/** builderParam bind builder method signature. */
|
|
40
|
+
builder?: MethodSignature;
|
|
41
|
+
/**
|
|
42
|
+
* walk node and node's children
|
|
43
|
+
* @param selector Node selector function, return true skipping the follow-up nodes.
|
|
44
|
+
* @returns
|
|
45
|
+
* - true: There are nodes that meet the selector.
|
|
46
|
+
* - false: does not exist.
|
|
47
|
+
*/
|
|
48
|
+
walk(selector: (item: ViewTreeNode) => boolean): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Whether the node type is Builder.
|
|
51
|
+
* @returns true: node is Builder, false others.
|
|
52
|
+
*/
|
|
53
|
+
isBuilder(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Whether the node type is custom component.
|
|
56
|
+
* @returns true: node is custom component, false others.
|
|
57
|
+
*/
|
|
58
|
+
isCustomComponent(): boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* ArkUI Component Tree
|
|
62
|
+
* @example
|
|
63
|
+
* // Component Class get ViewTree
|
|
64
|
+
* let arkClas: ArkClass = ...;
|
|
65
|
+
* let viewtree = arkClas.getViewTree();
|
|
66
|
+
*
|
|
67
|
+
* // get viewtree root node
|
|
68
|
+
* let root: ViewTreeNode = viewtree.getRoot();
|
|
69
|
+
*
|
|
70
|
+
* // get viewtree stateValues Map
|
|
71
|
+
* let stateValues: Map<ArkField, Set<ViewTreeNode>> = viewtree.getStateValues();
|
|
72
|
+
*
|
|
73
|
+
* // walk all nodes
|
|
74
|
+
* root.walk((node) => {
|
|
75
|
+
* // check node is builder
|
|
76
|
+
* if (node.isBuilder()) {
|
|
77
|
+
* xx
|
|
78
|
+
* }
|
|
79
|
+
*
|
|
80
|
+
* // check node is sub CustomComponent
|
|
81
|
+
* if (node.isCustomComponent()) {
|
|
82
|
+
* xx
|
|
83
|
+
* }
|
|
84
|
+
*
|
|
85
|
+
* if (xxx) {
|
|
86
|
+
* // Skip the remaining nodes and end the traversal
|
|
87
|
+
* return true;
|
|
88
|
+
* }
|
|
89
|
+
*
|
|
90
|
+
* return false;
|
|
91
|
+
* })
|
|
92
|
+
*
|
|
93
|
+
* @category core/graph
|
|
94
|
+
*/
|
|
95
|
+
export interface ViewTree {
|
|
96
|
+
/**
|
|
97
|
+
* @deprecated Use {@link getStateValues} instead.
|
|
98
|
+
*/
|
|
99
|
+
isClassField(name: string): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* @deprecated Use {@link getStateValues} instead.
|
|
102
|
+
*/
|
|
103
|
+
getClassFieldType(name: string): Decorator | Type | undefined;
|
|
104
|
+
/**
|
|
105
|
+
* Map of the component controlled by the state variable
|
|
106
|
+
* @returns
|
|
107
|
+
*/
|
|
108
|
+
getStateValues(): Map<ArkField, Set<ViewTreeNode>>;
|
|
109
|
+
/**
|
|
110
|
+
* ViewTree root node.
|
|
111
|
+
* @returns root node
|
|
112
|
+
*/
|
|
113
|
+
getRoot(): ViewTreeNode | null;
|
|
114
|
+
}
|
|
115
115
|
//# sourceMappingURL=ViewTree.d.ts.map
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,177 +1,177 @@
|
|
|
1
|
-
import * as ts from 'ohos-typescript';
|
|
2
|
-
import { Local } from '../../base/Local';
|
|
3
|
-
import { ArkAliasTypeDefineStmt } from '../../base/Stmt';
|
|
4
|
-
import { Cfg } from '../Cfg';
|
|
5
|
-
import { ArkClass } from '../../model/ArkClass';
|
|
6
|
-
import { ArkMethod } from '../../model/ArkMethod';
|
|
7
|
-
import { AliasType } from '../../base/Type';
|
|
8
|
-
import { Trap } from '../../base/Trap';
|
|
9
|
-
import { GlobalRef } from '../../base/Ref';
|
|
10
|
-
declare class StatementBuilder {
|
|
11
|
-
type: string;
|
|
12
|
-
code: string;
|
|
13
|
-
next: StatementBuilder | null;
|
|
14
|
-
lasts: Set<StatementBuilder>;
|
|
15
|
-
walked: boolean;
|
|
16
|
-
index: number;
|
|
17
|
-
line: number;
|
|
18
|
-
column: number;
|
|
19
|
-
astNode: ts.Node | null;
|
|
20
|
-
scopeID: number;
|
|
21
|
-
addressCode3: string[];
|
|
22
|
-
block: BlockBuilder | null;
|
|
23
|
-
ifExitPass: boolean;
|
|
24
|
-
passTmies: number;
|
|
25
|
-
numOfIdentifier: number;
|
|
26
|
-
isDoWhile: boolean;
|
|
27
|
-
constructor(type: string, code: string, astNode: ts.Node | null, scopeID: number);
|
|
28
|
-
}
|
|
29
|
-
declare class ConditionStatementBuilder extends StatementBuilder {
|
|
30
|
-
nextT: StatementBuilder | null;
|
|
31
|
-
nextF: StatementBuilder | null;
|
|
32
|
-
loopBlock: BlockBuilder | null;
|
|
33
|
-
condition: string;
|
|
34
|
-
doStatement: StatementBuilder | null;
|
|
35
|
-
constructor(type: string, code: string, astNode: ts.Node, scopeID: number);
|
|
36
|
-
}
|
|
37
|
-
export declare class SwitchStatementBuilder extends StatementBuilder {
|
|
38
|
-
nexts: StatementBuilder[];
|
|
39
|
-
cases: Case[];
|
|
40
|
-
default: StatementBuilder | null;
|
|
41
|
-
afterSwitch: StatementBuilder | null;
|
|
42
|
-
constructor(type: string, code: string, astNode: ts.Node, scopeID: number);
|
|
43
|
-
}
|
|
44
|
-
export declare class TryStatementBuilder extends StatementBuilder {
|
|
45
|
-
tryFirst: StatementBuilder | null;
|
|
46
|
-
tryExit: StatementBuilder | null;
|
|
47
|
-
catchStatement: StatementBuilder | null;
|
|
48
|
-
catchError: string;
|
|
49
|
-
finallyStatement: StatementBuilder | null;
|
|
50
|
-
afterFinal: StatementBuilder | null;
|
|
51
|
-
constructor(type: string, code: string, astNode: ts.Node, scopeID: number);
|
|
52
|
-
}
|
|
53
|
-
declare class Case {
|
|
54
|
-
value: string;
|
|
55
|
-
stmt: StatementBuilder;
|
|
56
|
-
valueNode: ts.Node;
|
|
57
|
-
constructor(value: string, stmt: StatementBuilder);
|
|
58
|
-
}
|
|
59
|
-
declare class DefUseChain {
|
|
60
|
-
def: StatementBuilder;
|
|
61
|
-
use: StatementBuilder;
|
|
62
|
-
constructor(def: StatementBuilder, use: StatementBuilder);
|
|
63
|
-
}
|
|
64
|
-
declare class Variable {
|
|
65
|
-
name: string;
|
|
66
|
-
lastDef: StatementBuilder;
|
|
67
|
-
defUse: DefUseChain[];
|
|
68
|
-
properties: Variable[];
|
|
69
|
-
propOf: Variable | null;
|
|
70
|
-
constructor(name: string, lastDef: StatementBuilder);
|
|
71
|
-
}
|
|
72
|
-
declare class Scope {
|
|
73
|
-
id: number;
|
|
74
|
-
constructor(id: number);
|
|
75
|
-
}
|
|
76
|
-
export declare class BlockBuilder {
|
|
77
|
-
id: number;
|
|
78
|
-
stmts: StatementBuilder[];
|
|
79
|
-
nexts: BlockBuilder[];
|
|
80
|
-
lasts: BlockBuilder[];
|
|
81
|
-
walked: boolean;
|
|
82
|
-
constructor(id: number, stmts: StatementBuilder[]);
|
|
83
|
-
}
|
|
84
|
-
declare class Catch {
|
|
85
|
-
errorName: string;
|
|
86
|
-
from: number;
|
|
87
|
-
to: number;
|
|
88
|
-
withLabel: number;
|
|
89
|
-
constructor(errorName: string, from: number, to: number, withLabel: number);
|
|
90
|
-
}
|
|
91
|
-
export declare class CfgBuilder {
|
|
92
|
-
name: string;
|
|
93
|
-
astRoot: ts.Node;
|
|
94
|
-
entry: StatementBuilder;
|
|
95
|
-
exit: StatementBuilder;
|
|
96
|
-
loopStack: ConditionStatementBuilder[];
|
|
97
|
-
switchExitStack: StatementBuilder[];
|
|
98
|
-
functions: CfgBuilder[];
|
|
99
|
-
breakin: string;
|
|
100
|
-
statementArray: StatementBuilder[];
|
|
101
|
-
dotEdges: number[][];
|
|
102
|
-
scopes: Scope[];
|
|
103
|
-
tempVariableNum: number;
|
|
104
|
-
current3ACstm: StatementBuilder;
|
|
105
|
-
blocks: BlockBuilder[];
|
|
106
|
-
currentDeclarationKeyword: string;
|
|
107
|
-
variables: Variable[];
|
|
108
|
-
declaringClass: ArkClass;
|
|
109
|
-
importFromPath: string[];
|
|
110
|
-
catches: Catch[];
|
|
111
|
-
exits: StatementBuilder[];
|
|
112
|
-
emptyBody: boolean;
|
|
113
|
-
arrowFunctionWithoutBlock: boolean;
|
|
114
|
-
private sourceFile;
|
|
115
|
-
private declaringMethod;
|
|
116
|
-
constructor(ast: ts.Node, name: string, declaringMethod: ArkMethod, sourceFile: ts.SourceFile);
|
|
117
|
-
getDeclaringMethod(): ArkMethod;
|
|
118
|
-
judgeLastType(s: StatementBuilder, lastStatement: StatementBuilder): void;
|
|
119
|
-
ASTNodeBreakStatement(c: ts.Node, lastStatement: StatementBuilder): void;
|
|
120
|
-
ASTNodeIfStatement(c: ts.IfStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
121
|
-
ASTNodeWhileStatement(c: ts.WhileStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
122
|
-
ASTNodeForStatement(c: ts.ForInOrOfStatement | ts.ForStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
123
|
-
ASTNodeDoStatement(c: ts.DoStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
124
|
-
ASTNodeSwitchStatement(c: ts.SwitchStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
125
|
-
ASTNodeTryStatement(c: ts.TryStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
126
|
-
walkAST(lastStatement: StatementBuilder, nextStatement: StatementBuilder, nodes: ts.Node[]): void;
|
|
127
|
-
addReturnInEmptyMethod(): void;
|
|
128
|
-
deleteExitAfterCondition(last: ConditionStatementBuilder, exit: StatementBuilder): void;
|
|
129
|
-
deleteExitAfterSwitch(last: SwitchStatementBuilder, exit: StatementBuilder): void;
|
|
130
|
-
deleteExit(): void;
|
|
131
|
-
addStmt2BlockStmtQueueInSpecialCase(stmt: StatementBuilder, stmtQueue: StatementBuilder[]): StatementBuilder | null;
|
|
132
|
-
addStmt2BlockStmtQueue(stmt: StatementBuilder, stmtQueue: StatementBuilder[]): StatementBuilder | null;
|
|
133
|
-
buildBlocks(): void;
|
|
134
|
-
buildConditionNextBlocks(originStatement: ConditionStatementBuilder, block: BlockBuilder, isLastStatement: boolean): void;
|
|
135
|
-
buildSwitchNextBlocks(originStatement: SwitchStatementBuilder, block: BlockBuilder, isLastStatement: boolean): void;
|
|
136
|
-
buildNormalNextBlocks(originStatement: StatementBuilder, block: BlockBuilder, isLastStatement: boolean): void;
|
|
137
|
-
buildBlocksNextLast(): void;
|
|
138
|
-
addReturnBlock(returnStatement: StatementBuilder, notReturnStmts: StatementBuilder[]): void;
|
|
139
|
-
addReturnStmt(): void;
|
|
140
|
-
resetWalked(): void;
|
|
141
|
-
addStmtBuilderPosition(): void;
|
|
142
|
-
CfgBuilder2Array(stmt: StatementBuilder): void;
|
|
143
|
-
getDotEdges(stmt: StatementBuilder): void;
|
|
144
|
-
errorTest(stmt: StatementBuilder): void;
|
|
145
|
-
buildStatementBuilder4ArrowFunction(stmt: ts.Node): void;
|
|
146
|
-
buildCfgBuilder(): void;
|
|
147
|
-
private handleBuilder;
|
|
148
|
-
isBodyEmpty(): boolean;
|
|
149
|
-
buildCfg(): {
|
|
150
|
-
cfg: Cfg;
|
|
151
|
-
locals: Set<Local>;
|
|
152
|
-
globals: Map<string, GlobalRef> | null;
|
|
153
|
-
aliasTypeMap: Map<string, [AliasType, ArkAliasTypeDefineStmt]>;
|
|
154
|
-
traps: Trap[];
|
|
155
|
-
};
|
|
156
|
-
buildCfgForSimpleArrowFunction(): {
|
|
157
|
-
cfg: Cfg;
|
|
158
|
-
locals: Set<Local>;
|
|
159
|
-
globals: Map<string, GlobalRef> | null;
|
|
160
|
-
aliasTypeMap: Map<string, [AliasType, ArkAliasTypeDefineStmt]>;
|
|
161
|
-
traps: Trap[];
|
|
162
|
-
};
|
|
163
|
-
buildNormalCfg(): {
|
|
164
|
-
cfg: Cfg;
|
|
165
|
-
locals: Set<Local>;
|
|
166
|
-
globals: Map<string, GlobalRef> | null;
|
|
167
|
-
aliasTypeMap: Map<string, [AliasType, ArkAliasTypeDefineStmt]>;
|
|
168
|
-
traps: Trap[];
|
|
169
|
-
};
|
|
170
|
-
private initializeBuild;
|
|
171
|
-
private processBlocks;
|
|
172
|
-
private adjustBlocks;
|
|
173
|
-
private createCfg;
|
|
174
|
-
private linkBasicBlocks;
|
|
175
|
-
}
|
|
176
|
-
export {};
|
|
1
|
+
import * as ts from 'ohos-typescript';
|
|
2
|
+
import { Local } from '../../base/Local';
|
|
3
|
+
import { ArkAliasTypeDefineStmt } from '../../base/Stmt';
|
|
4
|
+
import { Cfg } from '../Cfg';
|
|
5
|
+
import { ArkClass } from '../../model/ArkClass';
|
|
6
|
+
import { ArkMethod } from '../../model/ArkMethod';
|
|
7
|
+
import { AliasType } from '../../base/Type';
|
|
8
|
+
import { Trap } from '../../base/Trap';
|
|
9
|
+
import { GlobalRef } from '../../base/Ref';
|
|
10
|
+
declare class StatementBuilder {
|
|
11
|
+
type: string;
|
|
12
|
+
code: string;
|
|
13
|
+
next: StatementBuilder | null;
|
|
14
|
+
lasts: Set<StatementBuilder>;
|
|
15
|
+
walked: boolean;
|
|
16
|
+
index: number;
|
|
17
|
+
line: number;
|
|
18
|
+
column: number;
|
|
19
|
+
astNode: ts.Node | null;
|
|
20
|
+
scopeID: number;
|
|
21
|
+
addressCode3: string[];
|
|
22
|
+
block: BlockBuilder | null;
|
|
23
|
+
ifExitPass: boolean;
|
|
24
|
+
passTmies: number;
|
|
25
|
+
numOfIdentifier: number;
|
|
26
|
+
isDoWhile: boolean;
|
|
27
|
+
constructor(type: string, code: string, astNode: ts.Node | null, scopeID: number);
|
|
28
|
+
}
|
|
29
|
+
declare class ConditionStatementBuilder extends StatementBuilder {
|
|
30
|
+
nextT: StatementBuilder | null;
|
|
31
|
+
nextF: StatementBuilder | null;
|
|
32
|
+
loopBlock: BlockBuilder | null;
|
|
33
|
+
condition: string;
|
|
34
|
+
doStatement: StatementBuilder | null;
|
|
35
|
+
constructor(type: string, code: string, astNode: ts.Node, scopeID: number);
|
|
36
|
+
}
|
|
37
|
+
export declare class SwitchStatementBuilder extends StatementBuilder {
|
|
38
|
+
nexts: StatementBuilder[];
|
|
39
|
+
cases: Case[];
|
|
40
|
+
default: StatementBuilder | null;
|
|
41
|
+
afterSwitch: StatementBuilder | null;
|
|
42
|
+
constructor(type: string, code: string, astNode: ts.Node, scopeID: number);
|
|
43
|
+
}
|
|
44
|
+
export declare class TryStatementBuilder extends StatementBuilder {
|
|
45
|
+
tryFirst: StatementBuilder | null;
|
|
46
|
+
tryExit: StatementBuilder | null;
|
|
47
|
+
catchStatement: StatementBuilder | null;
|
|
48
|
+
catchError: string;
|
|
49
|
+
finallyStatement: StatementBuilder | null;
|
|
50
|
+
afterFinal: StatementBuilder | null;
|
|
51
|
+
constructor(type: string, code: string, astNode: ts.Node, scopeID: number);
|
|
52
|
+
}
|
|
53
|
+
declare class Case {
|
|
54
|
+
value: string;
|
|
55
|
+
stmt: StatementBuilder;
|
|
56
|
+
valueNode: ts.Node;
|
|
57
|
+
constructor(value: string, stmt: StatementBuilder);
|
|
58
|
+
}
|
|
59
|
+
declare class DefUseChain {
|
|
60
|
+
def: StatementBuilder;
|
|
61
|
+
use: StatementBuilder;
|
|
62
|
+
constructor(def: StatementBuilder, use: StatementBuilder);
|
|
63
|
+
}
|
|
64
|
+
declare class Variable {
|
|
65
|
+
name: string;
|
|
66
|
+
lastDef: StatementBuilder;
|
|
67
|
+
defUse: DefUseChain[];
|
|
68
|
+
properties: Variable[];
|
|
69
|
+
propOf: Variable | null;
|
|
70
|
+
constructor(name: string, lastDef: StatementBuilder);
|
|
71
|
+
}
|
|
72
|
+
declare class Scope {
|
|
73
|
+
id: number;
|
|
74
|
+
constructor(id: number);
|
|
75
|
+
}
|
|
76
|
+
export declare class BlockBuilder {
|
|
77
|
+
id: number;
|
|
78
|
+
stmts: StatementBuilder[];
|
|
79
|
+
nexts: BlockBuilder[];
|
|
80
|
+
lasts: BlockBuilder[];
|
|
81
|
+
walked: boolean;
|
|
82
|
+
constructor(id: number, stmts: StatementBuilder[]);
|
|
83
|
+
}
|
|
84
|
+
declare class Catch {
|
|
85
|
+
errorName: string;
|
|
86
|
+
from: number;
|
|
87
|
+
to: number;
|
|
88
|
+
withLabel: number;
|
|
89
|
+
constructor(errorName: string, from: number, to: number, withLabel: number);
|
|
90
|
+
}
|
|
91
|
+
export declare class CfgBuilder {
|
|
92
|
+
name: string;
|
|
93
|
+
astRoot: ts.Node;
|
|
94
|
+
entry: StatementBuilder;
|
|
95
|
+
exit: StatementBuilder;
|
|
96
|
+
loopStack: ConditionStatementBuilder[];
|
|
97
|
+
switchExitStack: StatementBuilder[];
|
|
98
|
+
functions: CfgBuilder[];
|
|
99
|
+
breakin: string;
|
|
100
|
+
statementArray: StatementBuilder[];
|
|
101
|
+
dotEdges: number[][];
|
|
102
|
+
scopes: Scope[];
|
|
103
|
+
tempVariableNum: number;
|
|
104
|
+
current3ACstm: StatementBuilder;
|
|
105
|
+
blocks: BlockBuilder[];
|
|
106
|
+
currentDeclarationKeyword: string;
|
|
107
|
+
variables: Variable[];
|
|
108
|
+
declaringClass: ArkClass;
|
|
109
|
+
importFromPath: string[];
|
|
110
|
+
catches: Catch[];
|
|
111
|
+
exits: StatementBuilder[];
|
|
112
|
+
emptyBody: boolean;
|
|
113
|
+
arrowFunctionWithoutBlock: boolean;
|
|
114
|
+
private sourceFile;
|
|
115
|
+
private declaringMethod;
|
|
116
|
+
constructor(ast: ts.Node, name: string, declaringMethod: ArkMethod, sourceFile: ts.SourceFile);
|
|
117
|
+
getDeclaringMethod(): ArkMethod;
|
|
118
|
+
judgeLastType(s: StatementBuilder, lastStatement: StatementBuilder): void;
|
|
119
|
+
ASTNodeBreakStatement(c: ts.Node, lastStatement: StatementBuilder): void;
|
|
120
|
+
ASTNodeIfStatement(c: ts.IfStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
121
|
+
ASTNodeWhileStatement(c: ts.WhileStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
122
|
+
ASTNodeForStatement(c: ts.ForInOrOfStatement | ts.ForStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
123
|
+
ASTNodeDoStatement(c: ts.DoStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
124
|
+
ASTNodeSwitchStatement(c: ts.SwitchStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
125
|
+
ASTNodeTryStatement(c: ts.TryStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
126
|
+
walkAST(lastStatement: StatementBuilder, nextStatement: StatementBuilder, nodes: ts.Node[]): void;
|
|
127
|
+
addReturnInEmptyMethod(): void;
|
|
128
|
+
deleteExitAfterCondition(last: ConditionStatementBuilder, exit: StatementBuilder): void;
|
|
129
|
+
deleteExitAfterSwitch(last: SwitchStatementBuilder, exit: StatementBuilder): void;
|
|
130
|
+
deleteExit(): void;
|
|
131
|
+
addStmt2BlockStmtQueueInSpecialCase(stmt: StatementBuilder, stmtQueue: StatementBuilder[]): StatementBuilder | null;
|
|
132
|
+
addStmt2BlockStmtQueue(stmt: StatementBuilder, stmtQueue: StatementBuilder[]): StatementBuilder | null;
|
|
133
|
+
buildBlocks(): void;
|
|
134
|
+
buildConditionNextBlocks(originStatement: ConditionStatementBuilder, block: BlockBuilder, isLastStatement: boolean): void;
|
|
135
|
+
buildSwitchNextBlocks(originStatement: SwitchStatementBuilder, block: BlockBuilder, isLastStatement: boolean): void;
|
|
136
|
+
buildNormalNextBlocks(originStatement: StatementBuilder, block: BlockBuilder, isLastStatement: boolean): void;
|
|
137
|
+
buildBlocksNextLast(): void;
|
|
138
|
+
addReturnBlock(returnStatement: StatementBuilder, notReturnStmts: StatementBuilder[]): void;
|
|
139
|
+
addReturnStmt(): void;
|
|
140
|
+
resetWalked(): void;
|
|
141
|
+
addStmtBuilderPosition(): void;
|
|
142
|
+
CfgBuilder2Array(stmt: StatementBuilder): void;
|
|
143
|
+
getDotEdges(stmt: StatementBuilder): void;
|
|
144
|
+
errorTest(stmt: StatementBuilder): void;
|
|
145
|
+
buildStatementBuilder4ArrowFunction(stmt: ts.Node): void;
|
|
146
|
+
buildCfgBuilder(): void;
|
|
147
|
+
private handleBuilder;
|
|
148
|
+
isBodyEmpty(): boolean;
|
|
149
|
+
buildCfg(): {
|
|
150
|
+
cfg: Cfg;
|
|
151
|
+
locals: Set<Local>;
|
|
152
|
+
globals: Map<string, GlobalRef> | null;
|
|
153
|
+
aliasTypeMap: Map<string, [AliasType, ArkAliasTypeDefineStmt]>;
|
|
154
|
+
traps: Trap[];
|
|
155
|
+
};
|
|
156
|
+
buildCfgForSimpleArrowFunction(): {
|
|
157
|
+
cfg: Cfg;
|
|
158
|
+
locals: Set<Local>;
|
|
159
|
+
globals: Map<string, GlobalRef> | null;
|
|
160
|
+
aliasTypeMap: Map<string, [AliasType, ArkAliasTypeDefineStmt]>;
|
|
161
|
+
traps: Trap[];
|
|
162
|
+
};
|
|
163
|
+
buildNormalCfg(): {
|
|
164
|
+
cfg: Cfg;
|
|
165
|
+
locals: Set<Local>;
|
|
166
|
+
globals: Map<string, GlobalRef> | null;
|
|
167
|
+
aliasTypeMap: Map<string, [AliasType, ArkAliasTypeDefineStmt]>;
|
|
168
|
+
traps: Trap[];
|
|
169
|
+
};
|
|
170
|
+
private initializeBuild;
|
|
171
|
+
private processBlocks;
|
|
172
|
+
private adjustBlocks;
|
|
173
|
+
private createCfg;
|
|
174
|
+
private linkBasicBlocks;
|
|
175
|
+
}
|
|
176
|
+
export {};
|
|
177
177
|
//# sourceMappingURL=CfgBuilder.d.ts.map
|