arkanalyzer 1.0.52 → 1.0.53
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/Expr.d.ts +7 -4
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +33 -34
- 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 +149 -97
- package/lib/core/common/Builtin.d.ts +2 -0
- package/lib/core/common/Builtin.d.ts.map +1 -1
- package/lib/core/common/Builtin.js +3 -0
- package/lib/core/model/builder/ArkMethodBuilder.d.ts +3 -3
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +5 -5
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +1 -1
- package/lib/save/JsonPrinter.d.ts.map +1 -1
- package/lib/save/JsonPrinter.js +1 -1
- package/lib/save/arkir/ArkIRMethodPrinter.js +1 -1
- package/lib/save/source/SourceMethod.js +1 -1
- package/package.json +2 -2
package/lib/core/base/Expr.d.ts
CHANGED
|
@@ -21,7 +21,8 @@ export declare abstract class AbstractInvokeExpr extends AbstractExpr {
|
|
|
21
21
|
private methodSignature;
|
|
22
22
|
private args;
|
|
23
23
|
private realGenericTypes?;
|
|
24
|
-
|
|
24
|
+
private spreadFlags?;
|
|
25
|
+
constructor(methodSignature: MethodSignature, args: Value[], realGenericTypes?: Type[], spreadFlags?: boolean[]);
|
|
25
26
|
/**
|
|
26
27
|
* Get method Signature. The method signature is consist of ClassSignature and MethodSubSignature.
|
|
27
28
|
* It is the unique flag of a method. It is usually used to compose a expression string in ArkIRTransformer.
|
|
@@ -71,11 +72,13 @@ export declare abstract class AbstractInvokeExpr extends AbstractExpr {
|
|
|
71
72
|
getType(): Type;
|
|
72
73
|
getRealGenericTypes(): Type[] | undefined;
|
|
73
74
|
setRealGenericTypes(realTypes: Type[] | undefined): void;
|
|
75
|
+
getSpreadFlags(): boolean[] | undefined;
|
|
74
76
|
getUses(): Value[];
|
|
77
|
+
protected argsToString(): string;
|
|
75
78
|
}
|
|
76
79
|
export declare class ArkInstanceInvokeExpr extends AbstractInvokeExpr {
|
|
77
80
|
private base;
|
|
78
|
-
constructor(base: Local, methodSignature: MethodSignature, args: Value[], realGenericTypes?: Type[]);
|
|
81
|
+
constructor(base: Local, methodSignature: MethodSignature, args: Value[], realGenericTypes?: Type[], spreadFlags?: boolean[]);
|
|
79
82
|
/**
|
|
80
83
|
* Returns the local of the instance of invoke expression.
|
|
81
84
|
* @returns The local of the invoke expression's instance..
|
|
@@ -93,7 +96,7 @@ export declare class ArkInstanceInvokeExpr extends AbstractInvokeExpr {
|
|
|
93
96
|
inferType(arkMethod: ArkMethod): AbstractInvokeExpr;
|
|
94
97
|
}
|
|
95
98
|
export declare class ArkStaticInvokeExpr extends AbstractInvokeExpr {
|
|
96
|
-
constructor(methodSignature: MethodSignature, args: Value[], realGenericTypes?: Type[]);
|
|
99
|
+
constructor(methodSignature: MethodSignature, args: Value[], realGenericTypes?: Type[], spreadFlags?: boolean[]);
|
|
97
100
|
toString(): string;
|
|
98
101
|
inferType(arkMethod: ArkMethod): AbstractInvokeExpr;
|
|
99
102
|
}
|
|
@@ -117,7 +120,7 @@ export declare class ArkStaticInvokeExpr extends AbstractInvokeExpr {
|
|
|
117
120
|
*/
|
|
118
121
|
export declare class ArkPtrInvokeExpr extends AbstractInvokeExpr {
|
|
119
122
|
private funPtr;
|
|
120
|
-
constructor(methodSignature: MethodSignature, ptr: Local | AbstractFieldRef, args: Value[], realGenericTypes?: Type[]);
|
|
123
|
+
constructor(methodSignature: MethodSignature, ptr: Local | AbstractFieldRef, args: Value[], realGenericTypes?: Type[], spreadFlags?: boolean[]);
|
|
121
124
|
setFunPtrLocal(ptr: Local | AbstractFieldRef): void;
|
|
122
125
|
getFuncPtrLocal(): Local | AbstractFieldRef;
|
|
123
126
|
inferType(arkMethod: ArkMethod): AbstractInvokeExpr;
|
|
@@ -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,EAGH,SAAS,EAGT,SAAS,EAMT,IAAI,EAKP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAuD,MAAM,OAAO,CAAC;AAE9F,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAiB,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C;;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;
|
|
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
|
@@ -37,11 +37,12 @@ class AbstractExpr {
|
|
|
37
37
|
}
|
|
38
38
|
exports.AbstractExpr = AbstractExpr;
|
|
39
39
|
class AbstractInvokeExpr extends AbstractExpr {
|
|
40
|
-
constructor(methodSignature, args, realGenericTypes) {
|
|
40
|
+
constructor(methodSignature, args, realGenericTypes, spreadFlags) {
|
|
41
41
|
super();
|
|
42
42
|
this.methodSignature = methodSignature;
|
|
43
43
|
this.args = args;
|
|
44
44
|
this.realGenericTypes = realGenericTypes;
|
|
45
|
+
this.spreadFlags = spreadFlags;
|
|
45
46
|
}
|
|
46
47
|
/**
|
|
47
48
|
* Get method Signature. The method signature is consist of ClassSignature and MethodSubSignature.
|
|
@@ -115,6 +116,9 @@ class AbstractInvokeExpr extends AbstractExpr {
|
|
|
115
116
|
this.realGenericTypes = realTypes;
|
|
116
117
|
}
|
|
117
118
|
}
|
|
119
|
+
getSpreadFlags() {
|
|
120
|
+
return this.spreadFlags;
|
|
121
|
+
}
|
|
118
122
|
getUses() {
|
|
119
123
|
let uses = [];
|
|
120
124
|
uses.push(...this.args);
|
|
@@ -123,11 +127,27 @@ class AbstractInvokeExpr extends AbstractExpr {
|
|
|
123
127
|
}
|
|
124
128
|
return uses;
|
|
125
129
|
}
|
|
130
|
+
argsToString() {
|
|
131
|
+
const strs = [];
|
|
132
|
+
strs.push('(');
|
|
133
|
+
if (this.getArgs().length > 0) {
|
|
134
|
+
for (let i = 0; i < this.getArgs().length; i++) {
|
|
135
|
+
if (this.spreadFlags && this.spreadFlags[i]) {
|
|
136
|
+
strs.push('...');
|
|
137
|
+
}
|
|
138
|
+
strs.push(this.getArgs()[i].toString());
|
|
139
|
+
strs.push(', ');
|
|
140
|
+
}
|
|
141
|
+
strs.pop();
|
|
142
|
+
}
|
|
143
|
+
strs.push(')');
|
|
144
|
+
return strs.join('');
|
|
145
|
+
}
|
|
126
146
|
}
|
|
127
147
|
exports.AbstractInvokeExpr = AbstractInvokeExpr;
|
|
128
148
|
class ArkInstanceInvokeExpr extends AbstractInvokeExpr {
|
|
129
|
-
constructor(base, methodSignature, args, realGenericTypes) {
|
|
130
|
-
super(methodSignature, args, realGenericTypes);
|
|
149
|
+
constructor(base, methodSignature, args, realGenericTypes, spreadFlags) {
|
|
150
|
+
super(methodSignature, args, realGenericTypes, spreadFlags);
|
|
131
151
|
this.base = base;
|
|
132
152
|
}
|
|
133
153
|
/**
|
|
@@ -162,15 +182,8 @@ class ArkInstanceInvokeExpr extends AbstractInvokeExpr {
|
|
|
162
182
|
strs.push(this.base.toString());
|
|
163
183
|
strs.push('.<');
|
|
164
184
|
strs.push(this.getMethodSignature().toString());
|
|
165
|
-
strs.push('>
|
|
166
|
-
|
|
167
|
-
for (const arg of this.getArgs()) {
|
|
168
|
-
strs.push(arg.toString());
|
|
169
|
-
strs.push(', ');
|
|
170
|
-
}
|
|
171
|
-
strs.pop();
|
|
172
|
-
}
|
|
173
|
-
strs.push(')');
|
|
185
|
+
strs.push('>');
|
|
186
|
+
strs.push(super.argsToString());
|
|
174
187
|
return strs.join('');
|
|
175
188
|
}
|
|
176
189
|
inferType(arkMethod) {
|
|
@@ -179,22 +192,15 @@ class ArkInstanceInvokeExpr extends AbstractInvokeExpr {
|
|
|
179
192
|
}
|
|
180
193
|
exports.ArkInstanceInvokeExpr = ArkInstanceInvokeExpr;
|
|
181
194
|
class ArkStaticInvokeExpr extends AbstractInvokeExpr {
|
|
182
|
-
constructor(methodSignature, args, realGenericTypes) {
|
|
183
|
-
super(methodSignature, args, realGenericTypes);
|
|
195
|
+
constructor(methodSignature, args, realGenericTypes, spreadFlags) {
|
|
196
|
+
super(methodSignature, args, realGenericTypes, spreadFlags);
|
|
184
197
|
}
|
|
185
198
|
toString() {
|
|
186
199
|
let strs = [];
|
|
187
200
|
strs.push('staticinvoke <');
|
|
188
201
|
strs.push(this.getMethodSignature().toString());
|
|
189
|
-
strs.push('>
|
|
190
|
-
|
|
191
|
-
for (const arg of this.getArgs()) {
|
|
192
|
-
strs.push(arg.toString());
|
|
193
|
-
strs.push(', ');
|
|
194
|
-
}
|
|
195
|
-
strs.pop();
|
|
196
|
-
}
|
|
197
|
-
strs.push(')');
|
|
202
|
+
strs.push('>');
|
|
203
|
+
strs.push(super.argsToString());
|
|
198
204
|
return strs.join('');
|
|
199
205
|
}
|
|
200
206
|
inferType(arkMethod) {
|
|
@@ -221,8 +227,8 @@ exports.ArkStaticInvokeExpr = ArkStaticInvokeExpr;
|
|
|
221
227
|
* ```
|
|
222
228
|
*/
|
|
223
229
|
class ArkPtrInvokeExpr extends AbstractInvokeExpr {
|
|
224
|
-
constructor(methodSignature, ptr, args, realGenericTypes) {
|
|
225
|
-
super(methodSignature, args, realGenericTypes);
|
|
230
|
+
constructor(methodSignature, ptr, args, realGenericTypes, spreadFlags) {
|
|
231
|
+
super(methodSignature, args, realGenericTypes, spreadFlags);
|
|
226
232
|
this.funPtr = ptr;
|
|
227
233
|
}
|
|
228
234
|
setFunPtrLocal(ptr) {
|
|
@@ -254,15 +260,8 @@ class ArkPtrInvokeExpr extends AbstractInvokeExpr {
|
|
|
254
260
|
ptrName = this.funPtr.getFieldName();
|
|
255
261
|
}
|
|
256
262
|
strs.push(this.getMethodSignature().toString(ptrName));
|
|
257
|
-
strs.push('>
|
|
258
|
-
|
|
259
|
-
for (const arg of this.getArgs()) {
|
|
260
|
-
strs.push(arg.toString());
|
|
261
|
-
strs.push(', ');
|
|
262
|
-
}
|
|
263
|
-
strs.pop();
|
|
264
|
-
}
|
|
265
|
-
strs.push(')');
|
|
263
|
+
strs.push('>');
|
|
264
|
+
strs.push(super.argsToString());
|
|
266
265
|
return strs.join('');
|
|
267
266
|
}
|
|
268
267
|
getUses() {
|
|
@@ -57,6 +57,7 @@ export declare class ArkValueTransformer {
|
|
|
57
57
|
private newExpressionToValueAndStmts;
|
|
58
58
|
private newArrayExpressionToValueAndStmts;
|
|
59
59
|
private arrayLiteralExpressionToValueAndStmts;
|
|
60
|
+
private generateArrayExprFromLiteral;
|
|
60
61
|
private generateArrayExprAndStmts;
|
|
61
62
|
private prefixUnaryExpressionToValueAndStmts;
|
|
62
63
|
private postfixUnaryExpressionToValueAndStmts;
|
|
@@ -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,EAcT,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;AAOhF,qBAAa,mBAAmB;IACrB,qBAAqB,EAAE,MAAM,CAAK;IACzC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAyB;IACzC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAA+D;IACnF,OAAO,CAAC,wBAAwB,CAAS;gBAE7B,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS;IAQ9F,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC;IAIvB,YAAY,IAAI,KAAK;IAIrB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAInE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,IAAgC,GAAG,KAAK;IAMlF,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAIlD,OAAO,CAAC,YAAY;IAOb,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,aAAa;
|
|
1
|
+
{"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -190,6 +190,9 @@ class ArkValueTransformer {
|
|
|
190
190
|
else if (ts.isConditionalExpression(node)) {
|
|
191
191
|
return this.conditionalExpressionToValueAndStmts(node);
|
|
192
192
|
}
|
|
193
|
+
else if (ts.isSpreadElement(node)) {
|
|
194
|
+
return this.tsNodeToValueAndStmts(node.expression);
|
|
195
|
+
}
|
|
193
196
|
return {
|
|
194
197
|
value: new Local_1.Local(node.getText(this.sourceFile)),
|
|
195
198
|
valueOriginalPositions: [Position_1.FullPosition.buildFromNode(node, this.sourceFile)],
|
|
@@ -201,7 +204,11 @@ class ArkValueTransformer {
|
|
|
201
204
|
let { value, valueOriginalPositions, stmts } = this.tsNodeToValueAndStmts(node);
|
|
202
205
|
stmts.forEach(stmt => allStmts.push(stmt));
|
|
203
206
|
if (IRUtils_1.IRUtils.moreThanOneAddress(value)) {
|
|
204
|
-
({
|
|
207
|
+
({
|
|
208
|
+
value,
|
|
209
|
+
valueOriginalPositions,
|
|
210
|
+
stmts,
|
|
211
|
+
} = this.arkIRTransformer.generateAssignStmtForValue(value, valueOriginalPositions));
|
|
205
212
|
stmts.forEach(stmt => allStmts.push(stmt));
|
|
206
213
|
}
|
|
207
214
|
return { value, valueOriginalPositions, stmts: allStmts };
|
|
@@ -276,11 +283,7 @@ class ArkValueTransformer {
|
|
|
276
283
|
const assignStmtPositions = [newExprLocalPositions[0], newExprLocalPositions[0], ...newExprLocalPositions];
|
|
277
284
|
assignStmt.setOperandOriginalPositions(assignStmtPositions);
|
|
278
285
|
stmts.push(assignStmt);
|
|
279
|
-
return {
|
|
280
|
-
value: newExprLocal,
|
|
281
|
-
valueOriginalPositions: assignStmtPositions,
|
|
282
|
-
stmts: stmts,
|
|
283
|
-
};
|
|
286
|
+
return { value: newExprLocal, valueOriginalPositions: assignStmtPositions, stmts: stmts };
|
|
284
287
|
}
|
|
285
288
|
generateSystemComponentStmt(componentName, args, argPositionsAllFlat, componentExpression, currStmts) {
|
|
286
289
|
const stmts = [...currStmts];
|
|
@@ -322,7 +325,7 @@ class ArkValueTransformer {
|
|
|
322
325
|
anonymous.pos = componentExpression.body.pos;
|
|
323
326
|
// @ts-expect-error: add end info for the created ArrowFunction
|
|
324
327
|
anonymous.end = componentExpression.body.end;
|
|
325
|
-
const { value: builderMethod, valueOriginalPositions: builderMethodPositions } = this.callableNodeToValueAndStmts(anonymous);
|
|
328
|
+
const { value: builderMethod, valueOriginalPositions: builderMethodPositions, } = this.callableNodeToValueAndStmts(anonymous);
|
|
326
329
|
createViewArgs.push(builderMethod);
|
|
327
330
|
createViewArgPositionsAll.push(builderMethodPositions);
|
|
328
331
|
}
|
|
@@ -357,11 +360,11 @@ class ArkValueTransformer {
|
|
|
357
360
|
etsComponentExpressionToValueAndStmts(etsComponentExpression) {
|
|
358
361
|
const stmts = [];
|
|
359
362
|
const componentName = etsComponentExpression.expression.text;
|
|
360
|
-
const {
|
|
363
|
+
const { argValues: argValues, argPositions: argPositions, } = this.parseArguments(stmts, etsComponentExpression.arguments);
|
|
361
364
|
if ((0, EtsConst_1.isEtsSystemComponent)(componentName)) {
|
|
362
|
-
return this.generateSystemComponentStmt(componentName,
|
|
365
|
+
return this.generateSystemComponentStmt(componentName, argValues, argPositions, etsComponentExpression, stmts);
|
|
363
366
|
}
|
|
364
|
-
return this.generateCustomViewStmt(componentName,
|
|
367
|
+
return this.generateCustomViewStmt(componentName, argValues, argPositions, etsComponentExpression, stmts);
|
|
365
368
|
}
|
|
366
369
|
classExpressionToValueAndStmts(classExpression) {
|
|
367
370
|
const declaringArkClass = this.declaringMethod.getDeclaringArkClass();
|
|
@@ -384,7 +387,7 @@ class ArkValueTransformer {
|
|
|
384
387
|
};
|
|
385
388
|
}
|
|
386
389
|
templateExpressionToValueAndStmts(templateExpression) {
|
|
387
|
-
const { stmts, stringTextValues, placeholderValues, stringTextPositions, placeholderPositions } = this.collectTemplateValues(templateExpression);
|
|
390
|
+
const { stmts, stringTextValues, placeholderValues, stringTextPositions, placeholderPositions, } = this.collectTemplateValues(templateExpression);
|
|
388
391
|
const { placeholderStringLocals, placeholderStringLocalPositions, newStmts } = this.processTemplatePlaceholders(placeholderValues, placeholderPositions, stmts);
|
|
389
392
|
return this.combineTemplateParts(stringTextValues, stringTextPositions, placeholderStringLocals, placeholderStringLocalPositions, newStmts);
|
|
390
393
|
}
|
|
@@ -455,7 +458,7 @@ class ArkValueTransformer {
|
|
|
455
458
|
};
|
|
456
459
|
}
|
|
457
460
|
taggedTemplateExpressionToValueAndStmts(taggedTemplateExpression) {
|
|
458
|
-
const { stmts, stringTextValues, placeholderValues, stringTextPositions, placeholderPositions } = this.collectTemplateValues(taggedTemplateExpression.template);
|
|
461
|
+
const { stmts, stringTextValues, placeholderValues, stringTextPositions, placeholderPositions, } = this.collectTemplateValues(taggedTemplateExpression.template);
|
|
459
462
|
const stringTextBaseType = Type_1.StringType.getInstance();
|
|
460
463
|
const stringTextArrayLen = stringTextValues.length;
|
|
461
464
|
const stringTextArrayLenValue = ValueUtil_1.ValueUtil.getOrCreateNumberConst(stringTextArrayLen);
|
|
@@ -467,8 +470,7 @@ class ArkValueTransformer {
|
|
|
467
470
|
const placeholdersArrayLenPosition = Position_1.FullPosition.DEFAULT;
|
|
468
471
|
const { value: placeholdersLocal, valueOriginalPositions: placeholdersLocalPositions, stmts: placeholdersStmts, } = this.generateArrayExprAndStmts(placeholderBaseType, placeholdersArrayLenValue, placeholdersArrayLenPosition, placeholdersArrayLen, placeholderValues, placeholderPositions, templateObjectStmts, Position_1.FullPosition.DEFAULT, true);
|
|
469
472
|
const taggedFuncArgus = {
|
|
470
|
-
realGenericTypes: undefined,
|
|
471
|
-
argValues: [templateObjectLocal, placeholdersLocal],
|
|
473
|
+
realGenericTypes: undefined, argValues: [templateObjectLocal, placeholdersLocal],
|
|
472
474
|
argPositions: [templateObjectLocalPositions[0], placeholdersLocalPositions[0]],
|
|
473
475
|
};
|
|
474
476
|
return this.generateInvokeValueAndStmts(taggedTemplateExpression.tag, taggedFuncArgus, placeholdersStmts, taggedTemplateExpression);
|
|
@@ -491,7 +493,7 @@ class ArkValueTransformer {
|
|
|
491
493
|
const stringTextPositions = [Position_1.FullPosition.buildFromNode(head, this.sourceFile)];
|
|
492
494
|
const placeholderPositions = [];
|
|
493
495
|
for (const templateSpan of templateLiteral.templateSpans) {
|
|
494
|
-
let { value: exprValue, valueOriginalPositions: exprPositions, stmts: exprStmts } = this.tsNodeToValueAndStmts(templateSpan.expression);
|
|
496
|
+
let { value: exprValue, valueOriginalPositions: exprPositions, stmts: exprStmts, } = this.tsNodeToValueAndStmts(templateSpan.expression);
|
|
495
497
|
exprStmts.forEach(stmt => stmts.push(stmt));
|
|
496
498
|
if (IRUtils_1.IRUtils.moreThanOneAddress(exprValue)) {
|
|
497
499
|
({
|
|
@@ -536,7 +538,7 @@ class ArkValueTransformer {
|
|
|
536
538
|
}
|
|
537
539
|
propertyAccessExpressionToValue(propertyAccessExpression) {
|
|
538
540
|
const stmts = [];
|
|
539
|
-
let { value: baseValue, valueOriginalPositions: basePositions, stmts: baseStmts } = this.tsNodeToValueAndStmts(propertyAccessExpression.expression);
|
|
541
|
+
let { value: baseValue, valueOriginalPositions: basePositions, stmts: baseStmts, } = this.tsNodeToValueAndStmts(propertyAccessExpression.expression);
|
|
540
542
|
baseStmts.forEach(stmt => stmts.push(stmt));
|
|
541
543
|
if (IRUtils_1.IRUtils.moreThanOneAddress(baseValue)) {
|
|
542
544
|
({
|
|
@@ -582,7 +584,7 @@ class ArkValueTransformer {
|
|
|
582
584
|
}
|
|
583
585
|
elementAccessExpressionToValueAndStmts(elementAccessExpression) {
|
|
584
586
|
const stmts = [];
|
|
585
|
-
let { value: baseValue, valueOriginalPositions: basePositions, stmts: baseStmts } = this.tsNodeToValueAndStmts(elementAccessExpression.expression);
|
|
587
|
+
let { value: baseValue, valueOriginalPositions: basePositions, stmts: baseStmts, } = this.tsNodeToValueAndStmts(elementAccessExpression.expression);
|
|
586
588
|
baseStmts.forEach(stmt => stmts.push(stmt));
|
|
587
589
|
if (!(baseValue instanceof Local_1.Local)) {
|
|
588
590
|
({
|
|
@@ -654,11 +656,11 @@ class ArkValueTransformer {
|
|
|
654
656
|
const invokeExprPositions = [invokeExprPosition];
|
|
655
657
|
if (calleeValue instanceof Ref_1.ArkInstanceFieldRef) {
|
|
656
658
|
invokeExpr =
|
|
657
|
-
new Expr_1.ArkInstanceInvokeExpr(calleeValue.getBase(), methodSignature, args.argValues, args.realGenericTypes);
|
|
659
|
+
new Expr_1.ArkInstanceInvokeExpr(calleeValue.getBase(), methodSignature, args.argValues, args.realGenericTypes, args.spreadFlags);
|
|
658
660
|
invokeExprPositions.push(...calleePositions.slice(1));
|
|
659
661
|
}
|
|
660
662
|
else {
|
|
661
|
-
invokeExpr = new Expr_1.ArkStaticInvokeExpr(methodSignature, args.argValues, args.realGenericTypes);
|
|
663
|
+
invokeExpr = new Expr_1.ArkStaticInvokeExpr(methodSignature, args.argValues, args.realGenericTypes, args.spreadFlags);
|
|
662
664
|
}
|
|
663
665
|
invokeExprPositions.push(...args.argPositions);
|
|
664
666
|
return {
|
|
@@ -681,11 +683,11 @@ class ArkValueTransformer {
|
|
|
681
683
|
const methodSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSignatureFromMethodName(calleeName);
|
|
682
684
|
if (!((_a = this.getGlobals()) === null || _a === void 0 ? void 0 : _a.has(calleeName)) || calleeValue.getType() instanceof Type_1.FunctionType) {
|
|
683
685
|
// the call to the left value or a value of function type should be ptr invoke expr.
|
|
684
|
-
invokeExpr = new Expr_1.ArkPtrInvokeExpr(methodSignature, calleeValue, args.argValues, args.realGenericTypes);
|
|
686
|
+
invokeExpr = new Expr_1.ArkPtrInvokeExpr(methodSignature, calleeValue, args.argValues, args.realGenericTypes, args.spreadFlags);
|
|
685
687
|
invokeExprPositions.push(...calleePositions.slice(1));
|
|
686
688
|
}
|
|
687
689
|
else {
|
|
688
|
-
invokeExpr = new Expr_1.ArkStaticInvokeExpr(methodSignature, args.argValues, args.realGenericTypes);
|
|
690
|
+
invokeExpr = new Expr_1.ArkStaticInvokeExpr(methodSignature, args.argValues, args.realGenericTypes, args.spreadFlags);
|
|
689
691
|
}
|
|
690
692
|
invokeExprPositions.push(...args.argPositions);
|
|
691
693
|
return {
|
|
@@ -711,7 +713,7 @@ class ArkValueTransformer {
|
|
|
711
713
|
const stmts = [...currStmts];
|
|
712
714
|
const methodSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSignatureFromMethodName(functionNameNode.argumentExpression.getText());
|
|
713
715
|
stmts.pop();
|
|
714
|
-
const invokeExpr = new Expr_1.ArkInstanceInvokeExpr(calleeValue.getBase(), methodSignature, args.argValues, args.realGenericTypes);
|
|
716
|
+
const invokeExpr = new Expr_1.ArkInstanceInvokeExpr(calleeValue.getBase(), methodSignature, args.argValues, args.realGenericTypes, args.spreadFlags);
|
|
715
717
|
const invokeExprPositions = [invokeExprPosition, calleePositions.slice(1)[0],
|
|
716
718
|
...args.argPositions];
|
|
717
719
|
return {
|
|
@@ -724,7 +726,7 @@ class ArkValueTransformer {
|
|
|
724
726
|
const stmts = [...currStmts];
|
|
725
727
|
const { value: newCalleeValue, stmts: newStmts } = this.arkIRTransformer.generateAssignStmtForValue(calleeValue, calleePositions);
|
|
726
728
|
stmts.push(...newStmts);
|
|
727
|
-
const invokeExpr = new Expr_1.ArkPtrInvokeExpr(ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSignatureFromMethodName(newCalleeValue.getName()), newCalleeValue, args.argValues, args.realGenericTypes);
|
|
729
|
+
const invokeExpr = new Expr_1.ArkPtrInvokeExpr(ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSignatureFromMethodName(newCalleeValue.getName()), newCalleeValue, args.argValues, args.realGenericTypes, args.spreadFlags);
|
|
728
730
|
const invokeExprPositions = [invokeExprPosition, calleePositions.slice(1)[0],
|
|
729
731
|
...args.argPositions];
|
|
730
732
|
return {
|
|
@@ -748,41 +750,36 @@ class ArkValueTransformer {
|
|
|
748
750
|
builderMethodIndexes = new Set([1]);
|
|
749
751
|
}
|
|
750
752
|
}
|
|
751
|
-
const {
|
|
752
|
-
return {
|
|
753
|
-
realGenericTypes: realGenericTypes,
|
|
754
|
-
argValues: args,
|
|
755
|
-
argPositions: argPositions,
|
|
756
|
-
};
|
|
753
|
+
const { argValues, argPositions, spreadFlags, } = this.parseArguments(currStmts, callExpression.arguments, builderMethodIndexes);
|
|
754
|
+
return { realGenericTypes, argValues, argPositions, spreadFlags };
|
|
757
755
|
}
|
|
758
756
|
parseArguments(currStmts, argumentNodes, builderMethodIndexes) {
|
|
759
|
-
const
|
|
757
|
+
const argValues = [];
|
|
760
758
|
const argPositions = [];
|
|
759
|
+
let spreadFlags = [];
|
|
761
760
|
if (argumentNodes) {
|
|
761
|
+
spreadFlags = new Array(argumentNodes.length).fill(false);
|
|
762
762
|
for (let i = 0; i < argumentNodes.length; i++) {
|
|
763
|
+
spreadFlags[i] = ts.isSpreadElement(argumentNodes[i]);
|
|
763
764
|
const argument = argumentNodes[i];
|
|
764
765
|
const prevBuilderMethodContextFlag = this.builderMethodContextFlag;
|
|
765
766
|
if (builderMethodIndexes === null || builderMethodIndexes === void 0 ? void 0 : builderMethodIndexes.has(i)) {
|
|
766
767
|
this.builderMethodContextFlag = true;
|
|
767
768
|
this.arkIRTransformer.setBuilderMethodContextFlag(true);
|
|
768
769
|
}
|
|
769
|
-
let { value: argValue, valueOriginalPositions: argPositionsSingle, stmts: argStmts } = this.
|
|
770
|
+
let { value: argValue, valueOriginalPositions: argPositionsSingle, stmts: argStmts, } = this.tsNodeToSingleAddressValueAndStmts(argument);
|
|
770
771
|
this.builderMethodContextFlag = prevBuilderMethodContextFlag;
|
|
771
772
|
this.arkIRTransformer.setBuilderMethodContextFlag(prevBuilderMethodContextFlag);
|
|
772
773
|
argStmts.forEach(s => currStmts.push(s));
|
|
773
|
-
|
|
774
|
-
({
|
|
775
|
-
value: argValue,
|
|
776
|
-
valueOriginalPositions: argPositionsSingle,
|
|
777
|
-
stmts: argStmts,
|
|
778
|
-
} = this.arkIRTransformer.generateAssignStmtForValue(argValue, argPositionsSingle));
|
|
779
|
-
argStmts.forEach(s => currStmts.push(s));
|
|
780
|
-
}
|
|
781
|
-
args.push(argValue);
|
|
774
|
+
argValues.push(argValue);
|
|
782
775
|
argPositions.push(argPositionsSingle[0]);
|
|
783
776
|
}
|
|
784
777
|
}
|
|
785
|
-
return {
|
|
778
|
+
return {
|
|
779
|
+
argValues,
|
|
780
|
+
argPositions,
|
|
781
|
+
spreadFlags: spreadFlags.every((f) => f === false) ? undefined : spreadFlags,
|
|
782
|
+
};
|
|
786
783
|
}
|
|
787
784
|
callableNodeToValueAndStmts(callableNode) {
|
|
788
785
|
const declaringClass = this.declaringMethod.getDeclaringArkClass();
|
|
@@ -829,7 +826,7 @@ class ArkValueTransformer {
|
|
|
829
826
|
newExprStmts.forEach(stmt => stmts.push(stmt));
|
|
830
827
|
const constructorMethodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(TSConst_1.CONSTRUCTOR_NAME);
|
|
831
828
|
const constructorMethodSignature = new ArkSignature_1.MethodSignature(classSignature, constructorMethodSubSignature);
|
|
832
|
-
const {
|
|
829
|
+
const { argValues: argValues, argPositions: argPositions, } = this.parseArguments(stmts, newExpression.arguments);
|
|
833
830
|
const instanceInvokeExpr = new Expr_1.ArkInstanceInvokeExpr(newLocal, constructorMethodSignature, argValues);
|
|
834
831
|
const assignStmt = new Stmt_1.ArkAssignStmt(newLocal, instanceInvokeExpr);
|
|
835
832
|
const assignStmtPositions = [newLocalPositions[0], newLocalPositions[0], ...newLocalPositions, ...argPositions];
|
|
@@ -846,13 +843,13 @@ class ArkValueTransformer {
|
|
|
846
843
|
}
|
|
847
844
|
}
|
|
848
845
|
const stmts = [];
|
|
849
|
-
const {
|
|
846
|
+
const { argValues, argPositions } = this.parseArguments(stmts, newArrayExpression.arguments);
|
|
850
847
|
let argumentsLength = newArrayExpression.arguments ? newArrayExpression.arguments.length : 0;
|
|
851
848
|
let arrayLengthValue;
|
|
852
849
|
let arrayLength = -1;
|
|
853
850
|
let arrayLengthPosition = Position_1.FullPosition.DEFAULT;
|
|
854
|
-
if (argumentsLength === 1 && (
|
|
855
|
-
arrayLengthValue =
|
|
851
|
+
if (argumentsLength === 1 && (argValues[0].getType() instanceof Type_1.NumberType || argValues[0].getType() instanceof Type_1.UnknownType)) {
|
|
852
|
+
arrayLengthValue = argValues[0];
|
|
856
853
|
arrayLengthPosition = argPositions[0];
|
|
857
854
|
}
|
|
858
855
|
else {
|
|
@@ -860,46 +857,75 @@ class ArkValueTransformer {
|
|
|
860
857
|
arrayLength = argumentsLength;
|
|
861
858
|
}
|
|
862
859
|
if (baseType instanceof Type_1.UnknownType) {
|
|
863
|
-
if (argumentsLength > 1 && !(
|
|
864
|
-
baseType =
|
|
860
|
+
if (argumentsLength > 1 && !(argValues[0].getType() instanceof Type_1.UnknownType)) {
|
|
861
|
+
baseType = argValues[0].getType();
|
|
865
862
|
}
|
|
866
863
|
else {
|
|
867
864
|
baseType = Type_1.AnyType.getInstance();
|
|
868
865
|
}
|
|
869
866
|
}
|
|
870
867
|
const newArrayExprPosition = Position_1.FullPosition.buildFromNode(newArrayExpression, this.sourceFile);
|
|
871
|
-
return this.generateArrayExprAndStmts(baseType, arrayLengthValue, arrayLengthPosition, arrayLength,
|
|
868
|
+
return this.generateArrayExprAndStmts(baseType, arrayLengthValue, arrayLengthPosition, arrayLength, argValues, argPositions, stmts, newArrayExprPosition, false);
|
|
872
869
|
}
|
|
873
870
|
arrayLiteralExpressionToValueAndStmts(arrayLiteralExpression) {
|
|
874
871
|
const stmts = [];
|
|
875
|
-
const elementTypes =
|
|
872
|
+
const elementTypes = [];
|
|
876
873
|
const elementValues = [];
|
|
877
874
|
const elementPositions = [];
|
|
878
875
|
const arrayLength = arrayLiteralExpression.elements.length;
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
({
|
|
884
|
-
value: elementValue,
|
|
885
|
-
valueOriginalPositions: elementPosition,
|
|
886
|
-
stmts: elementStmts,
|
|
887
|
-
} = this.arkIRTransformer.generateAssignStmtForValue(elementValue, elementPosition));
|
|
888
|
-
elementStmts.forEach(stmt => stmts.push(stmt));
|
|
876
|
+
let firstSpreadIdx = -1;
|
|
877
|
+
for (let i = 0; i < arrayLength; i++) {
|
|
878
|
+
if (ts.isSpreadElement(arrayLiteralExpression.elements[i]) && firstSpreadIdx === -1) {
|
|
879
|
+
firstSpreadIdx = i;
|
|
889
880
|
}
|
|
881
|
+
const { value: elementValue, valueOriginalPositions: elementPosition, stmts: elementStmts } = this.tsNodeToSingleAddressValueAndStmts(arrayLiteralExpression.elements[i]);
|
|
882
|
+
elementStmts.forEach(stmt => stmts.push(stmt));
|
|
890
883
|
elementValues.push(elementValue);
|
|
891
|
-
elementTypes.
|
|
884
|
+
elementTypes.push(elementValue.getType());
|
|
892
885
|
elementPositions.push(elementPosition[0]);
|
|
893
886
|
}
|
|
887
|
+
const wholePosition = Position_1.FullPosition.buildFromNode(arrayLiteralExpression, this.sourceFile);
|
|
888
|
+
if (firstSpreadIdx === -1) { // only literal elements
|
|
889
|
+
return this.generateArrayExprFromLiteral(elementValues, elementTypes, elementPositions, wholePosition, 0, arrayLength, stmts);
|
|
890
|
+
}
|
|
891
|
+
else if (firstSpreadIdx === 0) {
|
|
892
|
+
if (arrayLength === 1) { // only spread element
|
|
893
|
+
const sliceMethodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(Builtin_1.Builtin.SLICE);
|
|
894
|
+
const sliceMethodSignature = new ArkSignature_1.MethodSignature(Builtin_1.Builtin.ARRAY_CLASS_SIGNATURE, sliceMethodSubSignature);
|
|
895
|
+
const sliceInvokeExpr = new Expr_1.ArkInstanceInvokeExpr(elementValues[0], sliceMethodSignature, []);
|
|
896
|
+
const sliceInvokeExprPositions = [wholePosition, elementPositions[0]];
|
|
897
|
+
return { value: sliceInvokeExpr, valueOriginalPositions: sliceInvokeExprPositions, stmts: stmts };
|
|
898
|
+
}
|
|
899
|
+
else { // spread element start
|
|
900
|
+
const concatMethodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(Builtin_1.Builtin.CONCAT);
|
|
901
|
+
const concatMethodSignature = new ArkSignature_1.MethodSignature(Builtin_1.Builtin.ARRAY_CLASS_SIGNATURE, concatMethodSubSignature);
|
|
902
|
+
const concatInvokeExpr = new Expr_1.ArkInstanceInvokeExpr(elementValues[0], concatMethodSignature, elementValues.slice(1));
|
|
903
|
+
const concatInvokeExprPositions = [wholePosition, ...elementPositions];
|
|
904
|
+
return { value: concatInvokeExpr, valueOriginalPositions: concatInvokeExprPositions, stmts: stmts };
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
else { // contains spread elements and begins with literal elements.
|
|
908
|
+
const beginLiteralValueAndStmts = this.generateArrayExprFromLiteral(elementValues, elementTypes, elementPositions, wholePosition, 0, firstSpreadIdx, stmts);
|
|
909
|
+
const concatMethodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(Builtin_1.Builtin.CONCAT);
|
|
910
|
+
const concatMethodSignature = new ArkSignature_1.MethodSignature(Builtin_1.Builtin.ARRAY_CLASS_SIGNATURE, concatMethodSubSignature);
|
|
911
|
+
const concatInvokeExpr = new Expr_1.ArkInstanceInvokeExpr(beginLiteralValueAndStmts.value, concatMethodSignature, elementValues.slice(firstSpreadIdx));
|
|
912
|
+
const concatInvokeExprPositions = [wholePosition, beginLiteralValueAndStmts.valueOriginalPositions[0],
|
|
913
|
+
...elementPositions.slice(firstSpreadIdx)];
|
|
914
|
+
return { value: concatInvokeExpr, valueOriginalPositions: concatInvokeExprPositions, stmts: beginLiteralValueAndStmts.stmts };
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
generateArrayExprFromLiteral(elementValues, elementTypes, elementPositions, wholePosition, start, end, currStmts) {
|
|
918
|
+
const elementTypesSet = new Set(elementTypes.slice(start, end));
|
|
894
919
|
let baseType = Type_1.AnyType.getInstance();
|
|
895
|
-
if (
|
|
896
|
-
baseType = elementTypes
|
|
920
|
+
if (elementTypesSet.size === 1) {
|
|
921
|
+
baseType = elementTypes[0];
|
|
897
922
|
}
|
|
898
|
-
else if (
|
|
899
|
-
baseType = new Type_1.UnionType(Array.from(
|
|
923
|
+
else if (elementTypesSet.size > 1) {
|
|
924
|
+
baseType = new Type_1.UnionType(Array.from(elementTypesSet));
|
|
900
925
|
}
|
|
901
|
-
const newArrayExprPosition =
|
|
902
|
-
|
|
926
|
+
const newArrayExprPosition = (start === end || (end - start) === elementPositions.length)
|
|
927
|
+
? wholePosition : Position_1.FullPosition.merge(elementPositions[0], elementPositions[end - 1]);
|
|
928
|
+
return this.generateArrayExprAndStmts(baseType, ValueUtil_1.ValueUtil.getOrCreateNumberConst(end - start), Position_1.FullPosition.DEFAULT, end - start, elementValues.slice(start, end), elementPositions.slice(start, end), currStmts, newArrayExprPosition, true);
|
|
903
929
|
}
|
|
904
930
|
generateArrayExprAndStmts(baseType, arrayLengthValue, arrayLengthPosition, arrayLength, initializerValues, initializerPositions, currStmts, newArrayExprPosition, fromLiteral) {
|
|
905
931
|
const stmts = [...currStmts];
|
|
@@ -1018,7 +1044,7 @@ class ArkValueTransformer {
|
|
|
1018
1044
|
}
|
|
1019
1045
|
awaitExpressionToValueAndStmts(awaitExpression) {
|
|
1020
1046
|
const stmts = [];
|
|
1021
|
-
let { value: promiseValue, valueOriginalPositions: promisePositions, stmts: promiseStmts } = this.tsNodeToValueAndStmts(awaitExpression.expression);
|
|
1047
|
+
let { value: promiseValue, valueOriginalPositions: promisePositions, stmts: promiseStmts, } = this.tsNodeToValueAndStmts(awaitExpression.expression);
|
|
1022
1048
|
promiseStmts.forEach(stmt => stmts.push(stmt));
|
|
1023
1049
|
if (IRUtils_1.IRUtils.moreThanOneAddress(promiseValue)) {
|
|
1024
1050
|
({
|
|
@@ -1041,7 +1067,11 @@ class ArkValueTransformer {
|
|
|
1041
1067
|
let yieldPositions = [Position_1.FullPosition.DEFAULT];
|
|
1042
1068
|
let stmts = [];
|
|
1043
1069
|
if (yieldExpression.expression) {
|
|
1044
|
-
({
|
|
1070
|
+
({
|
|
1071
|
+
value: yieldValue,
|
|
1072
|
+
valueOriginalPositions: yieldPositions,
|
|
1073
|
+
stmts: stmts,
|
|
1074
|
+
} = this.tsNodeToValueAndStmts(yieldExpression.expression));
|
|
1045
1075
|
}
|
|
1046
1076
|
const yieldExpr = new Expr_1.ArkYieldExpr(yieldValue);
|
|
1047
1077
|
const yieldExprPositions = [Position_1.FullPosition.buildFromNode(yieldExpression, this.sourceFile), ...yieldPositions];
|
|
@@ -1052,7 +1082,7 @@ class ArkValueTransformer {
|
|
|
1052
1082
|
};
|
|
1053
1083
|
}
|
|
1054
1084
|
deleteExpressionToValueAndStmts(deleteExpression) {
|
|
1055
|
-
const { value: exprValue, valueOriginalPositions: exprPositions, stmts: stmts } = this.tsNodeToValueAndStmts(deleteExpression.expression);
|
|
1085
|
+
const { value: exprValue, valueOriginalPositions: exprPositions, stmts: stmts, } = this.tsNodeToValueAndStmts(deleteExpression.expression);
|
|
1056
1086
|
const deleteExpr = new Expr_1.ArkDeleteExpr(exprValue);
|
|
1057
1087
|
const deleteExprPositions = [Position_1.FullPosition.buildFromNode(deleteExpression, this.sourceFile), ...exprPositions];
|
|
1058
1088
|
return {
|
|
@@ -1062,7 +1092,7 @@ class ArkValueTransformer {
|
|
|
1062
1092
|
};
|
|
1063
1093
|
}
|
|
1064
1094
|
voidExpressionToValueAndStmts(voidExpression) {
|
|
1065
|
-
const { value: exprValue, valueOriginalPositions: exprPositions, stmts: stmts } = this.tsNodeToValueAndStmts(voidExpression.expression);
|
|
1095
|
+
const { value: exprValue, valueOriginalPositions: exprPositions, stmts: stmts, } = this.tsNodeToValueAndStmts(voidExpression.expression);
|
|
1066
1096
|
const { stmts: exprStmts } = this.arkIRTransformer.generateAssignStmtForValue(exprValue, exprPositions);
|
|
1067
1097
|
exprStmts.forEach(stmt => stmts.push(stmt));
|
|
1068
1098
|
return {
|
|
@@ -1078,7 +1108,7 @@ class ArkValueTransformer {
|
|
|
1078
1108
|
return this.tsNodeToValueAndStmts(parenthesizedExpression.expression);
|
|
1079
1109
|
}
|
|
1080
1110
|
typeOfExpressionToValueAndStmts(typeOfExpression) {
|
|
1081
|
-
const { value: exprValue, valueOriginalPositions: exprPositions, stmts: exprStmts } = this.tsNodeToValueAndStmts(typeOfExpression.expression);
|
|
1111
|
+
const { value: exprValue, valueOriginalPositions: exprPositions, stmts: exprStmts, } = this.tsNodeToValueAndStmts(typeOfExpression.expression);
|
|
1082
1112
|
const typeOfExpr = new Expr_1.ArkTypeOfExpr(exprValue);
|
|
1083
1113
|
const typeOfExprPositions = [Position_1.FullPosition.buildFromNode(typeOfExpression, this.sourceFile), ...exprPositions];
|
|
1084
1114
|
return {
|
|
@@ -1089,7 +1119,7 @@ class ArkValueTransformer {
|
|
|
1089
1119
|
}
|
|
1090
1120
|
asExpressionToValueAndStmts(asExpression) {
|
|
1091
1121
|
const stmts = [];
|
|
1092
|
-
let { value: exprValue, valueOriginalPositions: exprPositions, stmts: exprStmts } = this.tsNodeToValueAndStmts(asExpression.expression);
|
|
1122
|
+
let { value: exprValue, valueOriginalPositions: exprPositions, stmts: exprStmts, } = this.tsNodeToValueAndStmts(asExpression.expression);
|
|
1093
1123
|
exprStmts.forEach(stmt => stmts.push(stmt));
|
|
1094
1124
|
if (IRUtils_1.IRUtils.moreThanOneAddress(exprValue)) {
|
|
1095
1125
|
({
|
|
@@ -1108,7 +1138,7 @@ class ArkValueTransformer {
|
|
|
1108
1138
|
};
|
|
1109
1139
|
}
|
|
1110
1140
|
typeAssertionToValueAndStmts(typeAssertion) {
|
|
1111
|
-
const { value: exprValue, valueOriginalPositions: exprPositions, stmts: exprStmts } = this.tsNodeToValueAndStmts(typeAssertion.expression);
|
|
1141
|
+
const { value: exprValue, valueOriginalPositions: exprPositions, stmts: exprStmts, } = this.tsNodeToValueAndStmts(typeAssertion.expression);
|
|
1112
1142
|
const castExpr = new Expr_1.ArkCastExpr(exprValue, this.resolveTypeNode(typeAssertion.type));
|
|
1113
1143
|
const castExprPositions = [Position_1.FullPosition.buildFromNode(typeAssertion, this.sourceFile), ...exprPositions];
|
|
1114
1144
|
return {
|
|
@@ -1142,9 +1172,11 @@ class ArkValueTransformer {
|
|
|
1142
1172
|
leftValueAndStmts = this.identifierToValueAndStmts(leftOpNode, variableDefFlag);
|
|
1143
1173
|
}
|
|
1144
1174
|
else if (ts.isArrayBindingPattern(leftOpNode) || ts.isArrayLiteralExpression(leftOpNode)) {
|
|
1175
|
+
// In declaration, it is ArrayBindingPattern. And in assignment, it is ArrayLiteralExpression.
|
|
1145
1176
|
leftValueAndStmts = this.arrayDestructuringToValueAndStmts(leftOpNode, isConst);
|
|
1146
1177
|
}
|
|
1147
1178
|
else if (ts.isObjectBindingPattern(leftOpNode) || ts.isObjectLiteralExpression(leftOpNode)) {
|
|
1179
|
+
// In declaration, it is ObjectBindingPattern. And in assignment, it is ObjectLiteralExpression.
|
|
1148
1180
|
leftValueAndStmts = this.objectDestructuringToValueAndStmts(leftOpNode, isConst);
|
|
1149
1181
|
}
|
|
1150
1182
|
else {
|
|
@@ -1159,18 +1191,15 @@ class ArkValueTransformer {
|
|
|
1159
1191
|
leftValue.setConstFlag(isConst);
|
|
1160
1192
|
leftValue.setType(declarationType);
|
|
1161
1193
|
}
|
|
1162
|
-
if (leftValue.getType() instanceof Type_1.UnknownType &&
|
|
1163
|
-
!(rightValue.getType() instanceof Type_1.UnknownType) &&
|
|
1194
|
+
if (leftValue.getType() instanceof Type_1.UnknownType && !(rightValue.getType() instanceof Type_1.UnknownType) &&
|
|
1164
1195
|
!(rightValue.getType() instanceof Type_1.UndefinedType)) {
|
|
1165
1196
|
leftValue.setType(rightValue.getType());
|
|
1166
1197
|
}
|
|
1167
1198
|
}
|
|
1168
1199
|
const assignStmt = new Stmt_1.ArkAssignStmt(leftValue, rightValue);
|
|
1169
1200
|
assignStmt.setOperandOriginalPositions([...leftPositions, ...rightPositions]);
|
|
1170
|
-
if (ts.isArrayBindingPattern(leftOpNode) ||
|
|
1171
|
-
ts.
|
|
1172
|
-
ts.isObjectBindingPattern(leftOpNode) ||
|
|
1173
|
-
ts.isObjectLiteralExpression(leftOpNode)) {
|
|
1201
|
+
if (ts.isArrayBindingPattern(leftOpNode) || ts.isArrayLiteralExpression(leftOpNode) ||
|
|
1202
|
+
ts.isObjectBindingPattern(leftOpNode) || ts.isObjectLiteralExpression(leftOpNode)) {
|
|
1174
1203
|
rightStmts.forEach(stmt => stmts.push(stmt));
|
|
1175
1204
|
stmts.push(assignStmt);
|
|
1176
1205
|
leftStmts.forEach(stmt => stmts.push(stmt));
|
|
@@ -1196,7 +1225,11 @@ class ArkValueTransformer {
|
|
|
1196
1225
|
let tempRightStmts = [];
|
|
1197
1226
|
const rightStmts = [];
|
|
1198
1227
|
if (rightOpNode) {
|
|
1199
|
-
({
|
|
1228
|
+
({
|
|
1229
|
+
value: rightValue,
|
|
1230
|
+
valueOriginalPositions: rightPositions,
|
|
1231
|
+
stmts: tempRightStmts,
|
|
1232
|
+
} = this.tsNodeToValueAndStmts(rightOpNode));
|
|
1200
1233
|
tempRightStmts.forEach(stmt => rightStmts.push(stmt));
|
|
1201
1234
|
}
|
|
1202
1235
|
else {
|
|
@@ -1221,25 +1254,44 @@ class ArkValueTransformer {
|
|
|
1221
1254
|
arrayDestructuringToValueAndStmts(arrayDestructuring, isConst = false) {
|
|
1222
1255
|
const stmts = [];
|
|
1223
1256
|
const arrayTempLocal = this.generateTempLocal();
|
|
1224
|
-
const
|
|
1257
|
+
const wholePosition = Position_1.FullPosition.buildFromNode(arrayDestructuring, this.sourceFile);
|
|
1225
1258
|
const elements = arrayDestructuring.elements;
|
|
1226
1259
|
const isArrayBindingPattern = ts.isArrayBindingPattern(arrayDestructuring);
|
|
1227
|
-
let
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1260
|
+
for (let i = 0; i < elements.length; i++) {
|
|
1261
|
+
const element = elements[i];
|
|
1262
|
+
let itemName;
|
|
1263
|
+
if (ts.isSpreadElement(element)) {
|
|
1264
|
+
itemName = element.expression.getText(this.sourceFile);
|
|
1265
|
+
}
|
|
1266
|
+
else if (ts.isBindingElement(element) && element.dotDotDotToken) {
|
|
1267
|
+
itemName = element.name.getText(this.sourceFile);
|
|
1268
|
+
}
|
|
1269
|
+
else {
|
|
1270
|
+
itemName = element.getText(this.sourceFile);
|
|
1271
|
+
}
|
|
1232
1272
|
const targetLocal = isArrayBindingPattern ? this.addNewLocal(itemName) : this.getOrCreateLocal(itemName);
|
|
1233
1273
|
const targetLocalPosition = Position_1.FullPosition.buildFromNode(element, this.sourceFile);
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1274
|
+
if (ts.isSpreadElement(element) || (ts.isBindingElement(element) && element.dotDotDotToken)) {
|
|
1275
|
+
const sliceMethodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(Builtin_1.Builtin.SLICE);
|
|
1276
|
+
const sliceMethodSignature = new ArkSignature_1.MethodSignature(Builtin_1.Builtin.ARRAY_CLASS_SIGNATURE, sliceMethodSubSignature);
|
|
1277
|
+
const sliceInvokeExpr = new Expr_1.ArkInstanceInvokeExpr(arrayTempLocal, sliceMethodSignature, [ValueUtil_1.ValueUtil.getOrCreateNumberConst(i)]);
|
|
1278
|
+
const sliceInvokeExprPositions = [wholePosition, targetLocalPosition];
|
|
1279
|
+
const assignStmt = new Stmt_1.ArkAssignStmt(targetLocal, sliceInvokeExpr);
|
|
1280
|
+
assignStmt.setOperandOriginalPositions([targetLocalPosition, ...sliceInvokeExprPositions]);
|
|
1281
|
+
stmts.push(assignStmt);
|
|
1282
|
+
}
|
|
1283
|
+
else {
|
|
1284
|
+
const arrayRef = new Ref_1.ArkArrayRef(arrayTempLocal, ValueUtil_1.ValueUtil.getOrCreateNumberConst(i));
|
|
1285
|
+
const arrayRefPositions = [wholePosition, wholePosition, Position_1.FullPosition.DEFAULT];
|
|
1286
|
+
isArrayBindingPattern && targetLocal.setConstFlag(isConst);
|
|
1287
|
+
const assignStmt = new Stmt_1.ArkAssignStmt(targetLocal, arrayRef);
|
|
1288
|
+
assignStmt.setOperandOriginalPositions([targetLocalPosition, ...arrayRefPositions]);
|
|
1289
|
+
stmts.push(assignStmt);
|
|
1290
|
+
}
|
|
1239
1291
|
}
|
|
1240
1292
|
return {
|
|
1241
1293
|
value: arrayTempLocal,
|
|
1242
|
-
valueOriginalPositions: [
|
|
1294
|
+
valueOriginalPositions: [wholePosition],
|
|
1243
1295
|
stmts: stmts,
|
|
1244
1296
|
};
|
|
1245
1297
|
}
|
|
@@ -1297,7 +1349,7 @@ class ArkValueTransformer {
|
|
|
1297
1349
|
}
|
|
1298
1350
|
const stmts = [];
|
|
1299
1351
|
const binaryExpressionPosition = Position_1.FullPosition.buildFromNode(binaryExpression, this.sourceFile);
|
|
1300
|
-
const { value: opValue1, valueOriginalPositions: opPositions1, stmts: opStmts1 } = this.tsNodeToSingleAddressValueAndStmts(binaryExpression.left);
|
|
1352
|
+
const { value: opValue1, valueOriginalPositions: opPositions1, stmts: opStmts1, } = this.tsNodeToSingleAddressValueAndStmts(binaryExpression.left);
|
|
1301
1353
|
opStmts1.forEach(stmt => stmts.push(stmt));
|
|
1302
1354
|
if (operatorToken.kind === ts.SyntaxKind.InstanceOfKeyword) {
|
|
1303
1355
|
const instanceOfExpr = new Expr_1.ArkInstanceOfExpr(opValue1, new Type_1.UnclearReferenceType(binaryExpression.right.getText(this.sourceFile)));
|
|
@@ -1310,7 +1362,7 @@ class ArkValueTransformer {
|
|
|
1310
1362
|
stmts: stmts,
|
|
1311
1363
|
};
|
|
1312
1364
|
}
|
|
1313
|
-
const { value: opValue2, valueOriginalPositions: opPositions2, stmts: opStmts2 } = this.tsNodeToSingleAddressValueAndStmts(binaryExpression.right);
|
|
1365
|
+
const { value: opValue2, valueOriginalPositions: opPositions2, stmts: opStmts2, } = this.tsNodeToSingleAddressValueAndStmts(binaryExpression.right);
|
|
1314
1366
|
opStmts2.forEach(stmt => stmts.push(stmt));
|
|
1315
1367
|
let exprValue;
|
|
1316
1368
|
let exprValuePositions = [binaryExpressionPosition];
|
|
@@ -1341,9 +1393,9 @@ class ArkValueTransformer {
|
|
|
1341
1393
|
}
|
|
1342
1394
|
compoundAssignmentToValueAndStmts(binaryExpression) {
|
|
1343
1395
|
const stmts = [];
|
|
1344
|
-
let { value: leftValue, valueOriginalPositions: leftPositions, stmts: leftStmts } = this.tsNodeToValueAndStmts(binaryExpression.left);
|
|
1396
|
+
let { value: leftValue, valueOriginalPositions: leftPositions, stmts: leftStmts, } = this.tsNodeToValueAndStmts(binaryExpression.left);
|
|
1345
1397
|
leftStmts.forEach(stmt => stmts.push(stmt));
|
|
1346
|
-
let { value: rightValue, valueOriginalPositions: rightPositions, stmts: rightStmts } = this.tsNodeToValueAndStmts(binaryExpression.right);
|
|
1398
|
+
let { value: rightValue, valueOriginalPositions: rightPositions, stmts: rightStmts, } = this.tsNodeToValueAndStmts(binaryExpression.right);
|
|
1347
1399
|
rightStmts.forEach(stmt => stmts.push(stmt));
|
|
1348
1400
|
if (IRUtils_1.IRUtils.moreThanOneAddress(leftValue) && IRUtils_1.IRUtils.moreThanOneAddress(rightValue)) {
|
|
1349
1401
|
const { value: newRightValue, valueOriginalPositions: newRightPositions, stmts: rightStmts, } = this.arkIRTransformer.generateAssignStmtForValue(rightValue, rightPositions);
|
|
@@ -1411,7 +1463,7 @@ class ArkValueTransformer {
|
|
|
1411
1463
|
}
|
|
1412
1464
|
conditionToValueAndStmts(condition) {
|
|
1413
1465
|
const stmts = [];
|
|
1414
|
-
let { value: conditionValue, valueOriginalPositions: conditionPositions, stmts: conditionStmts } = this.tsNodeToValueAndStmts(condition);
|
|
1466
|
+
let { value: conditionValue, valueOriginalPositions: conditionPositions, stmts: conditionStmts, } = this.tsNodeToValueAndStmts(condition);
|
|
1415
1467
|
conditionStmts.forEach(stmt => stmts.push(stmt));
|
|
1416
1468
|
let conditionExpr;
|
|
1417
1469
|
if (conditionValue instanceof Expr_1.AbstractBinopExpr && this.isRelationalOperator(conditionValue.getOperator())) {
|
|
@@ -30,6 +30,8 @@ export declare class Builtin {
|
|
|
30
30
|
static ITERATOR_RESULT_CLASS_TYPE: ClassType;
|
|
31
31
|
static TO_STRING: string;
|
|
32
32
|
static TO_STRING_METHOD_SIGNATURE: MethodSignature;
|
|
33
|
+
static SLICE: string;
|
|
34
|
+
static CONCAT: string;
|
|
33
35
|
private static buildBuiltInClasses;
|
|
34
36
|
private static buildBuiltInClassesFileSignature;
|
|
35
37
|
static buildBuiltInClassSignature(className: string): ClassSignature;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builtin.d.ts","sourceRoot":"","sources":["../../../src/core/common/Builtin.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,SAAS,EAA2B,MAAM,cAAc,CAAC;AAElE,qBAAa,OAAO;IAGhB,OAAc,MAAM,SAAY;IAChC,OAAc,KAAK,SAAW;IAC9B,OAAc,GAAG,SAAS;IAC1B,OAAc,GAAG,SAAS;IAC1B,OAAc,MAAM,SAAY;IAEhC,OAAc,gBAAgB,cAA8B;IAG5D,OAAc,kBAAkB,SAAY;IAC5C,OAAc,eAAe,SAAkB;IAE/C,OAAc,+BAA+B,gBAA8C;IAC3F,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,qBAAqB,iBAA+C;IAClF,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,4BAA4B,8BAAwC;IAGlF,OAAc,iBAAiB,SAAqB;IACpD,OAAc,QAAQ,SAAsB;IAC5C,OAAc,aAAa,SAAU;IACrC,OAAc,eAAe,SAAoB;IACjD,OAAc,oBAAoB,SAAU;IAC5C,OAAc,qBAAqB,SAAW;IAE9C,OAAc,wBAAwB,iBAAkD;IACxF,OAAc,+BAA+B,iBAAyD;IACtG,OAAc,mBAAmB,YAAwE;IACzG,OAAc,0BAA0B,YAA+E;IAGvH,OAAc,SAAS,SAAc;IACrC,OAAc,0BAA0B,kBAGtC;
|
|
1
|
+
{"version":3,"file":"Builtin.d.ts","sourceRoot":"","sources":["../../../src/core/common/Builtin.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,SAAS,EAA2B,MAAM,cAAc,CAAC;AAElE,qBAAa,OAAO;IAGhB,OAAc,MAAM,SAAY;IAChC,OAAc,KAAK,SAAW;IAC9B,OAAc,GAAG,SAAS;IAC1B,OAAc,GAAG,SAAS;IAC1B,OAAc,MAAM,SAAY;IAEhC,OAAc,gBAAgB,cAA8B;IAG5D,OAAc,kBAAkB,SAAY;IAC5C,OAAc,eAAe,SAAkB;IAE/C,OAAc,+BAA+B,gBAA8C;IAC3F,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,qBAAqB,iBAA+C;IAClF,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,4BAA4B,8BAAwC;IAGlF,OAAc,iBAAiB,SAAqB;IACpD,OAAc,QAAQ,SAAsB;IAC5C,OAAc,aAAa,SAAU;IACrC,OAAc,eAAe,SAAoB;IACjD,OAAc,oBAAoB,SAAU;IAC5C,OAAc,qBAAqB,SAAW;IAE9C,OAAc,wBAAwB,iBAAkD;IACxF,OAAc,+BAA+B,iBAAyD;IACtG,OAAc,mBAAmB,YAAwE;IACzG,OAAc,0BAA0B,YAA+E;IAGvH,OAAc,SAAS,SAAc;IACrC,OAAc,0BAA0B,kBAGtC;IAGF,OAAc,KAAK,SAAW;IAC9B,OAAc,MAAM,SAAY;IAEhC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC,OAAO,CAAC,MAAM,CAAC,gCAAgC;WAIjC,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAI3E,OAAO,CAAC,MAAM,CAAC,6BAA6B;WAU9B,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAG3D"}
|
|
@@ -83,3 +83,6 @@ Builtin.ITERATOR_RESULT_CLASS_TYPE = new Type_1.ClassType(_a.ITERATOR_RESULT_CLA
|
|
|
83
83
|
// constants for string
|
|
84
84
|
Builtin.TO_STRING = 'toString';
|
|
85
85
|
Builtin.TO_STRING_METHOD_SIGNATURE = new ArkSignature_1.MethodSignature(ArkSignature_1.ClassSignature.DEFAULT, new ArkSignature_1.MethodSubSignature(_a.TO_STRING, [], Type_1.StringType.getInstance(), false));
|
|
86
|
+
// constants for array
|
|
87
|
+
Builtin.SLICE = 'slice';
|
|
88
|
+
Builtin.CONCAT = 'concat';
|
|
@@ -36,7 +36,7 @@ export declare class MethodParameter implements Value {
|
|
|
36
36
|
private name;
|
|
37
37
|
private type;
|
|
38
38
|
private optional;
|
|
39
|
-
private
|
|
39
|
+
private restFlag;
|
|
40
40
|
private objElements;
|
|
41
41
|
private arrayElements;
|
|
42
42
|
constructor();
|
|
@@ -46,8 +46,8 @@ export declare class MethodParameter implements Value {
|
|
|
46
46
|
setType(type: Type): void;
|
|
47
47
|
isOptional(): boolean;
|
|
48
48
|
setOptional(optional: boolean): void;
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
isRest(): boolean;
|
|
50
|
+
setRestFlag(restFlag: boolean): void;
|
|
51
51
|
addObjElement(element: ObjectBindingPatternParameter): void;
|
|
52
52
|
getObjElements(): ObjectBindingPatternParameter[];
|
|
53
53
|
setObjElements(objElements: ObjectBindingPatternParameter[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAa,IAAI,EAAe,MAAM,iBAAiB,CAAC;AAG/D,OAAO,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAgBjC,OAAO,EAAkE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvG,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAgBzC,MAAM,MAAM,cAAc,GACpB,EAAE,CAAC,mBAAmB,GACtB,EAAE,CAAC,iBAAiB,GACpB,EAAE,CAAC,sBAAsB,GACzB,EAAE,CAAC,aAAa,GAChB,EAAE,CAAC,mBAAmB,GACtB,EAAE,CAAC,kBAAkB,GACrB,EAAE,CAAC,eAAe,GAClB,EAAE,CAAC,6BAA6B,GAChC,EAAE,CAAC,wBAAwB,GAC3B,EAAE,CAAC,gBAAgB,CAAC;AAE1B,wBAAgB,iCAAiC,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,GAAG,IAAI,CAYxJ;AAED,wBAAgB,0BAA0B,CACtC,UAAU,EAAE,cAAc,EAC1B,cAAc,EAAE,QAAQ,EACxB,GAAG,EAAE,SAAS,EACd,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,eAAe,CAAC,EAAE,SAAS,GAC5B,IAAI,CAkDN;AAwDD,qBAAa,6BAA6B;IACtC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,QAAQ,CAAkB;;IAI3B,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,eAAe,IAAI,MAAM;IAIzB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI3C,UAAU,IAAI,OAAO;IAIrB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;CAG9C;AAED,qBAAa,4BAA4B;IACrC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,QAAQ,CAAkB;;IAI3B,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,eAAe,IAAI,MAAM;IAIzB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI3C,UAAU,IAAI,OAAO;IAIrB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;CAG9C;AAED,qBAAa,eAAgB,YAAW,KAAK;IACzC,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -239,7 +239,7 @@ class MethodParameter {
|
|
|
239
239
|
constructor() {
|
|
240
240
|
this.name = '';
|
|
241
241
|
this.optional = false;
|
|
242
|
-
this.
|
|
242
|
+
this.restFlag = false;
|
|
243
243
|
this.objElements = [];
|
|
244
244
|
this.arrayElements = [];
|
|
245
245
|
}
|
|
@@ -261,11 +261,11 @@ class MethodParameter {
|
|
|
261
261
|
setOptional(optional) {
|
|
262
262
|
this.optional = optional;
|
|
263
263
|
}
|
|
264
|
-
|
|
265
|
-
return this.
|
|
264
|
+
isRest() {
|
|
265
|
+
return this.restFlag;
|
|
266
266
|
}
|
|
267
|
-
|
|
268
|
-
this.
|
|
267
|
+
setRestFlag(restFlag) {
|
|
268
|
+
this.restFlag = restFlag;
|
|
269
269
|
}
|
|
270
270
|
addObjElement(element) {
|
|
271
271
|
this.objElements.push(element);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builderUtils.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/builderUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EACH,SAAS,EAIT,WAAW,EAGX,IAAI,EAIP,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"builderUtils.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/builderUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EACH,SAAS,EAIT,WAAW,EAGX,IAAI,EAIP,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAGH,eAAe,EAElB,MAAM,oBAAoB,CAAC;AAyB5B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,GAAG,MAAM,CAUlE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,GAAG,MAAM,CAYxF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAUxF;AA2BD,wBAAgB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAUpD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxG;AAED,wBAAgB,mBAAmB,CAC/B,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,WAAW,EAAE,SAAS,GAAG,QAAQ,GAClC,WAAW,EAAE,CAyBf;AA4ED,wBAAgB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,eAAe,EAAE,CA+C3J;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAsDhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAMlG;AAED,wBAAgB,WAAW,CACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,EACnD,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAC7C,IAAI,CA8FN;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAiDxD"}
|
|
@@ -286,7 +286,7 @@ function buildParameters(params, arkInstance, sourceFile) {
|
|
|
286
286
|
}
|
|
287
287
|
// dotDotDotToken
|
|
288
288
|
if (parameter.dotDotDotToken) {
|
|
289
|
-
methodParameter.
|
|
289
|
+
methodParameter.setRestFlag(true);
|
|
290
290
|
}
|
|
291
291
|
// modifiers
|
|
292
292
|
if (parameter.modifiers) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonPrinter.d.ts","sourceRoot":"","sources":["../../src/save/JsonPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"JsonPrinter.d.ts","sourceRoot":"","sources":["../../src/save/JsonPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAuFhD,qBAAa,WAAY,SAAQ,OAAO;IACxB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO;IAI7B,IAAI,IAAI,MAAM;IAKrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,aAAa;IAgHrB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,cAAc;IAwGtB,OAAO,CAAC,aAAa;CAuCxB"}
|
package/lib/save/JsonPrinter.js
CHANGED
|
@@ -93,7 +93,7 @@ class JsonPrinter extends Printer_1.Printer {
|
|
|
93
93
|
name: parameter.getName(),
|
|
94
94
|
type: this.serializeType(parameter.getType()),
|
|
95
95
|
isOptional: parameter.isOptional(),
|
|
96
|
-
isRest: parameter.
|
|
96
|
+
isRest: parameter.isRest(),
|
|
97
97
|
};
|
|
98
98
|
}
|
|
99
99
|
serializeImportInfo(importInfo) {
|
|
@@ -95,7 +95,7 @@ class ArkIRMethodPrinter extends BasePrinter_1.BasePrinter {
|
|
|
95
95
|
let parameters = [];
|
|
96
96
|
method.getParameters().forEach(parameter => {
|
|
97
97
|
let str = parameter.getName();
|
|
98
|
-
if (parameter.
|
|
98
|
+
if (parameter.isRest()) {
|
|
99
99
|
str = `...${parameter.getName()}`;
|
|
100
100
|
}
|
|
101
101
|
if (parameter.isOptional()) {
|
|
@@ -142,7 +142,7 @@ class SourceMethod extends SourceBase_1.SourceBase {
|
|
|
142
142
|
.getParameters()
|
|
143
143
|
.forEach(parameter => {
|
|
144
144
|
let str = parameter.getName();
|
|
145
|
-
if (parameter.
|
|
145
|
+
if (parameter.isRest()) {
|
|
146
146
|
str = `...${parameter.getName()}`;
|
|
147
147
|
}
|
|
148
148
|
if (parameter.isOptional()) {
|