arkanalyzer 1.0.18 → 1.0.19
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/callgraph/pointerAnalysis/Pag.d.ts +3 -2
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +5 -3
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +4 -4
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +5 -4
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +2 -0
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +11 -9
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +8 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +27 -3
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts +30 -6
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PtsDS.js +86 -5
- package/lib/core/base/Stmt.d.ts +3 -0
- package/lib/core/base/Stmt.d.ts.map +1 -1
- package/lib/core/base/Stmt.js +34 -0
- package/lib/core/base/TypeExpr.d.ts +72 -0
- package/lib/core/base/TypeExpr.d.ts.map +1 -0
- package/lib/core/base/TypeExpr.js +155 -0
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +4 -0
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +23 -8
- package/lib/core/common/IRInference.d.ts +5 -1
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +65 -0
- package/lib/core/common/ModelUtils.d.ts +3 -1
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +18 -0
- package/lib/core/common/TypeInference.d.ts +5 -0
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +56 -7
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +52 -4
- package/lib/save/source/SourceTransformer.d.ts +2 -0
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +43 -5
- package/lib/utils/SparseBitVector.d.ts +11 -2
- package/lib/utils/SparseBitVector.d.ts.map +1 -1
- package/lib/utils/SparseBitVector.js +70 -3
- package/package.json +1 -1
package/lib/core/base/Stmt.js
CHANGED
|
@@ -22,7 +22,9 @@ const Position_1 = require("./Position");
|
|
|
22
22
|
const ArkMetadata_1 = require("../model/ArkMetadata");
|
|
23
23
|
const StmtDefReplacer_1 = require("../common/StmtDefReplacer");
|
|
24
24
|
const IRUtils_1 = require("../common/IRUtils");
|
|
25
|
+
const Type_1 = require("./Type");
|
|
25
26
|
const ArkBaseModel_1 = require("../model/ArkBaseModel");
|
|
27
|
+
const TypeExpr_1 = require("./TypeExpr");
|
|
26
28
|
/**
|
|
27
29
|
* @category core/base/stmt
|
|
28
30
|
*/
|
|
@@ -165,6 +167,16 @@ class Stmt {
|
|
|
165
167
|
}
|
|
166
168
|
return exprs;
|
|
167
169
|
}
|
|
170
|
+
getTypeExprs() {
|
|
171
|
+
let typeExprs = [];
|
|
172
|
+
for (const value of this.getDefAndUses()) {
|
|
173
|
+
const valueType = value.getType();
|
|
174
|
+
if (valueType instanceof TypeExpr_1.AbstractTypeExpr) {
|
|
175
|
+
typeExprs.push(valueType);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return typeExprs;
|
|
179
|
+
}
|
|
168
180
|
containsArrayRef() {
|
|
169
181
|
for (const use of this.getUses()) {
|
|
170
182
|
if (use instanceof Ref_1.ArkArrayRef) {
|
|
@@ -487,5 +499,27 @@ class ArkAliasTypeDefineStmt extends Stmt {
|
|
|
487
499
|
getExprs() {
|
|
488
500
|
return [this.getAliasTypeExpr()];
|
|
489
501
|
}
|
|
502
|
+
getTypeExprs() {
|
|
503
|
+
function getTypeExprsInType(originalObject) {
|
|
504
|
+
let typeExprs = [];
|
|
505
|
+
if (originalObject instanceof TypeExpr_1.AbstractTypeExpr) {
|
|
506
|
+
typeExprs.push(originalObject);
|
|
507
|
+
}
|
|
508
|
+
else if (originalObject instanceof Type_1.ArrayType) {
|
|
509
|
+
typeExprs.push(...getTypeExprsInType(originalObject.getBaseType()));
|
|
510
|
+
}
|
|
511
|
+
else if (originalObject instanceof Type_1.UnionType || originalObject instanceof Type_1.IntersectionType || originalObject instanceof Type_1.TupleType) {
|
|
512
|
+
for (const member of originalObject.getTypes()) {
|
|
513
|
+
typeExprs.push(...getTypeExprsInType(member));
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
return typeExprs;
|
|
517
|
+
}
|
|
518
|
+
const originalObject = this.getAliasTypeExpr().getOriginalObject();
|
|
519
|
+
if (originalObject instanceof Type_1.Type) {
|
|
520
|
+
return getTypeExprsInType(originalObject);
|
|
521
|
+
}
|
|
522
|
+
return [];
|
|
523
|
+
}
|
|
490
524
|
}
|
|
491
525
|
exports.ArkAliasTypeDefineStmt = ArkAliasTypeDefineStmt;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Value } from './Value';
|
|
2
|
+
import { ArkMethod } from '../model/ArkMethod';
|
|
3
|
+
import { Type } from './Type';
|
|
4
|
+
import { ArkBaseModel } from '../model/ArkBaseModel';
|
|
5
|
+
/**
|
|
6
|
+
* abstract type expr represents the type operations of types or values.
|
|
7
|
+
* AbstractTypeExpr is different from AbstractExpr.
|
|
8
|
+
* @category core/base/typeExpr
|
|
9
|
+
* @extends Type
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* let a = number;
|
|
13
|
+
* type A = typeof a;
|
|
14
|
+
* let b: keyof typeof a;
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare abstract class AbstractTypeExpr extends Type {
|
|
18
|
+
abstract getUses(): Value[];
|
|
19
|
+
abstract getType(): Type;
|
|
20
|
+
inferType(arkMethod: ArkMethod): void;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* typeQuery type expr represents the get type of value with typeof.
|
|
24
|
+
* @category core/base/typeExpr
|
|
25
|
+
* @extends AbstractTypeExpr
|
|
26
|
+
* @example
|
|
27
|
+
```typescript
|
|
28
|
+
// opValue is a and type A is number
|
|
29
|
+
let a = number;
|
|
30
|
+
type A = typeof a;
|
|
31
|
+
```
|
|
32
|
+
*/
|
|
33
|
+
export declare class TypeQueryExpr extends AbstractTypeExpr {
|
|
34
|
+
private opValue;
|
|
35
|
+
private genericTypes?;
|
|
36
|
+
constructor(opValue: Value | ArkBaseModel, generateTypes?: Type[]);
|
|
37
|
+
setOpValue(opValue: Value | ArkBaseModel): void;
|
|
38
|
+
getOpValue(): Value | ArkBaseModel;
|
|
39
|
+
setGenerateTypes(types: Type[]): void;
|
|
40
|
+
getGenerateTypes(): Type[] | undefined;
|
|
41
|
+
addGenericType(gType: Type): void;
|
|
42
|
+
getUses(): Value[];
|
|
43
|
+
getType(): Type;
|
|
44
|
+
getTypeString(): string;
|
|
45
|
+
inferType(arkMethod: ArkMethod): void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* keyof type expr represents the type operator with keyof.
|
|
49
|
+
* It should be an internal expr.
|
|
50
|
+
* the final type should be transferred to union type, unless it cannot find out all types within the union type.
|
|
51
|
+
* @category core/base/typeExpr
|
|
52
|
+
* @extends AbstractTypeExpr
|
|
53
|
+
* @example
|
|
54
|
+
```typescript
|
|
55
|
+
// opType is {a: 1, b: 2} and type of A is KeyofTypeExpr, which can be transferred to union type {'a', 'b'}
|
|
56
|
+
type A = keyof {a: 1, b: 2};
|
|
57
|
+
|
|
58
|
+
// opType is number and type of B is KeyofTypeExpr, which can be transferred to union type "toString" | "toFixed" | "toExponential" | ...
|
|
59
|
+
type B = keyof number;
|
|
60
|
+
```
|
|
61
|
+
*/
|
|
62
|
+
export declare class KeyofTypeExpr extends AbstractTypeExpr {
|
|
63
|
+
private opType;
|
|
64
|
+
constructor(opType: Type);
|
|
65
|
+
getOpType(): Type;
|
|
66
|
+
setOpType(opType: Type): void;
|
|
67
|
+
getUses(): Value[];
|
|
68
|
+
getType(): Type;
|
|
69
|
+
getTypeString(): string;
|
|
70
|
+
inferType(arkMethod: ArkMethod): void;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=TypeExpr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeExpr.d.ts","sourceRoot":"","sources":["../../../src/core/base/TypeExpr.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAoB,IAAI,EAA0B,MAAM,QAAQ,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD;;;;;;;;;;;GAWG;AACH,8BAAsB,gBAAiB,SAAQ,IAAI;IAC/C,QAAQ,CAAC,OAAO,IAAI,KAAK,EAAE;IAE3B,QAAQ,CAAC,OAAO,IAAI,IAAI;IAEjB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;CAG/C;AAED;;;;;;;;;;GAUG;AAEH,qBAAa,aAAc,SAAQ,gBAAgB;IAC/C,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAS;gBAElB,OAAO,EAAE,KAAK,GAAG,YAAY,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE;IAM1D,UAAU,CAAC,OAAO,EAAE,KAAK,GAAG,YAAY,GAAG,IAAI;IAI/C,UAAU,IAAI,KAAK,GAAG,YAAY;IAIlC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAIrC,gBAAgB,IAAI,IAAI,EAAE,GAAG,SAAS;IAItC,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAOjC,OAAO,IAAI,KAAK,EAAE;IAWlB,OAAO,IAAI,IAAI;IAQf,aAAa,IAAI,MAAM;IAUvB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;CAG/C;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAc,SAAQ,gBAAgB;IAC/C,OAAO,CAAC,MAAM,CAAO;gBAET,MAAM,EAAE,IAAI;IAKjB,SAAS,IAAI,IAAI;IAIjB,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAI7B,OAAO,IAAI,KAAK,EAAE;IAQlB,OAAO,IAAI,IAAI;IAIf,aAAa,IAAI,MAAM;IAOvB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;CAG/C"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025 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 });
|
|
17
|
+
exports.KeyofTypeExpr = exports.TypeQueryExpr = exports.AbstractTypeExpr = void 0;
|
|
18
|
+
const ArkMethod_1 = require("../model/ArkMethod");
|
|
19
|
+
const Type_1 = require("./Type");
|
|
20
|
+
const IRInference_1 = require("../common/IRInference");
|
|
21
|
+
const ArkBaseModel_1 = require("../model/ArkBaseModel");
|
|
22
|
+
const ModelUtils_1 = require("../common/ModelUtils");
|
|
23
|
+
const ArkClass_1 = require("../model/ArkClass");
|
|
24
|
+
/**
|
|
25
|
+
* abstract type expr represents the type operations of types or values.
|
|
26
|
+
* AbstractTypeExpr is different from AbstractExpr.
|
|
27
|
+
* @category core/base/typeExpr
|
|
28
|
+
* @extends Type
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* let a = number;
|
|
32
|
+
* type A = typeof a;
|
|
33
|
+
* let b: keyof typeof a;
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
class AbstractTypeExpr extends Type_1.Type {
|
|
37
|
+
inferType(arkMethod) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.AbstractTypeExpr = AbstractTypeExpr;
|
|
42
|
+
/**
|
|
43
|
+
* typeQuery type expr represents the get type of value with typeof.
|
|
44
|
+
* @category core/base/typeExpr
|
|
45
|
+
* @extends AbstractTypeExpr
|
|
46
|
+
* @example
|
|
47
|
+
```typescript
|
|
48
|
+
// opValue is a and type A is number
|
|
49
|
+
let a = number;
|
|
50
|
+
type A = typeof a;
|
|
51
|
+
```
|
|
52
|
+
*/
|
|
53
|
+
class TypeQueryExpr extends AbstractTypeExpr {
|
|
54
|
+
constructor(opValue, generateTypes) {
|
|
55
|
+
super();
|
|
56
|
+
this.opValue = opValue;
|
|
57
|
+
this.genericTypes = generateTypes;
|
|
58
|
+
}
|
|
59
|
+
setOpValue(opValue) {
|
|
60
|
+
this.opValue = opValue;
|
|
61
|
+
}
|
|
62
|
+
getOpValue() {
|
|
63
|
+
return this.opValue;
|
|
64
|
+
}
|
|
65
|
+
setGenerateTypes(types) {
|
|
66
|
+
this.genericTypes = types;
|
|
67
|
+
}
|
|
68
|
+
getGenerateTypes() {
|
|
69
|
+
return this.genericTypes;
|
|
70
|
+
}
|
|
71
|
+
addGenericType(gType) {
|
|
72
|
+
if (!this.genericTypes) {
|
|
73
|
+
this.genericTypes = [];
|
|
74
|
+
}
|
|
75
|
+
this.genericTypes.push(gType);
|
|
76
|
+
}
|
|
77
|
+
getUses() {
|
|
78
|
+
const opValue = this.getOpValue();
|
|
79
|
+
if (opValue instanceof ArkBaseModel_1.ArkBaseModel) {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
let uses = [];
|
|
83
|
+
uses.push(opValue);
|
|
84
|
+
uses.push(...opValue.getUses());
|
|
85
|
+
return uses;
|
|
86
|
+
}
|
|
87
|
+
getType() {
|
|
88
|
+
var _a;
|
|
89
|
+
const opValue = this.getOpValue();
|
|
90
|
+
if (opValue instanceof ArkBaseModel_1.ArkBaseModel) {
|
|
91
|
+
return (_a = ModelUtils_1.ModelUtils.parseArkBaseModel2Type(opValue)) !== null && _a !== void 0 ? _a : Type_1.UnknownType.getInstance();
|
|
92
|
+
}
|
|
93
|
+
return opValue.getType();
|
|
94
|
+
}
|
|
95
|
+
getTypeString() {
|
|
96
|
+
const opValue = this.getOpValue();
|
|
97
|
+
const gTypes = this.getGenerateTypes();
|
|
98
|
+
const genericStr = gTypes && gTypes.length > 0 ? `<${gTypes.join(',')}>` : '';
|
|
99
|
+
if (opValue instanceof ArkClass_1.ArkClass || opValue instanceof ArkMethod_1.ArkMethod) {
|
|
100
|
+
return `typeof ${opValue.getSignature().toString()}${genericStr}`;
|
|
101
|
+
}
|
|
102
|
+
return `typeof ${opValue.toString()}${genericStr}`;
|
|
103
|
+
}
|
|
104
|
+
inferType(arkMethod) {
|
|
105
|
+
IRInference_1.IRInference.inferTypeQueryExpr(this, arkMethod);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.TypeQueryExpr = TypeQueryExpr;
|
|
109
|
+
/**
|
|
110
|
+
* keyof type expr represents the type operator with keyof.
|
|
111
|
+
* It should be an internal expr.
|
|
112
|
+
* the final type should be transferred to union type, unless it cannot find out all types within the union type.
|
|
113
|
+
* @category core/base/typeExpr
|
|
114
|
+
* @extends AbstractTypeExpr
|
|
115
|
+
* @example
|
|
116
|
+
```typescript
|
|
117
|
+
// opType is {a: 1, b: 2} and type of A is KeyofTypeExpr, which can be transferred to union type {'a', 'b'}
|
|
118
|
+
type A = keyof {a: 1, b: 2};
|
|
119
|
+
|
|
120
|
+
// opType is number and type of B is KeyofTypeExpr, which can be transferred to union type "toString" | "toFixed" | "toExponential" | ...
|
|
121
|
+
type B = keyof number;
|
|
122
|
+
```
|
|
123
|
+
*/
|
|
124
|
+
class KeyofTypeExpr extends AbstractTypeExpr {
|
|
125
|
+
constructor(opType) {
|
|
126
|
+
super();
|
|
127
|
+
this.opType = opType;
|
|
128
|
+
}
|
|
129
|
+
getOpType() {
|
|
130
|
+
return this.opType;
|
|
131
|
+
}
|
|
132
|
+
setOpType(opType) {
|
|
133
|
+
this.opType = opType;
|
|
134
|
+
}
|
|
135
|
+
getUses() {
|
|
136
|
+
let uses = [];
|
|
137
|
+
if (this.getOpType() instanceof TypeQueryExpr) {
|
|
138
|
+
uses.push(...this.getOpType().getUses());
|
|
139
|
+
}
|
|
140
|
+
return uses;
|
|
141
|
+
}
|
|
142
|
+
getType() {
|
|
143
|
+
return this;
|
|
144
|
+
}
|
|
145
|
+
getTypeString() {
|
|
146
|
+
if (this.getOpType() instanceof Type_1.UnionType || this.getOpType() instanceof Type_1.IntersectionType) {
|
|
147
|
+
return `keyof (${this.getOpType().toString()})`;
|
|
148
|
+
}
|
|
149
|
+
return `keyof ${this.getOpType().toString()}`;
|
|
150
|
+
}
|
|
151
|
+
inferType(arkMethod) {
|
|
152
|
+
IRInference_1.IRInference.inferKeyofTypeExpr(this, arkMethod);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.KeyofTypeExpr = KeyofTypeExpr;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,EAOH,cAAc,EAGd,aAAa,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAA2E,SAAS,EAAE,MAAM,aAAa,CAAC;AACjH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EACH,sBAAsB,EAOtB,IAAI,EACP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAmE,MAAM,cAAc,CAAC;AAW1G,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU/C,OAAO,EAAE,YAAY,EAAmB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,6 +59,7 @@ const builderUtils_1 = require("../model/builder/builderUtils");
|
|
|
59
59
|
const ArkValueTransformer_1 = require("./ArkValueTransformer");
|
|
60
60
|
const ArkImport_1 = require("../model/ArkImport");
|
|
61
61
|
const TypeInference_1 = require("./TypeInference");
|
|
62
|
+
const TypeExpr_1 = require("../base/TypeExpr");
|
|
62
63
|
class DummyStmt extends Stmt_1.Stmt {
|
|
63
64
|
constructor(text) {
|
|
64
65
|
super();
|
|
@@ -257,6 +258,9 @@ class ArkIRTransformer {
|
|
|
257
258
|
const aliasName = typeAliasDeclaration.name.text;
|
|
258
259
|
const rightOp = typeAliasDeclaration.type;
|
|
259
260
|
let rightType = this.arkValueTransformer.resolveTypeNode(rightOp);
|
|
261
|
+
if (rightType instanceof TypeExpr_1.AbstractTypeExpr) {
|
|
262
|
+
rightType = rightType.getType();
|
|
263
|
+
}
|
|
260
264
|
const aliasType = new Type_1.AliasType(aliasName, rightType, new ArkSignature_1.AliasTypeSignature(aliasName, this.declaringMethod.getSignature()));
|
|
261
265
|
if (typeAliasDeclaration.typeParameters) {
|
|
262
266
|
const genericTypes = (0, builderUtils_1.buildTypeParameters)(typeAliasDeclaration.typeParameters, this.sourceFile, this.declaringMethod);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,sBAAsB,EAAiD,MAAM,cAAc,CAAC;AAuBrG,OAAO,EACH,SAAS,EAaT,IAAI,EAMP,MAAM,cAAc,CAAC;AAetB,OAAO,EAAyE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/G,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/C,OAAO,EAAE,gBAAgB,EAAa,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,7 @@ const Const_1 = require("./Const");
|
|
|
62
62
|
const ArkIRTransformer_1 = require("./ArkIRTransformer");
|
|
63
63
|
const logger_1 = __importStar(require("../../utils/logger"));
|
|
64
64
|
const TypeInference_1 = require("./TypeInference");
|
|
65
|
+
const TypeExpr_1 = require("../base/TypeExpr");
|
|
65
66
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkValueTransformer');
|
|
66
67
|
class ArkValueTransformer {
|
|
67
68
|
constructor(arkIRTransformer, sourceFile, declaringMethod) {
|
|
@@ -1302,30 +1303,44 @@ class ArkValueTransformer {
|
|
|
1302
1303
|
}
|
|
1303
1304
|
}
|
|
1304
1305
|
resolveTypeQueryNode(typeQueryNode) {
|
|
1305
|
-
|
|
1306
|
-
const local = this.locals.get(exprName);
|
|
1307
|
-
if (local !== undefined) {
|
|
1308
|
-
return local.getType();
|
|
1309
|
-
}
|
|
1306
|
+
var _a, _b, _c, _d, _e, _f;
|
|
1310
1307
|
const genericTypes = [];
|
|
1311
1308
|
if (typeQueryNode.typeArguments) {
|
|
1312
1309
|
for (const typeArgument of typeQueryNode.typeArguments) {
|
|
1313
1310
|
genericTypes.push(this.resolveTypeNode(typeArgument));
|
|
1314
1311
|
}
|
|
1315
1312
|
}
|
|
1316
|
-
|
|
1313
|
+
const exprNameNode = typeQueryNode.exprName;
|
|
1314
|
+
let opValue;
|
|
1315
|
+
if (ts.isQualifiedName(exprNameNode)) {
|
|
1316
|
+
if (exprNameNode.left.getText(this.sourceFile) === TSConst_1.THIS_NAME) {
|
|
1317
|
+
const fieldName = exprNameNode.right.getText(this.sourceFile);
|
|
1318
|
+
const fieldSignature = (_b = (_a = this.declaringMethod.getDeclaringArkClass().getFieldWithName(fieldName)) === null || _a === void 0 ? void 0 : _a.getSignature()) !== null && _b !== void 0 ? _b : ArkSignatureBuilder_1.ArkSignatureBuilder.buildFieldSignatureFromFieldName(fieldName);
|
|
1319
|
+
const baseLocal = (_c = this.locals.get(TSConst_1.THIS_NAME)) !== null && _c !== void 0 ? _c : new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(this.declaringMethod.getDeclaringArkClass().getSignature(), genericTypes));
|
|
1320
|
+
opValue = new Ref_1.ArkInstanceFieldRef(baseLocal, fieldSignature);
|
|
1321
|
+
}
|
|
1322
|
+
else {
|
|
1323
|
+
const exprName = exprNameNode.getText(this.sourceFile);
|
|
1324
|
+
opValue = new Local_1.Local(exprName, Type_1.UnknownType.getInstance());
|
|
1325
|
+
}
|
|
1326
|
+
}
|
|
1327
|
+
else {
|
|
1328
|
+
const exprName = exprNameNode.escapedText.toString();
|
|
1329
|
+
opValue = (_f = (_d = this.locals.get(exprName)) !== null && _d !== void 0 ? _d : (_e = this.globals) === null || _e === void 0 ? void 0 : _e.get(exprName)) !== null && _f !== void 0 ? _f : new Local_1.Local(exprName, Type_1.UnknownType.getInstance());
|
|
1330
|
+
}
|
|
1331
|
+
return new TypeExpr_1.TypeQueryExpr(opValue, genericTypes);
|
|
1317
1332
|
}
|
|
1318
1333
|
resolveTypeOperatorNode(typeOperatorNode) {
|
|
1334
|
+
let type = this.resolveTypeNode(typeOperatorNode.type);
|
|
1319
1335
|
switch (typeOperatorNode.operator) {
|
|
1320
1336
|
case ts.SyntaxKind.ReadonlyKeyword: {
|
|
1321
|
-
let type = this.resolveTypeNode(typeOperatorNode.type);
|
|
1322
1337
|
if (type instanceof Type_1.ArrayType || type instanceof Type_1.TupleType) {
|
|
1323
1338
|
type.setReadonlyFlag(true);
|
|
1324
1339
|
}
|
|
1325
1340
|
return type;
|
|
1326
1341
|
}
|
|
1327
1342
|
case ts.SyntaxKind.KeyOfKeyword: {
|
|
1328
|
-
return
|
|
1343
|
+
return new TypeExpr_1.KeyofTypeExpr(type);
|
|
1329
1344
|
}
|
|
1330
1345
|
case ts.SyntaxKind.UniqueKeyword: {
|
|
1331
1346
|
return Type_1.UnknownType.getInstance();
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { ArkMethod } from '../model/ArkMethod';
|
|
2
2
|
import { ClassType, Type } from '../base/Type';
|
|
3
|
+
import { Local } from '../base/Local';
|
|
3
4
|
import { AbstractExpr, AbstractInvokeExpr, AliasTypeExpr, ArkInstanceInvokeExpr, ArkStaticInvokeExpr } from '../base/Expr';
|
|
4
5
|
import { Scene } from '../../Scene';
|
|
5
6
|
import { ArkClass } from '../model/ArkClass';
|
|
6
7
|
import { ClassSignature, MethodSignature } from '../model/ArkSignature';
|
|
7
8
|
import { AbstractRef, ArkInstanceFieldRef } from '../base/Ref';
|
|
8
9
|
import { ArkFile } from '../model/ArkFile';
|
|
10
|
+
import { KeyofTypeExpr, TypeQueryExpr } from '../base/TypeExpr';
|
|
9
11
|
export declare class IRInference {
|
|
10
12
|
private static inferExportInfos;
|
|
11
13
|
private static inferImportInfos;
|
|
@@ -24,10 +26,12 @@ export declare class IRInference {
|
|
|
24
26
|
private static getRealTypes;
|
|
25
27
|
static replaceMethodSignature(init: MethodSignature, declared: MethodSignature): MethodSignature;
|
|
26
28
|
private static processForEach;
|
|
27
|
-
|
|
29
|
+
static inferLocal(base: Local, arkMethod: ArkMethod): void;
|
|
28
30
|
private static generateNewFieldSignature;
|
|
29
31
|
static inferAnonymousClass(anon: ArkClass | null, declaredSignature: ClassSignature, set?: Set<string>): void;
|
|
30
32
|
private static assignAnonField;
|
|
31
33
|
static inferAliasTypeExpr(expr: AliasTypeExpr, arkMethod: ArkMethod): AbstractExpr;
|
|
34
|
+
static inferTypeQueryExpr(expr: TypeQueryExpr, arkMethod: ArkMethod): void;
|
|
35
|
+
static inferKeyofTypeExpr(expr: KeyofTypeExpr, arkMethod: ArkMethod): void;
|
|
32
36
|
}
|
|
33
37
|
//# sourceMappingURL=IRInference.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAKH,SAAS,EAIT,IAAI,EAIP,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAKH,SAAS,EAIT,IAAI,EAIP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,EAGH,cAAc,EAEd,eAAe,EAElB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAEH,WAAW,EAEX,mBAAmB,EAGtB,MAAM,aAAa,CAAC;AAYrB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAoB,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKlF,qBAAa,WAAW;IAEpB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,MAAM,CAAC,gBAAgB;WAMjB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;WAwB9B,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;IA8BxG,OAAO,CAAC,MAAM,CAAC,iCAAiC;IAmChD,OAAO,CAAC,MAAM,CAAC,0BAA0B;WAU3B,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;WAsB9F,aAAa,CAAC,GAAG,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,WAAW;IAiBxF,OAAO,CAAC,MAAM,CAAC,SAAS;IAoBxB,OAAO,CAAC,MAAM,CAAC,QAAQ;WAqBT,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;WAehF,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI;IAgBxF,OAAO,CAAC,MAAM,CAAC,eAAe;IA0C9B,OAAO,CAAC,MAAM,CAAC,gCAAgC;IAgD/C,OAAO,CAAC,MAAM,CAAC,YAAY;WAYb,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,GAAG,eAAe;IAcvG,OAAO,CAAC,MAAM,CAAC,cAAc;WAmBf,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAsBjE,OAAO,CAAC,MAAM,CAAC,yBAAyB;WA4C1B,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,IAAI;IA+B/H,OAAO,CAAC,MAAM,CAAC,eAAe;WA+BhB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,YAAY;WAiC3E,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;WA2CnE,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;CAapF"}
|
|
@@ -56,6 +56,8 @@ const Ref_1 = require("../base/Ref");
|
|
|
56
56
|
const Constant_1 = require("../base/Constant");
|
|
57
57
|
const Const_1 = require("./Const");
|
|
58
58
|
const ValueUtil_1 = require("./ValueUtil");
|
|
59
|
+
const TypeExpr_1 = require("../base/TypeExpr");
|
|
60
|
+
const ArkBaseModel_1 = require("../model/ArkBaseModel");
|
|
59
61
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'IRInference');
|
|
60
62
|
class IRInference {
|
|
61
63
|
static inferExportInfos(file) {
|
|
@@ -555,6 +557,10 @@ class IRInference {
|
|
|
555
557
|
if (originalObject instanceof Local_1.Local) {
|
|
556
558
|
model = ModelUtils_1.ModelUtils.findArkModelByRefName(originalObject.getName(), arkMethod.getDeclaringArkClass());
|
|
557
559
|
}
|
|
560
|
+
else if (originalObject instanceof TypeExpr_1.AbstractTypeExpr) {
|
|
561
|
+
originalObject.inferType(arkMethod);
|
|
562
|
+
model = originalObject;
|
|
563
|
+
}
|
|
558
564
|
else if (originalObject instanceof Type_1.Type) {
|
|
559
565
|
const type = TypeInference_1.TypeInference.inferUnclearedType(originalObject, arkMethod.getDeclaringArkClass());
|
|
560
566
|
// If original Object is ClassType, AliasType or UnclearReferenceType with real generic types,
|
|
@@ -579,5 +585,64 @@ class IRInference {
|
|
|
579
585
|
}
|
|
580
586
|
return expr;
|
|
581
587
|
}
|
|
588
|
+
static inferTypeQueryExpr(expr, arkMethod) {
|
|
589
|
+
var _a;
|
|
590
|
+
let gTypes = expr.getGenerateTypes();
|
|
591
|
+
if (gTypes) {
|
|
592
|
+
for (let i = 0; i < gTypes.length; i++) {
|
|
593
|
+
const newType = TypeInference_1.TypeInference.inferUnclearedType(gTypes[i], arkMethod.getDeclaringArkClass());
|
|
594
|
+
if (newType) {
|
|
595
|
+
gTypes[i] = newType;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
const opValue = expr.getOpValue();
|
|
600
|
+
let opValueType;
|
|
601
|
+
if (opValue instanceof ArkBaseModel_1.ArkBaseModel) {
|
|
602
|
+
opValueType = (_a = ModelUtils_1.ModelUtils.parseArkBaseModel2Type(opValue)) !== null && _a !== void 0 ? _a : Type_1.UnknownType.getInstance();
|
|
603
|
+
}
|
|
604
|
+
else {
|
|
605
|
+
opValueType = opValue.getType();
|
|
606
|
+
}
|
|
607
|
+
if (!TypeInference_1.TypeInference.isUnclearType(opValueType)) {
|
|
608
|
+
return;
|
|
609
|
+
}
|
|
610
|
+
if (opValue instanceof Local_1.Local) {
|
|
611
|
+
const newOpValueType = TypeInference_1.TypeInference.inferUnclearRefName(opValue.getName(), arkMethod.getDeclaringArkClass());
|
|
612
|
+
const scene = arkMethod.getDeclaringArkFile().getScene();
|
|
613
|
+
if (newOpValueType instanceof Type_1.ClassType) {
|
|
614
|
+
const newOpValue = ModelUtils_1.ModelUtils.findArkModelBySignature(newOpValueType.getClassSignature(), scene);
|
|
615
|
+
if (newOpValue instanceof ArkBaseModel_1.ArkBaseModel) {
|
|
616
|
+
expr.setOpValue(newOpValue);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
else if (newOpValueType instanceof Type_1.FunctionType) {
|
|
620
|
+
const newOpValue = ModelUtils_1.ModelUtils.findArkModelBySignature(newOpValueType.getMethodSignature(), scene);
|
|
621
|
+
if (newOpValue instanceof ArkBaseModel_1.ArkBaseModel) {
|
|
622
|
+
expr.setOpValue(newOpValue);
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
else {
|
|
626
|
+
this.inferLocal(opValue, arkMethod);
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
else if (opValue instanceof Ref_1.AbstractRef || opValue instanceof Expr_1.AbstractExpr) {
|
|
630
|
+
expr.setOpValue(opValue.inferType(arkMethod));
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
static inferKeyofTypeExpr(expr, arkMethod) {
|
|
634
|
+
const opType = expr.getOpType();
|
|
635
|
+
if (TypeInference_1.TypeInference.isUnclearType(opType)) {
|
|
636
|
+
if (opType instanceof TypeExpr_1.TypeQueryExpr) {
|
|
637
|
+
this.inferTypeQueryExpr(opType, arkMethod);
|
|
638
|
+
}
|
|
639
|
+
else {
|
|
640
|
+
const type = TypeInference_1.TypeInference.inferUnclearedType(opType, arkMethod.getDeclaringArkClass());
|
|
641
|
+
if (type) {
|
|
642
|
+
expr.setOpType(type);
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
}
|
|
582
647
|
}
|
|
583
648
|
exports.IRInference = IRInference;
|
|
@@ -6,8 +6,9 @@ import { ArkNamespace } from '../model/ArkNamespace';
|
|
|
6
6
|
import { ClassSignature, MethodSignature, Signature } from '../model/ArkSignature';
|
|
7
7
|
import { ArkExport, ExportInfo, FromInfo } from '../model/ArkExport';
|
|
8
8
|
import { ArkField } from '../model/ArkField';
|
|
9
|
-
import { ClassType } from '../base/Type';
|
|
9
|
+
import { ClassType, Type } from '../base/Type';
|
|
10
10
|
import { Scene } from '../../Scene';
|
|
11
|
+
import { ArkBaseModel } from '../model/ArkBaseModel';
|
|
11
12
|
export declare class ModelUtils {
|
|
12
13
|
static implicitArkUIBuilderMethods: Set<ArkMethod>;
|
|
13
14
|
static getMethodSignatureFromArkClass(arkClass: ArkClass, methodName: string): MethodSignature | null;
|
|
@@ -46,6 +47,7 @@ export declare class ModelUtils {
|
|
|
46
47
|
static findArkModel(baseName: string, arkClass: ArkClass): ArkExport | ArkField | null;
|
|
47
48
|
static findArkModelByRefName(refName: string, arkClass: ArkClass): ArkExport | ArkField | null;
|
|
48
49
|
static findArkModelBySignature(signature: Signature, scene: Scene): ArkExport | ArkField | null;
|
|
50
|
+
static parseArkBaseModel2Type(arkBaseModel: ArkBaseModel): Type | null;
|
|
49
51
|
}
|
|
50
52
|
export declare const sdkImportMap: Map<string, ArkFile>;
|
|
51
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/ModelUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAEH,cAAc,EAKd,eAAe,EAEf,SAAS,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAc,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C,OAAO,EAA2B,SAAS,
|
|
1
|
+
{"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/ModelUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -455,6 +455,24 @@ class ModelUtils {
|
|
|
455
455
|
}
|
|
456
456
|
return null;
|
|
457
457
|
}
|
|
458
|
+
static parseArkBaseModel2Type(arkBaseModel) {
|
|
459
|
+
if (arkBaseModel instanceof ArkClass_1.ArkClass) {
|
|
460
|
+
return new Type_1.ClassType(arkBaseModel.getSignature(), arkBaseModel.getGenericsTypes());
|
|
461
|
+
}
|
|
462
|
+
else if (arkBaseModel instanceof ArkNamespace_1.ArkNamespace) {
|
|
463
|
+
return Type_1.AnnotationNamespaceType.getInstance(arkBaseModel.getSignature());
|
|
464
|
+
}
|
|
465
|
+
else if (arkBaseModel instanceof ArkMethod_1.ArkMethod) {
|
|
466
|
+
return new Type_1.FunctionType(arkBaseModel.getSignature());
|
|
467
|
+
}
|
|
468
|
+
else if (arkBaseModel instanceof ArkField_1.ArkField) {
|
|
469
|
+
if (arkBaseModel.getType() instanceof Type_1.UnknownType || arkBaseModel.getType() instanceof Type_1.UnclearReferenceType) {
|
|
470
|
+
return null;
|
|
471
|
+
}
|
|
472
|
+
return arkBaseModel.getType();
|
|
473
|
+
}
|
|
474
|
+
return null;
|
|
475
|
+
}
|
|
458
476
|
}
|
|
459
477
|
exports.ModelUtils = ModelUtils;
|
|
460
478
|
ModelUtils.implicitArkUIBuilderMethods = new Set();
|
|
@@ -31,6 +31,10 @@ export declare class TypeInference {
|
|
|
31
31
|
* such as ArkInstanceInvokeExpr ArkStaticInvokeExpr ArkNewExpr
|
|
32
32
|
*/
|
|
33
33
|
private static resolveExprsInStmt;
|
|
34
|
+
/**
|
|
35
|
+
* infer value type for TypeExprs in stmt which specify the type such as TypeQueryExpr
|
|
36
|
+
*/
|
|
37
|
+
private static resolveTypeExprsInStmt;
|
|
34
38
|
/**
|
|
35
39
|
* infer type for fieldRefs in stmt.
|
|
36
40
|
*/
|
|
@@ -49,6 +53,7 @@ export declare class TypeInference {
|
|
|
49
53
|
static inferSimpleTypeInStmt(stmt: Stmt): void;
|
|
50
54
|
static buildTypeFromStr(typeStr: string): Type;
|
|
51
55
|
static inferValueType(value: Value, arkMethod: ArkMethod): Type | null;
|
|
56
|
+
private static inferParameterType;
|
|
52
57
|
static inferSignatureReturnType(oldSignature: MethodSignature, arkMethod: ArkMethod): void;
|
|
53
58
|
static inferGenericType(types: GenericType[] | undefined, arkClass: ArkClass): void;
|
|
54
59
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/TypeInference.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAyC,IAAI,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAOH,YAAY,EACZ,WAAW,EAMX,IAAI,EACJ,oBAAoB,EAKvB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAMtC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/TypeInference.ts"],"names":[],"mappings":"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"}
|