arkanalyzer 1.0.39 → 1.0.41
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 +6 -2
- package/lib/Config.d.ts +1 -0
- package/lib/Config.d.ts.map +1 -1
- package/lib/Scene.d.ts +6 -5
- package/lib/Scene.d.ts.map +1 -1
- package/lib/Scene.js +36 -18
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +3 -4
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +7 -8
- package/lib/callgraph/model/CallGraph.d.ts +5 -5
- package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
- package/lib/callgraph/model/CallGraph.js +18 -21
- package/lib/callgraph/model/CallSite.d.ts +16 -6
- package/lib/callgraph/model/CallSite.d.ts.map +1 -1
- package/lib/callgraph/model/CallSite.js +48 -8
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +0 -1
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts.map +1 -1
- package/lib/callgraph/model/builder/CallGraphBuilder.js +0 -8
- package/lib/callgraph/pointerAnalysis/Pag.d.ts +3 -6
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +6 -29
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +6 -15
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +61 -85
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +2 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +12 -8
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +10 -3
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +20 -5
- package/lib/callgraph/pointerAnalysis/context/Context.d.ts +69 -0
- package/lib/callgraph/pointerAnalysis/context/Context.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/context/Context.js +202 -0
- package/lib/callgraph/pointerAnalysis/context/ContextItem.d.ts +40 -0
- package/lib/callgraph/pointerAnalysis/context/ContextItem.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/context/ContextItem.js +99 -0
- package/lib/callgraph/pointerAnalysis/context/ContextSelector.d.ts +46 -0
- package/lib/callgraph/pointerAnalysis/context/ContextSelector.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/context/ContextSelector.js +138 -0
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +11 -1
- package/lib/core/base/Local.js +1 -1
- package/lib/core/common/ArkIRTransformer.d.ts +2 -0
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +90 -0
- package/lib/core/common/ArkValueTransformer.d.ts +1 -1
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +48 -33
- package/lib/core/common/Builtin.d.ts.map +1 -1
- package/lib/core/common/Builtin.js +2 -2
- package/lib/core/common/DummyMainCreater.js +1 -1
- package/lib/core/common/IRInference.d.ts +1 -0
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +60 -44
- 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 +7 -0
- package/lib/core/common/SdkUtils.d.ts +14 -1
- package/lib/core/common/SdkUtils.d.ts.map +1 -1
- package/lib/core/common/SdkUtils.js +118 -24
- package/lib/core/common/TypeInference.d.ts +2 -1
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +21 -12
- package/lib/core/common/ValueUtil.d.ts +1 -0
- package/lib/core/common/ValueUtil.d.ts.map +1 -1
- package/lib/core/common/ValueUtil.js +7 -0
- package/lib/core/graph/BaseExplicitGraph.d.ts +1 -0
- package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
- package/lib/core/graph/BaseExplicitGraph.js +3 -0
- package/lib/core/graph/Scc.js +1 -1
- package/lib/core/graph/builder/CfgBuilder.d.ts +2 -0
- package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/CfgBuilder.js +59 -7
- package/lib/core/model/ArkImport.js +1 -1
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +8 -2
- package/lib/core/model/builder/ArkClassBuilder.js +21 -1
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +2 -2
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +2 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -4
- package/lib/save/JsonPrinter.d.ts +1 -0
- package/lib/save/JsonPrinter.d.ts.map +1 -1
- package/lib/save/JsonPrinter.js +15 -5
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts.map +1 -1
- package/lib/save/arkir/ArkIRMethodPrinter.js +13 -5
- package/lib/save/source/SourceBody.d.ts +1 -1
- package/lib/save/source/SourceBody.d.ts.map +1 -1
- package/lib/save/source/SourceBody.js +3 -2
- package/lib/save/source/SourceStmt.d.ts.map +1 -1
- package/lib/save/source/SourceStmt.js +12 -4
- package/lib/save/source/SourceTransformer.d.ts +3 -3
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +11 -10
- package/lib/transformer/StaticSingleAssignmentFormer.js +1 -1
- package/package.json +7 -7
- package/lib/callgraph/pointerAnalysis/Context.d.ts +0 -38
- package/lib/callgraph/pointerAnalysis/Context.d.ts.map +0 -1
- package/lib/callgraph/pointerAnalysis/Context.js +0 -154
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../../../src/callgraph/pointerAnalysis/context/Context.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAuB,kBAAkB,EAAmB,MAAM,eAAe,CAAC;AAEzF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,eAAO,MAAM,SAAS,IAAI,CAAC;AAE3B;;;GAGG;AACH,8BAAsB,OAAO;IACzB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;gBAErB,YAAY,GAAE,MAAM,EAAO;IAQvC;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC;IAIxD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC;IAI1F;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC;IAgBnF;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC;IAcxD,MAAM,IAAI,MAAM;IAIhB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAO1B,QAAQ,IAAI,MAAM;aAKT,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,kBAAkB,GAAG,OAAO;aACxF,IAAI,CAAC,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM;CACrE;AAED,qBAAa,eAAgB,SAAQ,OAAO;IACjC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,kBAAkB,GAAG,eAAe;IAKjG,IAAI,CAAC,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM;CAS5D;AAED,qBAAa,UAAW,SAAQ,OAAO;IAC5B,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,kBAAkB,GAAG,UAAU;IAKvF,IAAI,CAAC,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM;CAI5D;AAED,qBAAa,WAAY,SAAQ,OAAO;IAC7B,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,kBAAkB,GAAG,WAAW;IAKzF,IAAI,CAAC,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM;CAS5D;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,cAAc,CAAkC;;IAOjD,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAa9C,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO;IAY/E,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS;IASrD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAO3C,cAAc,IAAI,OAAO,EAAE;IAI3B,IAAI,CAAC,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM;CAS5D"}
|
|
@@ -0,0 +1,202 @@
|
|
|
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.ContextCache = exports.FuncContext = exports.ObjContext = exports.CallSiteContext = exports.Context = exports.DUMMY_CID = void 0;
|
|
18
|
+
exports.DUMMY_CID = 0;
|
|
19
|
+
/**
|
|
20
|
+
* An abstract base class representing a context in pointer analysis.
|
|
21
|
+
* A context is an immutable sequence of context elements (represented by their IDs).
|
|
22
|
+
*/
|
|
23
|
+
class Context {
|
|
24
|
+
constructor(contextElems = []) {
|
|
25
|
+
this.contextElems = contextElems;
|
|
26
|
+
}
|
|
27
|
+
// -------------------------------------------------------------------
|
|
28
|
+
// Static Factory Methods
|
|
29
|
+
// -------------------------------------------------------------------
|
|
30
|
+
/**
|
|
31
|
+
* Creates a new empty context instance.
|
|
32
|
+
* This static method must be called on a concrete subclass.
|
|
33
|
+
* @example CallSiteContext.newEmpty()
|
|
34
|
+
*/
|
|
35
|
+
static newEmpty() {
|
|
36
|
+
return new this();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Creates a new context instance from an array of element IDs.
|
|
40
|
+
* This static method must be called on a concrete subclass.
|
|
41
|
+
* @param contextElems An array of ContextItem IDs.
|
|
42
|
+
* @example CallSiteContext.new([1, 2])
|
|
43
|
+
*/
|
|
44
|
+
static new(contextElems) {
|
|
45
|
+
return new this(contextElems);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Creates a new k-limited context by prepending a new element to an old context.
|
|
49
|
+
* The returned instance has the same type as the `oldCtx`.
|
|
50
|
+
* @param oldCtx The previous context instance.
|
|
51
|
+
* @param elem The ID of the new element to add.
|
|
52
|
+
* @param k The maximum length limit for the context.
|
|
53
|
+
*/
|
|
54
|
+
static newKLimitedContext(oldCtx, elem, k) {
|
|
55
|
+
let elems = [];
|
|
56
|
+
if (k > 0) {
|
|
57
|
+
elems.push(elem);
|
|
58
|
+
const oldElems = oldCtx.contextElems;
|
|
59
|
+
if (oldElems.length < k) {
|
|
60
|
+
elems = elems.concat(oldElems);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
elems = elems.concat(oldElems.slice(0, k - 1));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Use the constructor of the old context to create a new instance, preserving type
|
|
67
|
+
const constructor = oldCtx.constructor;
|
|
68
|
+
return new constructor(elems);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Truncates an existing context to a specified k-limit.
|
|
72
|
+
* The returned instance has the same type as `ctx`.
|
|
73
|
+
* @param ctx The context instance to truncate.
|
|
74
|
+
* @param k The maximum length limit for the context.
|
|
75
|
+
*/
|
|
76
|
+
static kLimitedContext(ctx, k) {
|
|
77
|
+
const constructor = ctx.constructor;
|
|
78
|
+
if (ctx.length() <= k) {
|
|
79
|
+
return new constructor(ctx.contextElems);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const elems = ctx.contextElems.slice(0, k);
|
|
83
|
+
return new constructor(elems);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// -------------------------------------------------------------------
|
|
87
|
+
// Instance Methods
|
|
88
|
+
// -------------------------------------------------------------------
|
|
89
|
+
length() {
|
|
90
|
+
return this.contextElems.length;
|
|
91
|
+
}
|
|
92
|
+
get(index) {
|
|
93
|
+
if (index < 0 || index >= this.contextElems.length) {
|
|
94
|
+
throw new Error('Index out of bounds');
|
|
95
|
+
}
|
|
96
|
+
return this.contextElems[index];
|
|
97
|
+
}
|
|
98
|
+
toString() {
|
|
99
|
+
return this.contextElems.join('-');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.Context = Context;
|
|
103
|
+
class CallSiteContext extends Context {
|
|
104
|
+
append(callSiteID, calleeFunc, k, m) {
|
|
105
|
+
let contextItem = m.getOrCreateCallSiteItem(callSiteID, calleeFunc);
|
|
106
|
+
return Context.newKLimitedContext(this, contextItem.id, k);
|
|
107
|
+
}
|
|
108
|
+
dump(m, cg) {
|
|
109
|
+
let content = '';
|
|
110
|
+
for (let i = 0; i < this.length(); i++) {
|
|
111
|
+
const item = m.getItem(this.get(i));
|
|
112
|
+
const callSiteInfo = cg.getCallSiteInfo(item.callSiteId);
|
|
113
|
+
content += `\t[${callSiteInfo}]\n`;
|
|
114
|
+
}
|
|
115
|
+
return content;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.CallSiteContext = CallSiteContext;
|
|
119
|
+
class ObjContext extends Context {
|
|
120
|
+
append(callSiteID, objId, k, m) {
|
|
121
|
+
let contextItem = m.getOrCreateObjectItem(objId);
|
|
122
|
+
return Context.newKLimitedContext(this, contextItem.id, k);
|
|
123
|
+
}
|
|
124
|
+
dump(m, cg) {
|
|
125
|
+
let content = '';
|
|
126
|
+
return content;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.ObjContext = ObjContext;
|
|
130
|
+
class FuncContext extends Context {
|
|
131
|
+
append(callSiteID, funcId, k, m) {
|
|
132
|
+
let contextItem = m.getOrCreateFuncItem(funcId);
|
|
133
|
+
return Context.newKLimitedContext(this, contextItem.id, k);
|
|
134
|
+
}
|
|
135
|
+
dump(m, cg) {
|
|
136
|
+
let content = '';
|
|
137
|
+
for (let i = 0; i < this.length(); i++) {
|
|
138
|
+
const item = m.getItem(this.get(i));
|
|
139
|
+
const methodSig = cg.getMethodByFuncID(item.funcID).toString();
|
|
140
|
+
content += `\t[${methodSig}]\n`;
|
|
141
|
+
}
|
|
142
|
+
return content;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.FuncContext = FuncContext;
|
|
146
|
+
class ContextCache {
|
|
147
|
+
constructor() {
|
|
148
|
+
this.contextList = [];
|
|
149
|
+
this.contextToIDMap = new Map();
|
|
150
|
+
this.contextList = [];
|
|
151
|
+
this.contextToIDMap = new Map();
|
|
152
|
+
}
|
|
153
|
+
getOrNewContextID(context) {
|
|
154
|
+
let cStr = context.toString();
|
|
155
|
+
if (this.contextToIDMap.has(cStr)) {
|
|
156
|
+
return this.contextToIDMap.get(cStr);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// real cid start from 1
|
|
160
|
+
const id = this.contextList.length;
|
|
161
|
+
this.contextList.push(context);
|
|
162
|
+
this.contextToIDMap.set(cStr, id);
|
|
163
|
+
return id;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
updateContext(id, newContext, oldContext) {
|
|
167
|
+
if (this.contextList.length < id) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
this.contextList[id] = newContext;
|
|
171
|
+
let oldCStr = oldContext.toString();
|
|
172
|
+
let newCStr = newContext.toString();
|
|
173
|
+
this.contextToIDMap.delete(oldCStr);
|
|
174
|
+
this.contextToIDMap.set(newCStr, id);
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
getContextID(context) {
|
|
178
|
+
let cStr = context.toString();
|
|
179
|
+
if (this.contextToIDMap.has(cStr)) {
|
|
180
|
+
return this.contextToIDMap.get(cStr);
|
|
181
|
+
}
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
getContext(id) {
|
|
185
|
+
if (id > this.contextList.length) {
|
|
186
|
+
return undefined;
|
|
187
|
+
}
|
|
188
|
+
return this.contextList[id];
|
|
189
|
+
}
|
|
190
|
+
getContextList() {
|
|
191
|
+
return this.contextList;
|
|
192
|
+
}
|
|
193
|
+
dump(m, cg) {
|
|
194
|
+
let content = '';
|
|
195
|
+
this.contextList.forEach((c, i) => {
|
|
196
|
+
content += `Context ${i}:\n`;
|
|
197
|
+
content += `${c.dump(m, cg)}\n`;
|
|
198
|
+
});
|
|
199
|
+
return content;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
exports.ContextCache = ContextCache;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A ContextItem represents a unique context in the program.
|
|
3
|
+
*/
|
|
4
|
+
export interface ContextItem {
|
|
5
|
+
readonly id: number;
|
|
6
|
+
getSignature(): string;
|
|
7
|
+
}
|
|
8
|
+
export declare class CallSiteContextItem implements ContextItem {
|
|
9
|
+
readonly id: number;
|
|
10
|
+
readonly callSiteId: number;
|
|
11
|
+
readonly calleeFuncId: number;
|
|
12
|
+
constructor(id: number, callSiteId: number, calleeFuncId: number);
|
|
13
|
+
getSignature(): string;
|
|
14
|
+
}
|
|
15
|
+
export declare class ObjectContextItem implements ContextItem {
|
|
16
|
+
readonly id: number;
|
|
17
|
+
readonly nodeID: number;
|
|
18
|
+
constructor(id: number, allocationSiteId: number);
|
|
19
|
+
getSignature(): string;
|
|
20
|
+
}
|
|
21
|
+
export declare class FuncContextItem implements ContextItem {
|
|
22
|
+
readonly id: number;
|
|
23
|
+
readonly funcID: number;
|
|
24
|
+
constructor(id: number, funcID: number);
|
|
25
|
+
getSignature(): string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Manages the creation and unique identification of all ContextItems.
|
|
29
|
+
* This ensures that each unique item (based on its signature) has one and only one ID.
|
|
30
|
+
*/
|
|
31
|
+
export declare class ContextItemManager {
|
|
32
|
+
private itemToIdMap;
|
|
33
|
+
private idToItemMap;
|
|
34
|
+
private nextItemId;
|
|
35
|
+
getOrCreateCallSiteItem(callSiteId: number, calleeFuncID: number): CallSiteContextItem;
|
|
36
|
+
getOrCreateObjectItem(allocationSiteId: number): ObjectContextItem;
|
|
37
|
+
getOrCreateFuncItem(calleeFuncID: number): FuncContextItem;
|
|
38
|
+
getItem(id: number): ContextItem | undefined;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=ContextItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextItem.d.ts","sourceRoot":"","sources":["../../../../src/callgraph/pointerAnalysis/context/ContextItem.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,YAAY,IAAI,MAAM,CAAC;CAC1B;AAED,qBAAa,mBAAoB,YAAW,WAAW;IACnD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAElB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAMhE,YAAY,IAAI,MAAM;CAGzB;AAED,qBAAa,iBAAkB,YAAW,WAAW;IACjD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAKhD,YAAY,IAAI,MAAM;CAGzB;AAED,qBAAa,eAAgB,YAAW,WAAW;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKtC,YAAY,IAAI,MAAM;CAGzB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,UAAU,CAAa;IAExB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,mBAAmB;IActF,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,iBAAiB;IAclE,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe;IAc1D,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;CAGtD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
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.ContextItemManager = exports.FuncContextItem = exports.ObjectContextItem = exports.CallSiteContextItem = void 0;
|
|
18
|
+
class CallSiteContextItem {
|
|
19
|
+
constructor(id, callSiteId, calleeFuncId) {
|
|
20
|
+
this.id = id;
|
|
21
|
+
this.callSiteId = callSiteId;
|
|
22
|
+
this.calleeFuncId = calleeFuncId;
|
|
23
|
+
}
|
|
24
|
+
getSignature() {
|
|
25
|
+
return `CS:${this.callSiteId}-${this.calleeFuncId}`;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.CallSiteContextItem = CallSiteContextItem;
|
|
29
|
+
class ObjectContextItem {
|
|
30
|
+
constructor(id, allocationSiteId) {
|
|
31
|
+
this.id = id;
|
|
32
|
+
this.nodeID = allocationSiteId;
|
|
33
|
+
}
|
|
34
|
+
getSignature() {
|
|
35
|
+
return `OBJ:${this.nodeID}`;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.ObjectContextItem = ObjectContextItem;
|
|
39
|
+
class FuncContextItem {
|
|
40
|
+
constructor(id, funcID) {
|
|
41
|
+
this.id = id;
|
|
42
|
+
this.funcID = funcID;
|
|
43
|
+
}
|
|
44
|
+
getSignature() {
|
|
45
|
+
return `FUNC:${this.funcID}`;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.FuncContextItem = FuncContextItem;
|
|
49
|
+
/**
|
|
50
|
+
* Manages the creation and unique identification of all ContextItems.
|
|
51
|
+
* This ensures that each unique item (based on its signature) has one and only one ID.
|
|
52
|
+
*/
|
|
53
|
+
class ContextItemManager {
|
|
54
|
+
constructor() {
|
|
55
|
+
this.itemToIdMap = new Map();
|
|
56
|
+
this.idToItemMap = new Map();
|
|
57
|
+
this.nextItemId = 0;
|
|
58
|
+
}
|
|
59
|
+
getOrCreateCallSiteItem(callSiteId, calleeFuncID) {
|
|
60
|
+
const signature = `CS:${callSiteId}-${calleeFuncID}`;
|
|
61
|
+
if (this.itemToIdMap.has(signature)) {
|
|
62
|
+
const id = this.itemToIdMap.get(signature);
|
|
63
|
+
return this.idToItemMap.get(id);
|
|
64
|
+
}
|
|
65
|
+
const id = this.nextItemId++;
|
|
66
|
+
const item = new CallSiteContextItem(id, callSiteId, calleeFuncID);
|
|
67
|
+
this.itemToIdMap.set(signature, id);
|
|
68
|
+
this.idToItemMap.set(id, item);
|
|
69
|
+
return item;
|
|
70
|
+
}
|
|
71
|
+
getOrCreateObjectItem(allocationSiteId) {
|
|
72
|
+
const signature = `OBJ:${allocationSiteId}`;
|
|
73
|
+
if (this.itemToIdMap.has(signature)) {
|
|
74
|
+
const id = this.itemToIdMap.get(signature);
|
|
75
|
+
return this.idToItemMap.get(id);
|
|
76
|
+
}
|
|
77
|
+
const id = this.nextItemId++;
|
|
78
|
+
const item = new ObjectContextItem(id, allocationSiteId);
|
|
79
|
+
this.itemToIdMap.set(signature, id);
|
|
80
|
+
this.idToItemMap.set(id, item);
|
|
81
|
+
return item;
|
|
82
|
+
}
|
|
83
|
+
getOrCreateFuncItem(calleeFuncID) {
|
|
84
|
+
const signature = `FUNC:${calleeFuncID}`;
|
|
85
|
+
if (this.itemToIdMap.has(signature)) {
|
|
86
|
+
const id = this.itemToIdMap.get(signature);
|
|
87
|
+
return this.idToItemMap.get(id);
|
|
88
|
+
}
|
|
89
|
+
const id = this.nextItemId++;
|
|
90
|
+
const item = new FuncContextItem(id, calleeFuncID);
|
|
91
|
+
this.itemToIdMap.set(signature, id);
|
|
92
|
+
this.idToItemMap.set(id, item);
|
|
93
|
+
return item;
|
|
94
|
+
}
|
|
95
|
+
getItem(id) {
|
|
96
|
+
return this.idToItemMap.get(id);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.ContextItemManager = ContextItemManager;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { CallGraph, FuncID, ICallSite } from '../../model/CallGraph';
|
|
2
|
+
import { Context, ContextCache, ContextID } from './Context';
|
|
3
|
+
import { ContextItemManager } from './ContextItem';
|
|
4
|
+
/**
|
|
5
|
+
* Top layer of context
|
|
6
|
+
*/
|
|
7
|
+
export declare let emptyID: number;
|
|
8
|
+
export interface ContextSelector {
|
|
9
|
+
ctxCache: ContextCache;
|
|
10
|
+
ctxManager: ContextItemManager;
|
|
11
|
+
selectContext(callerContextID: ContextID, callSite: ICallSite, obj: number, calleeFunc: number): ContextID;
|
|
12
|
+
emptyContext(id: number): ContextID;
|
|
13
|
+
getContextID(context: Context): ContextID;
|
|
14
|
+
dump(path: string, cg: CallGraph): void;
|
|
15
|
+
}
|
|
16
|
+
export declare class KCallSiteContextSelector implements ContextSelector {
|
|
17
|
+
private k;
|
|
18
|
+
ctxCache: ContextCache;
|
|
19
|
+
ctxManager: ContextItemManager;
|
|
20
|
+
constructor(k: number);
|
|
21
|
+
selectContext(callerContextID: ContextID, callSite: ICallSite, obj: number, callee: number): ContextID;
|
|
22
|
+
emptyContext(id: number): ContextID;
|
|
23
|
+
getContextID(context: Context): ContextID;
|
|
24
|
+
dump(dir: string, cg: CallGraph): void;
|
|
25
|
+
}
|
|
26
|
+
export declare class KObjContextSelector implements ContextSelector {
|
|
27
|
+
private k;
|
|
28
|
+
ctxCache: ContextCache;
|
|
29
|
+
ctxManager: ContextItemManager;
|
|
30
|
+
constructor(k: number);
|
|
31
|
+
selectContext(callerContextID: ContextID, callSite: ICallSite, obj: number, callee: number): ContextID;
|
|
32
|
+
emptyContext(id: number): ContextID;
|
|
33
|
+
getContextID(context: Context): ContextID;
|
|
34
|
+
dump(dir: string, cg: CallGraph): void;
|
|
35
|
+
}
|
|
36
|
+
export declare class KFuncContextSelector implements ContextSelector {
|
|
37
|
+
private k;
|
|
38
|
+
ctxCache: ContextCache;
|
|
39
|
+
ctxManager: ContextItemManager;
|
|
40
|
+
constructor(k: number);
|
|
41
|
+
selectContext(callerContextID: ContextID, callSite: ICallSite, obj: number, funcID: number): ContextID;
|
|
42
|
+
emptyContext(funcID: FuncID): ContextID;
|
|
43
|
+
getContextID(context: Context): ContextID;
|
|
44
|
+
dump(dir: string, cg: CallGraph): void;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ContextSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextSelector.d.ts","sourceRoot":"","sources":["../../../../src/callgraph/pointerAnalysis/context/ContextSelector.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAmB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAsC,MAAM,WAAW,CAAC;AAClH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAInD;;GAEG;AAEH,eAAO,IAAI,OAAO,EAAE,MAAW,CAAC;AAChC,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,aAAa,CAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3G,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,CAAC;CAC3C;AAED,qBAAa,wBAAyB,YAAW,eAAe;IAC5D,OAAO,CAAC,CAAC,CAAS;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,kBAAkB,CAAC;gBAEnB,CAAC,EAAE,MAAM;IAMd,aAAa,CAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS;IAWtG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS;IAKnC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAIzC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI;CAKhD;AAGD,qBAAa,mBAAoB,YAAW,eAAe;IACvD,OAAO,CAAC,CAAC,CAAS;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,kBAAkB,CAAC;gBAEnB,CAAC,EAAE,MAAM;IAMd,aAAa,CAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS;IActG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS;IAKnC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAIzC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI;CAEhD;AAED,qBAAa,oBAAqB,YAAW,eAAe;IACxD,OAAO,CAAC,CAAC,CAAS;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,kBAAkB,CAAC;gBAEnB,CAAC,EAAE,MAAM;IAMd,aAAa,CAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS;IAUtG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAMvC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAIzC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI;CAKhD"}
|
|
@@ -0,0 +1,138 @@
|
|
|
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
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
20
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
21
|
+
}
|
|
22
|
+
Object.defineProperty(o, k2, desc);
|
|
23
|
+
}) : (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
o[k2] = m[k];
|
|
26
|
+
}));
|
|
27
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
28
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
29
|
+
}) : function(o, v) {
|
|
30
|
+
o["default"] = v;
|
|
31
|
+
});
|
|
32
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
|
+
};
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.KFuncContextSelector = exports.KObjContextSelector = exports.KCallSiteContextSelector = exports.emptyID = void 0;
|
|
44
|
+
const Context_1 = require("./Context");
|
|
45
|
+
const ContextItem_1 = require("./ContextItem");
|
|
46
|
+
const path_1 = __importDefault(require("path"));
|
|
47
|
+
const fs = __importStar(require("fs"));
|
|
48
|
+
/**
|
|
49
|
+
* Top layer of context
|
|
50
|
+
*/
|
|
51
|
+
exports.emptyID = -1;
|
|
52
|
+
class KCallSiteContextSelector {
|
|
53
|
+
constructor(k) {
|
|
54
|
+
this.k = k;
|
|
55
|
+
this.ctxCache = new Context_1.ContextCache();
|
|
56
|
+
this.ctxManager = new ContextItem_1.ContextItemManager();
|
|
57
|
+
}
|
|
58
|
+
selectContext(callerContextID, callSite, obj, callee) {
|
|
59
|
+
let callerContext = this.ctxCache.getContext(callerContextID);
|
|
60
|
+
let calleeFuncID = callSite.getCalleeFuncID();
|
|
61
|
+
if (!callerContext || !calleeFuncID) {
|
|
62
|
+
return Context_1.DUMMY_CID;
|
|
63
|
+
}
|
|
64
|
+
let calleeContext = callerContext.append(callSite.id, calleeFuncID, this.k, this.ctxManager);
|
|
65
|
+
return this.ctxCache.getOrNewContextID(calleeContext);
|
|
66
|
+
}
|
|
67
|
+
emptyContext(id) {
|
|
68
|
+
let emptyContext = Context_1.CallSiteContext.newEmpty();
|
|
69
|
+
return this.ctxCache.getOrNewContextID(emptyContext);
|
|
70
|
+
}
|
|
71
|
+
getContextID(context) {
|
|
72
|
+
return this.ctxCache.getOrNewContextID(context);
|
|
73
|
+
}
|
|
74
|
+
dump(dir, cg) {
|
|
75
|
+
const content = this.ctxCache.dump(this.ctxManager, cg);
|
|
76
|
+
const filePath = path_1.default.join(dir, 'context.txt');
|
|
77
|
+
fs.writeFileSync(filePath, content, 'utf8');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.KCallSiteContextSelector = KCallSiteContextSelector;
|
|
81
|
+
// WIP
|
|
82
|
+
class KObjContextSelector {
|
|
83
|
+
constructor(k) {
|
|
84
|
+
this.k = k;
|
|
85
|
+
this.ctxCache = new Context_1.ContextCache();
|
|
86
|
+
this.ctxManager = new ContextItem_1.ContextItemManager();
|
|
87
|
+
}
|
|
88
|
+
selectContext(callerContextID, callSite, obj, callee) {
|
|
89
|
+
let callerContext = this.ctxCache.getContext(callerContextID);
|
|
90
|
+
if (!callerContext) {
|
|
91
|
+
return Context_1.DUMMY_CID;
|
|
92
|
+
}
|
|
93
|
+
if (obj === exports.emptyID) {
|
|
94
|
+
return callerContextID;
|
|
95
|
+
}
|
|
96
|
+
let calleeContext = callerContext.append(0, obj, this.k, this.ctxManager);
|
|
97
|
+
return this.ctxCache.getOrNewContextID(calleeContext);
|
|
98
|
+
}
|
|
99
|
+
emptyContext(id) {
|
|
100
|
+
let emptyContext = Context_1.ObjContext.newEmpty();
|
|
101
|
+
return this.ctxCache.getOrNewContextID(emptyContext);
|
|
102
|
+
}
|
|
103
|
+
getContextID(context) {
|
|
104
|
+
return this.ctxCache.getOrNewContextID(context);
|
|
105
|
+
}
|
|
106
|
+
dump(dir, cg) {
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.KObjContextSelector = KObjContextSelector;
|
|
110
|
+
class KFuncContextSelector {
|
|
111
|
+
constructor(k) {
|
|
112
|
+
this.k = k;
|
|
113
|
+
this.ctxCache = new Context_1.ContextCache();
|
|
114
|
+
this.ctxManager = new ContextItem_1.ContextItemManager();
|
|
115
|
+
}
|
|
116
|
+
selectContext(callerContextID, callSite, obj, funcID) {
|
|
117
|
+
let callerContext = this.ctxCache.getContext(callerContextID);
|
|
118
|
+
if (!callerContext) {
|
|
119
|
+
return Context_1.DUMMY_CID;
|
|
120
|
+
}
|
|
121
|
+
let calleeContext = callerContext.append(0, funcID, this.k, this.ctxManager);
|
|
122
|
+
return this.ctxCache.getOrNewContextID(calleeContext);
|
|
123
|
+
}
|
|
124
|
+
emptyContext(funcID) {
|
|
125
|
+
let emptyContext = Context_1.FuncContext.newEmpty();
|
|
126
|
+
let calleeContext = emptyContext.append(0, funcID, this.k, this.ctxManager);
|
|
127
|
+
return this.ctxCache.getOrNewContextID(calleeContext);
|
|
128
|
+
}
|
|
129
|
+
getContextID(context) {
|
|
130
|
+
return this.ctxCache.getOrNewContextID(context);
|
|
131
|
+
}
|
|
132
|
+
dump(dir, cg) {
|
|
133
|
+
const content = this.ctxCache.dump(this.ctxManager, cg);
|
|
134
|
+
const filePath = path_1.default.join(dir, 'context.txt');
|
|
135
|
+
fs.writeFileSync(filePath, content, 'utf8');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.KFuncContextSelector = KFuncContextSelector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Expr.d.ts","sourceRoot":"","sources":["../../../src/core/base/Expr.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"Expr.d.ts","sourceRoot":"","sources":["../../../src/core/base/Expr.ts"],"names":[],"mappings":"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"}
|
package/lib/core/base/Expr.js
CHANGED
|
@@ -101,7 +101,8 @@ class AbstractInvokeExpr extends AbstractExpr {
|
|
|
101
101
|
}
|
|
102
102
|
getType() {
|
|
103
103
|
const type = this.methodSignature.getType();
|
|
104
|
-
if (
|
|
104
|
+
if (TypeInference_1.TypeInference.checkType(type, t => t instanceof Type_1.GenericType || t instanceof Type_1.AnyType) &&
|
|
105
|
+
this.realGenericTypes) {
|
|
105
106
|
return TypeInference_1.TypeInference.replaceTypeWithReal(type, this.realGenericTypes);
|
|
106
107
|
}
|
|
107
108
|
return type;
|
|
@@ -292,6 +293,15 @@ class ArkNewExpr extends AbstractExpr {
|
|
|
292
293
|
if (TypeInference_1.TypeInference.isUnclearType(type)) {
|
|
293
294
|
type = TypeInference_1.TypeInference.inferUnclearRefName(className, arkMethod.getDeclaringArkClass());
|
|
294
295
|
}
|
|
296
|
+
if (type instanceof Type_1.AliasType) {
|
|
297
|
+
const originalType = TypeInference_1.TypeInference.replaceAliasType(type);
|
|
298
|
+
if (originalType instanceof Type_1.FunctionType) {
|
|
299
|
+
type = originalType.getMethodSignature().getMethodSubSignature().getReturnType();
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
type = originalType;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
295
305
|
if (type && type instanceof Type_1.ClassType) {
|
|
296
306
|
const instanceType = (_b = this.constructorSignature(type, arkMethod)) !== null && _b !== void 0 ? _b : type;
|
|
297
307
|
this.classType.setClassSignature(instanceType.getClassSignature());
|
package/lib/core/base/Local.js
CHANGED
|
@@ -41,7 +41,7 @@ class Local {
|
|
|
41
41
|
const declaringArkClass = arkMethod.getDeclaringArkClass();
|
|
42
42
|
this.type = new Type_1.ClassType(declaringArkClass.getSignature(), declaringArkClass.getRealTypes());
|
|
43
43
|
}
|
|
44
|
-
else if (TypeInference_1.TypeInference.isUnclearType(this.type)) {
|
|
44
|
+
else if (!this.name.startsWith(Const_1.NAME_PREFIX) && TypeInference_1.TypeInference.isUnclearType(this.type)) {
|
|
45
45
|
const type = (_a = TypeInference_1.TypeInference.inferBaseType(this.name, arkMethod.getDeclaringArkClass())) !== null && _a !== void 0 ? _a : (_b = ModelUtils_1.ModelUtils.findDeclaredLocal(this, arkMethod)) === null || _b === void 0 ? void 0 : _b.getType();
|
|
46
46
|
if (type) {
|
|
47
47
|
this.type = type;
|
|
@@ -38,6 +38,8 @@ export declare class ArkIRTransformer {
|
|
|
38
38
|
tsNodeToValueAndStmts(node: ts.Node): ValueAndStmts;
|
|
39
39
|
private functionDeclarationToStmts;
|
|
40
40
|
private classDeclarationToStmts;
|
|
41
|
+
private parameterPropertyToStmts;
|
|
42
|
+
private parameterToStmts;
|
|
41
43
|
private returnStatementToStmts;
|
|
42
44
|
private blockToStmts;
|
|
43
45
|
private expressionStatementToStmts;
|
|
@@ -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,EAAE,sBAAsB,EAA2F,IAAI,EAAE,MAAM,cAAc,CAAC;AACrJ,OAAO,EAAE,SAAS,EAA6E,MAAM,cAAc,CAAC;AAKpH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,OAAO,EAAE,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AAYjE,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,sBAAsB,EAAE,YAAY,EAAE,CAAC;IACvC,KAAK,EAAE,IAAI,EAAE,CAAC;CACjB,CAAC;AAEF,qBAAa,SAAU,SAAQ,IAAI;gBACnB,IAAI,EAAE,MAAM;IAKjB,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,gBAAgB;IACzB,gBAAuB,2BAA2B,qBAAqB;IACvE,gBAAuB,0BAA0B,yBAAyB;IAC1E,gBAAuB,uCAAuC,SAA0D;IACxH,gBAAuB,wCAAwC,SAA2D;IAC1H,gBAAuB,mCAAmC,SAAuD;IAEjH,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,mBAAmB,CAAsB;gBAErC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS;IAO1D,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC;IAIvB,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAI3C,YAAY,IAAI,KAAK;IAIrB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAInE,aAAa,IAAI,IAAI,EAAE;IAcvB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"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"}
|