arkanalyzer 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/arkanalyzer.json +8 -0
- package/docs/IR2ts-stmt.md +81 -0
- package/docs/IR2ts.md +82 -0
- package/lib/Config.d.ts +29 -1
- package/lib/Config.d.ts.map +1 -1
- package/lib/Config.js +44 -11
- package/lib/Scene.d.ts +152 -9
- package/lib/Scene.d.ts.map +1 -1
- package/lib/Scene.js +233 -66
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +2 -1
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/AbstractAnalysis.js +14 -7
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +2 -4
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +2 -3
- package/lib/callgraph/common/Statistics.js +1 -1
- package/lib/callgraph/model/BaseGraph.js +2 -2
- package/lib/callgraph/model/CallGraph.d.ts +3 -2
- package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
- package/lib/callgraph/model/CallGraph.js +23 -14
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +2 -2
- package/lib/callgraph/model/builder/CallGraphBuilder.js +3 -3
- package/lib/callgraph/pointerAnalysis/Context.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Context.js +0 -1
- package/lib/callgraph/pointerAnalysis/Pag.d.ts +36 -9
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +130 -37
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +34 -5
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +479 -126
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +6 -0
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +107 -45
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PtsDS.js +0 -2
- package/lib/core/base/Constant.d.ts +37 -5
- package/lib/core/base/Constant.d.ts.map +1 -1
- package/lib/core/base/Constant.js +58 -8
- package/lib/core/base/Expr.d.ts +98 -13
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +295 -127
- package/lib/core/base/Local.d.ts +70 -5
- package/lib/core/base/Local.d.ts.map +1 -1
- package/lib/core/base/Local.js +77 -4
- package/lib/core/base/Ref.d.ts +79 -5
- package/lib/core/base/Ref.d.ts.map +1 -1
- package/lib/core/base/Ref.js +143 -38
- package/lib/core/base/Stmt.d.ts +126 -12
- package/lib/core/base/Stmt.d.ts.map +1 -1
- package/lib/core/base/Stmt.js +135 -28
- package/lib/core/base/Type.d.ts +11 -2
- package/lib/core/base/Type.d.ts.map +1 -1
- package/lib/core/base/Type.js +47 -42
- package/lib/core/base/Value.d.ts +24 -2
- package/lib/core/base/Value.d.ts.map +1 -1
- package/lib/core/common/ArkError.d.ts +15 -0
- package/lib/core/common/ArkError.d.ts.map +1 -0
- package/lib/core/common/ArkError.js +28 -0
- package/lib/core/common/ArkIRTransformer.d.ts +12 -5
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +90 -45
- package/lib/core/common/BodyBuilder.d.ts +2 -0
- package/lib/core/common/BodyBuilder.d.ts.map +1 -1
- package/lib/core/common/BodyBuilder.js +5 -2
- package/lib/core/common/Builtin.js +1 -1
- package/lib/core/common/CfgBuilder.d.ts +12 -7
- package/lib/core/common/CfgBuilder.d.ts.map +1 -1
- package/lib/core/common/CfgBuilder.js +336 -140
- package/lib/core/common/Const.d.ts +15 -10
- package/lib/core/common/Const.d.ts.map +1 -1
- package/lib/core/common/Const.js +18 -11
- package/lib/core/common/DummyMainCreater.d.ts +5 -4
- package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
- package/lib/core/common/DummyMainCreater.js +43 -28
- package/lib/core/common/EtsConst.d.ts +1 -0
- package/lib/core/common/EtsConst.d.ts.map +1 -1
- package/lib/core/common/EtsConst.js +2 -1
- package/lib/core/common/ExprUseReplacer.js +8 -8
- package/lib/core/common/IRUtils.d.ts +7 -0
- package/lib/core/common/IRUtils.d.ts.map +1 -1
- package/lib/core/common/IRUtils.js +34 -2
- package/lib/core/common/ModelUtils.d.ts +1 -0
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +39 -36
- package/lib/core/common/RefUseReplacer.js +3 -3
- package/lib/core/common/StmtUseReplacer.js +4 -4
- package/lib/core/common/TSConst.d.ts +10 -3
- package/lib/core/common/TSConst.d.ts.map +1 -1
- package/lib/core/common/TSConst.js +11 -4
- package/lib/core/common/TypeInference.d.ts +8 -2
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +222 -90
- package/lib/core/common/ValueUtil.d.ts +0 -4
- package/lib/core/common/ValueUtil.d.ts.map +1 -1
- package/lib/core/common/ValueUtil.js +10 -27
- package/lib/core/common/VisibleValue.js +1 -1
- package/lib/core/dataflow/DataflowProblem.d.ts +1 -0
- package/lib/core/dataflow/DataflowProblem.d.ts.map +1 -1
- package/lib/core/dataflow/DataflowProblem.js +4 -4
- package/lib/core/dataflow/DataflowSolver.d.ts +20 -16
- package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -1
- package/lib/core/dataflow/DataflowSolver.js +67 -78
- package/lib/core/dataflow/TiantAnalysis.d.ts +1 -0
- package/lib/core/dataflow/TiantAnalysis.d.ts.map +1 -1
- package/lib/core/dataflow/TiantAnalysis.js +42 -28
- package/lib/core/dataflow/UndefinedVariable.d.ts +15 -1
- package/lib/core/dataflow/UndefinedVariable.d.ts.map +1 -1
- package/lib/core/dataflow/UndefinedVariable.js +122 -76
- package/lib/core/dataflow/Util.d.ts +5 -1
- package/lib/core/dataflow/Util.d.ts.map +1 -1
- package/lib/core/dataflow/Util.js +43 -22
- package/lib/core/graph/BasicBlock.d.ts +72 -0
- package/lib/core/graph/BasicBlock.d.ts.map +1 -1
- package/lib/core/graph/BasicBlock.js +165 -3
- package/lib/core/graph/Cfg.d.ts +30 -1
- package/lib/core/graph/Cfg.d.ts.map +1 -1
- package/lib/core/graph/Cfg.js +131 -11
- package/lib/core/graph/DominanceFinder.js +7 -7
- package/lib/core/graph/DominanceTree.js +4 -4
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/ViewTreeBuilder.js +6 -5
- package/lib/core/model/ArkBaseModel.d.ts +59 -0
- package/lib/core/model/ArkBaseModel.d.ts.map +1 -0
- package/lib/core/model/ArkBaseModel.js +271 -0
- package/lib/core/model/ArkBody.d.ts +3 -9
- package/lib/core/model/ArkBody.d.ts.map +1 -1
- package/lib/core/model/ArkBody.js +3 -14
- package/lib/core/model/ArkClass.d.ts +107 -13
- package/lib/core/model/ArkClass.d.ts.map +1 -1
- package/lib/core/model/ArkClass.js +152 -54
- package/lib/core/model/ArkExport.d.ts +8 -7
- package/lib/core/model/ArkExport.d.ts.map +1 -1
- package/lib/core/model/ArkExport.js +16 -18
- package/lib/core/model/ArkField.d.ts +16 -13
- package/lib/core/model/ArkField.d.ts.map +1 -1
- package/lib/core/model/ArkField.js +18 -62
- package/lib/core/model/ArkFile.d.ts +42 -0
- package/lib/core/model/ArkFile.d.ts.map +1 -1
- package/lib/core/model/ArkFile.js +58 -0
- package/lib/core/model/ArkImport.d.ts +9 -7
- package/lib/core/model/ArkImport.d.ts.map +1 -1
- package/lib/core/model/ArkImport.js +11 -12
- package/lib/core/model/ArkMetadata.d.ts +20 -0
- package/lib/core/model/ArkMetadata.d.ts.map +1 -0
- package/lib/core/model/ArkMetadata.js +44 -0
- package/lib/core/model/ArkMethod.d.ts +195 -17
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +363 -46
- package/lib/core/model/ArkNamespace.d.ts +6 -8
- package/lib/core/model/ArkNamespace.d.ts.map +1 -1
- package/lib/core/model/ArkNamespace.js +16 -20
- package/lib/core/model/ArkSignature.d.ts +41 -0
- package/lib/core/model/ArkSignature.d.ts.map +1 -1
- package/lib/core/model/ArkSignature.js +76 -19
- package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkClassBuilder.js +60 -49
- package/lib/core/model/builder/ArkExportBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkExportBuilder.js +12 -6
- package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkFieldBuilder.js +13 -9
- package/lib/core/model/builder/ArkFileBuilder.js +1 -3
- package/lib/core/model/builder/ArkImportBuilder.d.ts +2 -1
- package/lib/core/model/builder/ArkImportBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkImportBuilder.js +16 -13
- package/lib/core/model/builder/ArkMethodBuilder.d.ts +3 -1
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +105 -45
- package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkNamespaceBuilder.js +4 -5
- package/lib/core/model/builder/builderUtils.d.ts +2 -1
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +63 -43
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -3
- package/lib/save/ArkStream.js +1 -1
- package/lib/save/DotPrinter.d.ts.map +1 -1
- package/lib/save/DotPrinter.js +1 -15
- package/lib/save/GraphPrinter.d.ts.map +1 -1
- package/lib/save/GraphPrinter.js +4 -2
- package/lib/save/JsonPrinter.js +5 -5
- package/lib/save/ViewTreePrinter.d.ts +16 -0
- package/lib/save/ViewTreePrinter.d.ts.map +1 -0
- package/lib/save/ViewTreePrinter.js +130 -0
- package/lib/save/source/SourceBase.d.ts +2 -2
- package/lib/save/source/SourceBase.d.ts.map +1 -1
- package/lib/save/source/SourceBase.js +6 -13
- package/lib/save/source/SourceBody.d.ts.map +1 -1
- package/lib/save/source/SourceBody.js +27 -14
- package/lib/save/source/SourceClass.d.ts.map +1 -1
- package/lib/save/source/SourceClass.js +12 -8
- package/lib/save/source/SourceField.d.ts.map +1 -1
- package/lib/save/source/SourceField.js +6 -2
- package/lib/save/source/SourceMethod.d.ts.map +1 -1
- package/lib/save/source/SourceMethod.js +10 -3
- package/lib/save/source/SourceModule.d.ts.map +1 -1
- package/lib/save/source/SourceModule.js +16 -10
- package/lib/save/source/SourceNamespace.d.ts.map +1 -1
- package/lib/save/source/SourceNamespace.js +4 -0
- package/lib/save/source/SourceStmt.d.ts +1 -1
- package/lib/save/source/SourceStmt.d.ts.map +1 -1
- package/lib/save/source/SourceStmt.js +37 -25
- package/lib/save/source/SourceTransformer.d.ts +6 -0
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +82 -51
- package/lib/save/source/SourceUtils.d.ts.map +1 -1
- package/lib/save/source/SourceUtils.js +12 -11
- package/lib/transformer/StaticSingleAssignmentFormer.js +3 -3
- package/lib/utils/CfgStructualAnalysis.d.ts +1 -0
- package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -1
- package/lib/utils/CfgStructualAnalysis.js +103 -72
- package/lib/utils/callGraphUtils.d.ts.map +1 -1
- package/lib/utils/callGraphUtils.js +7 -10
- package/lib/utils/crypto_utils.d.ts +6 -0
- package/lib/utils/crypto_utils.d.ts.map +1 -0
- package/lib/utils/crypto_utils.js +57 -0
- package/lib/utils/entryMethodUtils.d.ts.map +1 -1
- package/lib/utils/entryMethodUtils.js +27 -26
- package/lib/utils/getAllFiles.d.ts +1 -1
- package/lib/utils/getAllFiles.d.ts.map +1 -1
- package/lib/utils/getAllFiles.js +4 -5
- package/lib/utils/logger.js +2 -2
- package/package.json +3 -2
package/lib/core/base/Expr.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { BasicBlock } from '../graph/BasicBlock';
|
|
2
|
-
import { ArkClass } from '../model/ArkClass';
|
|
3
2
|
import { MethodSignature } from '../model/ArkSignature';
|
|
4
3
|
import { Local } from './Local';
|
|
5
4
|
import { ArrayType, ClassType, Type } from './Type';
|
|
6
5
|
import { Value } from './Value';
|
|
7
6
|
import { AbstractFieldRef } from './Ref';
|
|
7
|
+
import { Scene } from '../../Scene';
|
|
8
|
+
import { ArkMethod } from '../model/ArkMethod';
|
|
8
9
|
/**
|
|
9
10
|
* @category core/base/expr
|
|
10
11
|
*/
|
|
@@ -12,38 +13,93 @@ export declare abstract class AbstractExpr implements Value {
|
|
|
12
13
|
abstract getUses(): Value[];
|
|
13
14
|
abstract getType(): Type;
|
|
14
15
|
abstract toString(): string;
|
|
15
|
-
inferType(
|
|
16
|
+
inferType(arkMethod: ArkMethod): AbstractExpr;
|
|
16
17
|
}
|
|
17
18
|
export declare abstract class AbstractInvokeExpr extends AbstractExpr {
|
|
18
19
|
private methodSignature;
|
|
19
20
|
private args;
|
|
20
21
|
private realGenericTypes?;
|
|
21
22
|
constructor(methodSignature: MethodSignature, args: Value[], realGenericTypes?: Type[]);
|
|
23
|
+
/**
|
|
24
|
+
* Get method Signature. The method signature is consist of ClassSignature and MethodSubSignature.
|
|
25
|
+
* It is the unique flag of a method. It is usually used to compose a expression string in ArkIRTransformer.
|
|
26
|
+
* @returns The class method signature, such as ArkStaticInvokeExpr.
|
|
27
|
+
* @example
|
|
28
|
+
* 1. 3AC information composed of getMethodSignature ().
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
let strs: string[] = [];
|
|
32
|
+
strs.push('staticinvoke <');
|
|
33
|
+
strs.push(this.getMethodSignature().toString());
|
|
34
|
+
strs.push('>(');
|
|
35
|
+
```
|
|
36
|
+
*/
|
|
22
37
|
getMethodSignature(): MethodSignature;
|
|
23
38
|
setMethodSignature(newMethodSignature: MethodSignature): void;
|
|
39
|
+
/**
|
|
40
|
+
* Returns an argument used in the expression according to its index.
|
|
41
|
+
* @param index - the index of the argument.
|
|
42
|
+
* @returns An argument used in the expression.
|
|
43
|
+
*/
|
|
24
44
|
getArg(index: number): Value;
|
|
45
|
+
/**
|
|
46
|
+
* Returns an **array** of arguments used in the expression.
|
|
47
|
+
* @returns An **array** of arguments used in the expression.
|
|
48
|
+
* @example
|
|
49
|
+
* 1. get args number.
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
const argsNum = expr.getArgs().length;
|
|
53
|
+
if (argsNum < 5) {
|
|
54
|
+
... ...
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
2. iterate arg based on expression
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
for (const arg of this.getArgs()) {
|
|
62
|
+
strs.push(arg.toString());
|
|
63
|
+
strs.push(', ');
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
*/
|
|
25
67
|
getArgs(): Value[];
|
|
26
68
|
setArgs(newArgs: Value[]): void;
|
|
69
|
+
inferArgs(arkMethod: ArkMethod): void;
|
|
70
|
+
private inferArg;
|
|
27
71
|
getType(): Type;
|
|
28
72
|
getRealGenericTypes(): Type[] | undefined;
|
|
73
|
+
inferMethod(baseType: Type, methodName: string, scene: Scene): AbstractInvokeExpr | null;
|
|
74
|
+
private processClassMethod;
|
|
29
75
|
getUses(): Value[];
|
|
30
76
|
}
|
|
31
77
|
export declare class ArkInstanceInvokeExpr extends AbstractInvokeExpr {
|
|
32
78
|
private base;
|
|
33
79
|
constructor(base: Local, methodSignature: MethodSignature, args: Value[], realGenericTypes?: Type[]);
|
|
80
|
+
/**
|
|
81
|
+
* Returns the local of the instance of invoke expression.
|
|
82
|
+
* @returns The local of the invoke expression's instance..
|
|
83
|
+
*/
|
|
34
84
|
getBase(): Local;
|
|
35
85
|
setBase(newBase: Local): void;
|
|
86
|
+
/**
|
|
87
|
+
* Returns an **array** of values used in this invoke expression,
|
|
88
|
+
* including all arguments and values each arguments used.
|
|
89
|
+
* For {@link ArkInstanceInvokeExpr}, the return also contains the caller base and uses of base.
|
|
90
|
+
* @returns An **array** of arguments used in the invoke expression.
|
|
91
|
+
*/
|
|
36
92
|
getUses(): Value[];
|
|
37
93
|
toString(): string;
|
|
38
|
-
inferType(
|
|
94
|
+
inferType(arkMethod: ArkMethod): AbstractInvokeExpr;
|
|
39
95
|
private processForEach;
|
|
40
96
|
private tryInferFormGlobal;
|
|
41
|
-
private inferMethod;
|
|
42
97
|
}
|
|
43
98
|
export declare class ArkStaticInvokeExpr extends AbstractInvokeExpr {
|
|
44
99
|
constructor(methodSignature: MethodSignature, args: Value[], realGenericTypes?: Type[]);
|
|
45
100
|
toString(): string;
|
|
46
|
-
inferType(
|
|
101
|
+
inferType(arkMethod: ArkMethod): ArkStaticInvokeExpr;
|
|
102
|
+
private processDynamicImport;
|
|
47
103
|
}
|
|
48
104
|
export declare class ArkPtrInvokeExpr extends AbstractInvokeExpr {
|
|
49
105
|
private funPtrLocal;
|
|
@@ -51,7 +107,7 @@ export declare class ArkPtrInvokeExpr extends AbstractInvokeExpr {
|
|
|
51
107
|
setFunPtrLocal(ptr: Local): void;
|
|
52
108
|
getFuncPtrLocal(): Local;
|
|
53
109
|
toString(): string;
|
|
54
|
-
inferType(
|
|
110
|
+
inferType(arkMethod: ArkMethod): ArkPtrInvokeExpr;
|
|
55
111
|
}
|
|
56
112
|
export declare class ArkNewExpr extends AbstractExpr {
|
|
57
113
|
private classType;
|
|
@@ -60,7 +116,7 @@ export declare class ArkNewExpr extends AbstractExpr {
|
|
|
60
116
|
getUses(): Value[];
|
|
61
117
|
getType(): Type;
|
|
62
118
|
toString(): string;
|
|
63
|
-
inferType(
|
|
119
|
+
inferType(arkMethod: ArkMethod): ArkNewExpr;
|
|
64
120
|
}
|
|
65
121
|
export declare class ArkNewArrayExpr extends AbstractExpr {
|
|
66
122
|
private baseType;
|
|
@@ -73,7 +129,7 @@ export declare class ArkNewArrayExpr extends AbstractExpr {
|
|
|
73
129
|
getBaseType(): Type;
|
|
74
130
|
setBaseType(newType: Type): void;
|
|
75
131
|
isFromLiteral(): boolean;
|
|
76
|
-
inferType(
|
|
132
|
+
inferType(arkMethod: ArkMethod): ArkNewArrayExpr;
|
|
77
133
|
getUses(): Value[];
|
|
78
134
|
toString(): string;
|
|
79
135
|
}
|
|
@@ -92,7 +148,7 @@ export declare class ArkAwaitExpr extends AbstractExpr {
|
|
|
92
148
|
getPromise(): Value;
|
|
93
149
|
setPromise(newPromise: Value): void;
|
|
94
150
|
getType(): Type;
|
|
95
|
-
inferType(
|
|
151
|
+
inferType(arkMethod: ArkMethod): ArkAwaitExpr;
|
|
96
152
|
getUses(): Value[];
|
|
97
153
|
toString(): string;
|
|
98
154
|
}
|
|
@@ -139,21 +195,46 @@ export declare abstract class AbstractBinopExpr extends AbstractExpr {
|
|
|
139
195
|
protected operator: BinaryOperator;
|
|
140
196
|
protected type: Type;
|
|
141
197
|
constructor(op1: Value, op2: Value, operator: BinaryOperator);
|
|
198
|
+
/**
|
|
199
|
+
* Returns the first operand in the binary operation expression.
|
|
200
|
+
* For example, the first operand in `a + b;` is `a`.
|
|
201
|
+
* @returns The first operand in the binary operation expression.
|
|
202
|
+
*/
|
|
142
203
|
getOp1(): Value;
|
|
143
204
|
setOp1(newOp1: Value): void;
|
|
205
|
+
/**
|
|
206
|
+
* Returns the second operand in the binary operation expression.
|
|
207
|
+
* For example, the second operand in `a + b;` is `b`.
|
|
208
|
+
* @returns The second operand in the binary operation expression.
|
|
209
|
+
*/
|
|
144
210
|
getOp2(): Value;
|
|
145
211
|
setOp2(newOp2: Value): void;
|
|
212
|
+
/**
|
|
213
|
+
* Get the binary operator from the statement.
|
|
214
|
+
* The binary operator can be divided into two categories,
|
|
215
|
+
* one is the normal binary operator and the other is relational binary operator.
|
|
216
|
+
* @returns The binary operator from the statement.
|
|
217
|
+
* @example
|
|
218
|
+
```typescript
|
|
219
|
+
if (expr instanceof AbstractBinopExpr) {
|
|
220
|
+
let op1: Value = expr.getOp1();
|
|
221
|
+
let op2: Value = expr.getOp2();
|
|
222
|
+
let operator: string = expr.getOperator();
|
|
223
|
+
... ...
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
*/
|
|
146
227
|
getOperator(): BinaryOperator;
|
|
147
228
|
getType(): Type;
|
|
148
229
|
getUses(): Value[];
|
|
149
230
|
toString(): string;
|
|
150
|
-
protected inferOpType(op: Value,
|
|
231
|
+
protected inferOpType(op: Value, arkMethod: ArkMethod): void;
|
|
151
232
|
protected setType(): void;
|
|
152
|
-
inferType(
|
|
233
|
+
inferType(arkMethod: ArkMethod): AbstractBinopExpr;
|
|
153
234
|
}
|
|
154
235
|
export declare class ArkConditionExpr extends AbstractBinopExpr {
|
|
155
236
|
constructor(op1: Value, op2: Value, operator: RelationalBinaryOperator);
|
|
156
|
-
inferType(
|
|
237
|
+
inferType(arkMethod: ArkMethod): ArkConditionExpr;
|
|
157
238
|
}
|
|
158
239
|
export declare class ArkNormalBinopExpr extends AbstractBinopExpr {
|
|
159
240
|
constructor(op1: Value, op2: Value, operator: NormalBinaryOperator);
|
|
@@ -186,7 +267,7 @@ export declare class ArkCastExpr extends AbstractExpr {
|
|
|
186
267
|
setOp(newOp: Value): void;
|
|
187
268
|
getUses(): Value[];
|
|
188
269
|
getType(): Type;
|
|
189
|
-
inferType(
|
|
270
|
+
inferType(arkMethod: ArkMethod): AbstractExpr;
|
|
190
271
|
toString(): string;
|
|
191
272
|
}
|
|
192
273
|
export declare class ArkPhiExpr extends AbstractExpr {
|
|
@@ -213,6 +294,10 @@ export declare class ArkUnopExpr extends AbstractExpr {
|
|
|
213
294
|
getUses(): Value[];
|
|
214
295
|
getOp(): Value;
|
|
215
296
|
getType(): Type;
|
|
297
|
+
/**
|
|
298
|
+
* Get the unary operator from the statement, such as `-`,`~`,`!`.
|
|
299
|
+
* @returns the unary operator of a statement.
|
|
300
|
+
*/
|
|
216
301
|
getOperator(): UnaryOperator;
|
|
217
302
|
toString(): string;
|
|
218
303
|
}
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"Expr.d.ts","sourceRoot":"","sources":["../../../src/core/base/Expr.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAGH,SAAS,EAET,SAAS,EAMT,IAAI,EAMP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAgC,MAAM,OAAO,CAAC;AAIvE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAY/C;;GAEG;AACH,8BAAsB,YAAa,YAAW,KAAK;IAC/C,QAAQ,CAAC,OAAO,IAAI,KAAK,EAAE;IAE3B,QAAQ,CAAC,OAAO,IAAI,IAAI;IAExB,QAAQ,CAAC,QAAQ,IAAI,MAAM;IAEpB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY;CAGvD;AAED,8BAAsB,kBAAmB,SAAQ,YAAY;IACzD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,gBAAgB,CAAC,CAAS;gBAEtB,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,gBAAgB,CAAC,EAAE,IAAI,EAAE;IAOtF;;;;;;;;;;;;;OAaG;IACI,kBAAkB,IAAI,eAAe;IAIrC,kBAAkB,CAAC,kBAAkB,EAAE,eAAe,GAAG,IAAI;IAIpE;;;;OAIG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK;IAInC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,OAAO,IAAI,KAAK,EAAE;IAIlB,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI;IAI/B,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAyB5C,OAAO,CAAC,QAAQ;IAyBT,OAAO,IAAI,IAAI;IAqBf,mBAAmB,IAAI,IAAI,EAAE,GAAG,SAAS;IAIzC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,kBAAkB,GAAG,IAAI;IAyB/F,OAAO,CAAC,kBAAkB;IA4CnB,OAAO,IAAI,KAAK,EAAE;CAQ5B;AAED,qBAAa,qBAAsB,SAAQ,kBAAkB;IACzD,OAAO,CAAC,IAAI,CAAQ;gBAER,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,gBAAgB,CAAC,EAAE,IAAI,EAAE;IAKnG;;;OAGG;IACI,OAAO,IAAI,KAAK;IAIhB,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI;IAIpC;;;;;OAKG;IACI,OAAO,IAAI,KAAK,EAAE;IAWlB,QAAQ,IAAI,MAAM;IAkBlB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB;IAiD1D,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,kBAAkB;CAa7B;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB;gBAC3C,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,gBAAgB,CAAC,EAAE,IAAI,EAAE;IAI/E,QAAQ,IAAI,MAAM;IAgBlB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,mBAAmB;IA0C3D,OAAO,CAAC,oBAAoB;CAe/B;AAED,qBAAa,gBAAiB,SAAQ,kBAAkB;IACpD,OAAO,CAAC,WAAW,CAAQ;gBAEf,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,gBAAgB,CAAC,EAAE,IAAI,EAAE;IAK3F,cAAc,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAIhC,eAAe,IAAI,KAAK;IAIxB,QAAQ,IAAI,MAAM;IAgBlB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,gBAAgB;CAI3D;AAED,qBAAa,UAAW,SAAQ,YAAY;IACxC,OAAO,CAAC,SAAS,CAAY;gBAEjB,SAAS,EAAE,SAAS;IAKzB,YAAY,IAAI,SAAS;IAIzB,OAAO,IAAI,KAAK,EAAE;IAIlB,OAAO,IAAI,IAAI;IAIf,QAAQ,IAAI,MAAM;IAIlB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU;CAYrD;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC7C,OAAO,CAAC,QAAQ,CAAO;IACvB,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,WAAW,CAAU;gBAEjB,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,GAAE,OAAe;IAO9D,OAAO,IAAI,KAAK;IAIhB,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI;IAI7B,OAAO,IAAI,SAAS;IAIpB,WAAW,IAAI,IAAI;IAInB,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IAIhC,aAAa,IAAI,OAAO;IAIxB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,eAAe;IAQhD,OAAO,IAAI,KAAK,EAAE;IAMlB,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,aAAc,SAAQ,YAAY;IAC3C,OAAO,CAAC,KAAK,CAAmB;gBAEpB,KAAK,EAAE,gBAAgB;IAK5B,QAAQ,IAAI,gBAAgB;IAI5B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI1C,OAAO,IAAI,IAAI;IAIf,OAAO,IAAI,KAAK,EAAE;IAOlB,QAAQ,IAAI,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC1C,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,EAAE,KAAK;IAKnB,UAAU,IAAI,KAAK;IAInB,UAAU,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI;IAInC,OAAO,IAAI,IAAI;IAUf,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY;IAK7C,OAAO,IAAI,KAAK,EAAE;IAOlB,QAAQ,IAAI,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC1C,OAAO,CAAC,UAAU,CAAQ;gBAEd,UAAU,EAAE,KAAK;IAKtB,aAAa,IAAI,KAAK;IAItB,aAAa,CAAC,aAAa,EAAE,KAAK,GAAG,IAAI;IAIzC,OAAO,IAAI,IAAI;IAIf,OAAO,IAAI,KAAK,EAAE;IAOlB,QAAQ,IAAI,MAAM;CAI5B;AAED,oBAAY,oBAAoB;IAE5B,iBAAiB,OAAO;IAGxB,cAAc,OAAO;IACrB,QAAQ,MAAM;IACd,QAAQ,MAAM;IACd,WAAW,MAAM;IACjB,cAAc,MAAM;IACpB,SAAS,MAAM;IAGf,SAAS,OAAO;IAChB,UAAU,OAAO;IACjB,kBAAkB,QAAQ;IAG1B,UAAU,MAAM;IAChB,SAAS,MAAM;IACf,UAAU,MAAM;IAGhB,UAAU,OAAO;IACjB,SAAS,OAAO;CACnB;AAED,oBAAY,wBAAwB;IAChC,QAAQ,MAAM;IACd,eAAe,OAAO;IACtB,WAAW,MAAM;IACjB,kBAAkB,OAAO;IACzB,QAAQ,OAAO;IACf,UAAU,OAAO;IACjB,cAAc,QAAQ;IACtB,gBAAgB,QAAQ;CAC3B;AAED,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,wBAAwB,CAAC;AAG7E,8BAAsB,iBAAkB,SAAQ,YAAY;IACxD,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;IACrB,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;IACrB,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC;IAEnC,SAAS,CAAC,IAAI,EAAG,IAAI,CAAC;gBAEV,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc;IAO5D;;;;OAIG;IACI,MAAM,IAAI,KAAK;IAIf,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI;IAIlC;;;;OAIG;IACI,MAAM,IAAI,KAAK;IAIf,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI;IAIlC;;;;;;;;;;;;;;OAcG;IACI,WAAW,IAAI,cAAc;IAI7B,OAAO,IAAI,IAAI;IAOf,OAAO,IAAI,KAAK,EAAE;IASlB,QAAQ,IAAI,MAAM;IAIzB,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;IAMrD,SAAS,CAAC,OAAO;IA+DV,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,iBAAiB;CAM5D;AAED,qBAAa,gBAAiB,SAAQ,iBAAiB;gBACvC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,wBAAwB;IAI/D,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,gBAAgB;CAiB3D;AAED,qBAAa,kBAAmB,SAAQ,iBAAiB;gBACzC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,oBAAoB;CAGrE;AAED,qBAAa,aAAc,SAAQ,YAAY;IAC3C,OAAO,CAAC,EAAE,CAAQ;gBAEN,EAAE,EAAE,KAAK;IAKd,KAAK,IAAI,KAAK;IAId,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIzB,OAAO,IAAI,KAAK,EAAE;IAOlB,OAAO,IAAI,IAAI;IAIf,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IAC/C,OAAO,CAAC,EAAE,CAAQ;IAClB,OAAO,CAAC,SAAS,CAAO;gBAEZ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI;IAM/B,KAAK,IAAI,KAAK;IAId,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIzB,YAAY,IAAI,IAAI;IAIpB,OAAO,IAAI,IAAI;IAIf,OAAO,IAAI,KAAK,EAAE;IAOlB,QAAQ,IAAI,MAAM;CAG5B;AAGD,qBAAa,WAAY,SAAQ,YAAY;IACzC,OAAO,CAAC,EAAE,CAAQ;IAClB,OAAO,CAAC,IAAI,CAAO;gBAEP,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI;IAM1B,KAAK,IAAI,KAAK;IAId,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIzB,OAAO,IAAI,KAAK,EAAE;IAOlB,OAAO,IAAI,IAAI;IAIf,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY;IAS7C,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,UAAW,SAAQ,YAAY;IACxC,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,UAAU,CAAyB;;IAQpC,OAAO,IAAI,KAAK,EAAE;IAMlB,OAAO,IAAI,KAAK,EAAE;IAIlB,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI;IAI5B,aAAa,IAAI,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC;IAIvC,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,IAAI;IAIvD,OAAO,IAAI,IAAI;IAIf,QAAQ,IAAI,MAAM;CAa5B;AAED,oBAAY,aAAa;IACrB,GAAG,MAAM;IACT,UAAU,MAAM;IAChB,UAAU,MAAM;CACnB;AAGD,qBAAa,WAAY,SAAQ,YAAY;IACzC,OAAO,CAAC,EAAE,CAAQ;IAClB,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa;IAMvC,OAAO,IAAI,KAAK,EAAE;IAOlB,KAAK,IAAI,KAAK;IAId,OAAO,IAAI,IAAI;IAItB;;;OAGG;IACI,WAAW,IAAI,aAAa;IAI5B,QAAQ,IAAI,MAAM;CAG5B"}
|