arkanalyzer 1.0.17 → 1.0.18
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/core/base/Decorator.d.ts +1 -0
- package/lib/core/base/Decorator.d.ts.map +1 -1
- package/lib/core/base/Decorator.js +4 -1
- package/lib/core/base/Type.d.ts +45 -3
- package/lib/core/base/Type.d.ts.map +1 -1
- package/lib/core/base/Type.js +84 -4
- package/lib/core/common/ArkIRTransformer.d.ts +1 -0
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +42 -23
- package/lib/core/common/ArkValueTransformer.d.ts +1 -0
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +45 -10
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +6 -0
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +5 -1
- package/lib/core/common/TypeInference.d.ts +1 -0
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +27 -8
- package/lib/core/{common → graph/builder}/CfgBuilder.d.ts +34 -46
- package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/CfgBuilder.js +1139 -0
- package/lib/core/graph/builder/ConditionBuilder.d.ts +16 -0
- package/lib/core/graph/builder/ConditionBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/ConditionBuilder.js +252 -0
- package/lib/core/graph/builder/LoopBuilder.d.ts +21 -0
- package/lib/core/graph/builder/LoopBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/LoopBuilder.js +251 -0
- package/lib/core/graph/builder/SwitchBuilder.d.ts +12 -0
- package/lib/core/graph/builder/SwitchBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/SwitchBuilder.js +152 -0
- package/lib/core/graph/builder/TrapBuilder.d.ts +17 -0
- package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/TrapBuilder.js +272 -0
- package/lib/core/model/ArkMethod.d.ts +1 -1
- package/lib/core/model/ArkMethod.js +1 -1
- package/lib/core/model/ArkSignature.d.ts +9 -1
- package/lib/core/model/ArkSignature.d.ts.map +1 -1
- package/lib/core/model/ArkSignature.js +17 -1
- package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkClassBuilder.js +2 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +1 -1
- package/lib/core/{common → model/builder}/BodyBuilder.d.ts +5 -5
- package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -0
- package/lib/core/{common → model/builder}/BodyBuilder.js +12 -12
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +31 -5
- package/lib/save/JsonPrinter.d.ts +1 -1
- package/lib/save/JsonPrinter.d.ts.map +1 -1
- package/lib/save/JsonPrinter.js +2 -2
- package/lib/save/PrinterBuilder.d.ts +22 -0
- package/lib/save/PrinterBuilder.d.ts.map +1 -1
- package/lib/save/PrinterBuilder.js +54 -1
- package/lib/save/arkir/ArkIRClassPrinter.d.ts +14 -0
- package/lib/save/arkir/ArkIRClassPrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRClassPrinter.js +92 -0
- package/lib/save/arkir/ArkIRFieldPrinter.d.ts +12 -0
- package/lib/save/arkir/ArkIRFieldPrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRFieldPrinter.js +64 -0
- package/lib/save/arkir/ArkIRFilePrinter.d.ts +13 -0
- package/lib/save/arkir/ArkIRFilePrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRFilePrinter.js +54 -0
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts +17 -0
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRMethodPrinter.js +159 -0
- package/lib/save/arkir/ArkIRNamespacePrinter.d.ts +12 -0
- package/lib/save/arkir/ArkIRNamespacePrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRNamespacePrinter.js +66 -0
- package/lib/save/base/BasePrinter.d.ts +24 -0
- package/lib/save/base/BasePrinter.d.ts.map +1 -0
- package/lib/save/base/BasePrinter.js +70 -0
- package/lib/save/base/ExportPrinter.d.ts +9 -0
- package/lib/save/base/ExportPrinter.d.ts.map +1 -0
- package/lib/save/base/ExportPrinter.js +67 -0
- package/lib/save/base/ImportPrinter.d.ts +10 -0
- package/lib/save/base/ImportPrinter.d.ts.map +1 -0
- package/lib/save/base/ImportPrinter.js +92 -0
- package/lib/save/{source/SourceUtils.d.ts → base/PrinterUtils.d.ts} +2 -2
- package/lib/save/{source/SourceUtils.d.ts.map → base/PrinterUtils.d.ts.map} +1 -1
- package/lib/save/{source/SourceUtils.js → base/PrinterUtils.js} +10 -10
- package/lib/save/source/SourceBase.d.ts +2 -11
- package/lib/save/source/SourceBase.d.ts.map +1 -1
- package/lib/save/source/SourceBase.js +3 -25
- package/lib/save/source/SourceBody.js +3 -3
- package/lib/save/source/SourceClass.d.ts +2 -1
- package/lib/save/source/SourceClass.d.ts.map +1 -1
- package/lib/save/source/SourceClass.js +18 -17
- package/lib/save/source/SourceFilePrinter.d.ts +1 -1
- package/lib/save/source/SourceFilePrinter.d.ts.map +1 -1
- package/lib/save/source/SourceFilePrinter.js +9 -10
- package/lib/save/source/SourceMethod.d.ts +1 -1
- package/lib/save/source/SourceMethod.d.ts.map +1 -1
- package/lib/save/source/SourceMethod.js +37 -22
- package/lib/save/source/SourceNamespace.d.ts.map +1 -1
- package/lib/save/source/SourceNamespace.js +6 -6
- 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 +29 -42
- package/lib/save/source/SourceTransformer.d.ts +3 -1
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +65 -29
- package/package.json +1 -1
- package/lib/core/common/BodyBuilder.d.ts.map +0 -1
- package/lib/core/common/CfgBuilder.d.ts.map +0 -1
- package/lib/core/common/CfgBuilder.js +0 -1886
- package/lib/save/source/SourceModule.d.ts +0 -16
- package/lib/save/source/SourceModule.d.ts.map +0 -1
- package/lib/save/source/SourceModule.js +0 -125
|
@@ -112,7 +112,7 @@ class TypeInference {
|
|
|
112
112
|
leftOpType.getClassSignature().getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME) {
|
|
113
113
|
type = TypeInference.inferUnclearRefName(leftOpType.getClassSignature().getClassName(), declaringArkClass);
|
|
114
114
|
}
|
|
115
|
-
else if (leftOpType instanceof Type_1.UnionType) {
|
|
115
|
+
else if (leftOpType instanceof Type_1.UnionType || leftOpType instanceof Type_1.IntersectionType || leftOpType instanceof Type_1.TupleType) {
|
|
116
116
|
let types = leftOpType.getTypes();
|
|
117
117
|
for (let i = 0; i < types.length; i++) {
|
|
118
118
|
let newType = this.inferUnclearedType(types[i], declaringArkClass);
|
|
@@ -315,6 +315,7 @@ class TypeInference {
|
|
|
315
315
|
}
|
|
316
316
|
}
|
|
317
317
|
static isUnclearType(type) {
|
|
318
|
+
// TODO: For UnionType, IntersectionType and TupleType, it should recurse check every item of them.
|
|
318
319
|
if (!type || type instanceof Type_1.UnknownType || type instanceof Type_1.UnclearReferenceType
|
|
319
320
|
|| type instanceof Type_1.NullType || type instanceof Type_1.UndefinedType) {
|
|
320
321
|
return true;
|
|
@@ -323,14 +324,30 @@ class TypeInference {
|
|
|
323
324
|
&& type.getClassSignature().getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME) {
|
|
324
325
|
return true;
|
|
325
326
|
}
|
|
326
|
-
else if (type instanceof Type_1.UnionType) {
|
|
327
|
-
return !!type.getTypes().find(t => t
|
|
327
|
+
else if (type instanceof Type_1.UnionType || type instanceof Type_1.IntersectionType || type instanceof Type_1.TupleType) {
|
|
328
|
+
return !!type.getTypes().find(t => this.hasUnclearReferenceType(t));
|
|
328
329
|
}
|
|
329
330
|
else if (type instanceof Type_1.ArrayType) {
|
|
330
|
-
return (type.getBaseType()
|
|
331
|
+
return this.hasUnclearReferenceType(type.getBaseType());
|
|
331
332
|
}
|
|
332
333
|
else if (type instanceof Type_1.AliasType) {
|
|
333
|
-
return (type.getOriginalType()
|
|
334
|
+
return this.hasUnclearReferenceType(type.getOriginalType());
|
|
335
|
+
}
|
|
336
|
+
return false;
|
|
337
|
+
}
|
|
338
|
+
// This is the temporally function to check unclearReferenceType recursively and can be removed after typeInfer supports multiple candidate types.
|
|
339
|
+
static hasUnclearReferenceType(type) {
|
|
340
|
+
if (type instanceof Type_1.UnclearReferenceType) {
|
|
341
|
+
return true;
|
|
342
|
+
}
|
|
343
|
+
else if (type instanceof Type_1.UnionType || type instanceof Type_1.IntersectionType || type instanceof Type_1.TupleType) {
|
|
344
|
+
return !!type.getTypes().find(t => this.hasUnclearReferenceType(t));
|
|
345
|
+
}
|
|
346
|
+
else if (type instanceof Type_1.ArrayType) {
|
|
347
|
+
return this.hasUnclearReferenceType(type.getBaseType());
|
|
348
|
+
}
|
|
349
|
+
else if (type instanceof Type_1.AliasType) {
|
|
350
|
+
return this.hasUnclearReferenceType(type.getOriginalType());
|
|
334
351
|
}
|
|
335
352
|
return false;
|
|
336
353
|
}
|
|
@@ -447,9 +464,6 @@ class TypeInference {
|
|
|
447
464
|
return new Type_1.ArrayType((_a = realTypes[0]) !== null && _a !== void 0 ? _a : Type_1.AnyType.getInstance(), 1);
|
|
448
465
|
}
|
|
449
466
|
let type = this.inferUnclearRefName(urType.getName(), arkClass);
|
|
450
|
-
if (type instanceof Type_1.AliasType) {
|
|
451
|
-
return type;
|
|
452
|
-
}
|
|
453
467
|
return type ? this.replaceTypeWithReal(type, realTypes) : null;
|
|
454
468
|
}
|
|
455
469
|
/**
|
|
@@ -629,6 +643,11 @@ class TypeInference {
|
|
|
629
643
|
type.flatType().forEach(t => types.push(this.replaceTypeWithReal(t, realTypes)));
|
|
630
644
|
return new Type_1.UnionType(types, this.replaceTypeWithReal(type.getCurrType(), realTypes));
|
|
631
645
|
}
|
|
646
|
+
else if (type instanceof Type_1.IntersectionType && realTypes) {
|
|
647
|
+
const types = [];
|
|
648
|
+
type.getTypes().forEach(t => types.push(this.replaceTypeWithReal(t, realTypes)));
|
|
649
|
+
return new Type_1.IntersectionType(types);
|
|
650
|
+
}
|
|
632
651
|
else if (type instanceof Type_1.ArrayType && realTypes) {
|
|
633
652
|
const replacedBaseType = this.replaceTypeWithReal(type.getBaseType(), realTypes);
|
|
634
653
|
return new Type_1.ArrayType(replacedBaseType, type.getDimension());
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as ts from 'ohos-typescript';
|
|
2
|
-
import { Local } from '
|
|
3
|
-
import { ArkAliasTypeDefineStmt } from '
|
|
4
|
-
import { Cfg } from '../
|
|
5
|
-
import { ArkClass } from '
|
|
6
|
-
import { ArkMethod } from '
|
|
7
|
-
import { AliasType } from '
|
|
8
|
-
import { Trap } from '
|
|
9
|
-
import { GlobalRef } from '
|
|
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
10
|
declare class StatementBuilder {
|
|
11
11
|
type: string;
|
|
12
12
|
code: string;
|
|
@@ -19,7 +19,7 @@ declare class StatementBuilder {
|
|
|
19
19
|
astNode: ts.Node | null;
|
|
20
20
|
scopeID: number;
|
|
21
21
|
addressCode3: string[];
|
|
22
|
-
block:
|
|
22
|
+
block: BlockBuilder | null;
|
|
23
23
|
ifExitPass: boolean;
|
|
24
24
|
passTmies: number;
|
|
25
25
|
numOfIdentifier: number;
|
|
@@ -29,18 +29,27 @@ declare class StatementBuilder {
|
|
|
29
29
|
declare class ConditionStatementBuilder extends StatementBuilder {
|
|
30
30
|
nextT: StatementBuilder | null;
|
|
31
31
|
nextF: StatementBuilder | null;
|
|
32
|
-
loopBlock:
|
|
32
|
+
loopBlock: BlockBuilder | null;
|
|
33
33
|
condition: string;
|
|
34
34
|
doStatement: StatementBuilder | null;
|
|
35
35
|
constructor(type: string, code: string, astNode: ts.Node, scopeID: number);
|
|
36
36
|
}
|
|
37
|
-
declare class SwitchStatementBuilder extends StatementBuilder {
|
|
37
|
+
export declare class SwitchStatementBuilder extends StatementBuilder {
|
|
38
38
|
nexts: StatementBuilder[];
|
|
39
39
|
cases: Case[];
|
|
40
40
|
default: StatementBuilder | null;
|
|
41
41
|
afterSwitch: StatementBuilder | null;
|
|
42
42
|
constructor(type: string, code: string, astNode: ts.Node, scopeID: number);
|
|
43
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
|
+
}
|
|
44
53
|
declare class Case {
|
|
45
54
|
value: string;
|
|
46
55
|
stmt: StatementBuilder;
|
|
@@ -64,11 +73,11 @@ declare class Scope {
|
|
|
64
73
|
id: number;
|
|
65
74
|
constructor(id: number);
|
|
66
75
|
}
|
|
67
|
-
declare class
|
|
76
|
+
export declare class BlockBuilder {
|
|
68
77
|
id: number;
|
|
69
78
|
stmts: StatementBuilder[];
|
|
70
|
-
nexts:
|
|
71
|
-
lasts:
|
|
79
|
+
nexts: BlockBuilder[];
|
|
80
|
+
lasts: BlockBuilder[];
|
|
72
81
|
walked: boolean;
|
|
73
82
|
constructor(id: number, stmts: StatementBuilder[]);
|
|
74
83
|
}
|
|
@@ -93,7 +102,7 @@ export declare class CfgBuilder {
|
|
|
93
102
|
scopes: Scope[];
|
|
94
103
|
tempVariableNum: number;
|
|
95
104
|
current3ACstm: StatementBuilder;
|
|
96
|
-
blocks:
|
|
105
|
+
blocks: BlockBuilder[];
|
|
97
106
|
currentDeclarationKeyword: string;
|
|
98
107
|
variables: Variable[];
|
|
99
108
|
declaringClass: ArkClass;
|
|
@@ -122,9 +131,9 @@ export declare class CfgBuilder {
|
|
|
122
131
|
addStmt2BlockStmtQueueInSpecialCase(stmt: StatementBuilder, stmtQueue: StatementBuilder[]): StatementBuilder | null;
|
|
123
132
|
addStmt2BlockStmtQueue(stmt: StatementBuilder, stmtQueue: StatementBuilder[]): StatementBuilder | null;
|
|
124
133
|
buildBlocks(): void;
|
|
125
|
-
buildConditionNextBlocks(originStatement: ConditionStatementBuilder, block:
|
|
126
|
-
buildSwitchNextBlocks(originStatement: SwitchStatementBuilder, block:
|
|
127
|
-
buildNormalNextBlocks(originStatement: StatementBuilder, block:
|
|
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;
|
|
128
137
|
buildBlocksNextLast(): void;
|
|
129
138
|
addReturnBlock(returnStatement: StatementBuilder, notReturnStmts: StatementBuilder[]): void;
|
|
130
139
|
addReturnStmt(): void;
|
|
@@ -133,57 +142,36 @@ export declare class CfgBuilder {
|
|
|
133
142
|
CfgBuilder2Array(stmt: StatementBuilder): void;
|
|
134
143
|
getDotEdges(stmt: StatementBuilder): void;
|
|
135
144
|
errorTest(stmt: StatementBuilder): void;
|
|
136
|
-
printBlocks(): string;
|
|
137
145
|
buildStatementBuilder4ArrowFunction(stmt: ts.Node): void;
|
|
138
146
|
buildCfgBuilder(): void;
|
|
139
147
|
private handleBuilder;
|
|
140
148
|
isBodyEmpty(): boolean;
|
|
141
|
-
|
|
149
|
+
buildCfg(): {
|
|
142
150
|
cfg: Cfg;
|
|
143
151
|
locals: Set<Local>;
|
|
144
152
|
globals: Map<string, GlobalRef> | null;
|
|
145
153
|
aliasTypeMap: Map<string, [AliasType, ArkAliasTypeDefineStmt]>;
|
|
146
154
|
traps: Trap[];
|
|
147
155
|
};
|
|
148
|
-
|
|
156
|
+
buildCfgForSimpleArrowFunction(): {
|
|
149
157
|
cfg: Cfg;
|
|
150
158
|
locals: Set<Local>;
|
|
151
159
|
globals: Map<string, GlobalRef> | null;
|
|
152
160
|
aliasTypeMap: Map<string, [AliasType, ArkAliasTypeDefineStmt]>;
|
|
153
161
|
traps: Trap[];
|
|
154
162
|
};
|
|
155
|
-
|
|
163
|
+
buildNormalCfg(): {
|
|
156
164
|
cfg: Cfg;
|
|
157
165
|
locals: Set<Local>;
|
|
158
166
|
globals: Map<string, GlobalRef> | null;
|
|
159
167
|
aliasTypeMap: Map<string, [AliasType, ArkAliasTypeDefineStmt]>;
|
|
160
168
|
traps: Trap[];
|
|
161
169
|
};
|
|
170
|
+
private initializeBuild;
|
|
171
|
+
private processBlocks;
|
|
172
|
+
private adjustBlocks;
|
|
173
|
+
private createCfg;
|
|
162
174
|
private linkBasicBlocks;
|
|
163
|
-
private rebuildBlocksContainConditionalOperator;
|
|
164
|
-
private relinkPrevAndSuccOfBlockContainConditionalOperator;
|
|
165
|
-
private generateBlocksContainConditionalOperatorGroup;
|
|
166
|
-
private generateBlocksContainSingleConditionalOperator;
|
|
167
|
-
private generateBlockWithoutConditionalOperator;
|
|
168
|
-
private deleteDummyConditionalOperatorStmt;
|
|
169
|
-
private findFirstConditionalOperator;
|
|
170
|
-
private removeUnnecessaryBlocksInConditionalOperator;
|
|
171
|
-
private replaceTempRecursively;
|
|
172
|
-
private rebuildBlocksInLoop;
|
|
173
|
-
private doesPrevBlockBuilderContainLoop;
|
|
174
|
-
private insertBeforeConditionBlockBuilder;
|
|
175
|
-
private findIteratorIdx;
|
|
176
|
-
private adjustIncrementorStmts;
|
|
177
|
-
private buildTraps;
|
|
178
|
-
private buildTrapsIfNoFinally;
|
|
179
|
-
private buildTrapsIfFinallyExist;
|
|
180
|
-
private getAllBlocksBFS;
|
|
181
|
-
private copyFinallyBlocks;
|
|
182
|
-
private copyBlocks;
|
|
183
|
-
private copyStmt;
|
|
184
|
-
private buildSwitch;
|
|
185
|
-
private generateIfBlocksForCases;
|
|
186
|
-
private linkIfBlockAndCaseBlock;
|
|
187
175
|
}
|
|
188
176
|
export {};
|
|
189
177
|
//# sourceMappingURL=CfgBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CfgBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/CfgBuilder.ts"],"names":[],"mappings":"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"}
|