arkanalyzer 1.0.70 → 1.0.72
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/Scene.js +1 -1
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +26 -15
- package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/TrapBuilder.js +7 -1
- package/lib/core/model/ArkMetadata.d.ts +7 -1
- package/lib/core/model/ArkMetadata.d.ts.map +1 -1
- package/lib/core/model/ArkMetadata.js +11 -1
- package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkClassBuilder.js +50 -17
- package/package.json +2 -2
package/lib/Scene.js
CHANGED
|
@@ -309,7 +309,7 @@ class Scene {
|
|
|
309
309
|
for (const cls of ModelUtils_1.ModelUtils.getAllClassesInFile(file)) {
|
|
310
310
|
(0, ArkMethodBuilder_1.buildDefaultConstructor)(cls);
|
|
311
311
|
const constructor = cls.getMethodWithName(TSConst_1.CONSTRUCTOR_NAME);
|
|
312
|
-
if (constructor !== null) {
|
|
312
|
+
if (constructor !== null && !cls.isDefaultArkClass()) {
|
|
313
313
|
(0, ArkMethodBuilder_1.replaceSuper2Constructor)(constructor);
|
|
314
314
|
(0, ArkMethodBuilder_1.addInitInConstructor)(constructor);
|
|
315
315
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1394,30 +1394,41 @@ class ArkValueTransformer {
|
|
|
1394
1394
|
}
|
|
1395
1395
|
compoundAssignmentToValueAndStmts(binaryExpression) {
|
|
1396
1396
|
const stmts = [];
|
|
1397
|
-
|
|
1397
|
+
const { value: leftValueOrig, valueOriginalPositions: leftPositionsOrig, stmts: leftStmts } = this.tsNodeToValueAndStmts(binaryExpression.left);
|
|
1398
1398
|
leftStmts.forEach(stmt => stmts.push(stmt));
|
|
1399
|
-
let
|
|
1399
|
+
let leftValue;
|
|
1400
|
+
let leftPositions;
|
|
1401
|
+
if (leftValueOrig instanceof Ref_1.AbstractFieldRef) {
|
|
1402
|
+
const tempLocal = this.generateTempLocal();
|
|
1403
|
+
const readRefStmt = new Stmt_1.ArkAssignStmt(tempLocal, leftValueOrig);
|
|
1404
|
+
stmts.push(readRefStmt);
|
|
1405
|
+
leftValue = tempLocal;
|
|
1406
|
+
leftPositions = [leftPositionsOrig[0]];
|
|
1407
|
+
}
|
|
1408
|
+
else {
|
|
1409
|
+
leftValue = leftValueOrig;
|
|
1410
|
+
leftPositions = leftPositionsOrig;
|
|
1411
|
+
}
|
|
1412
|
+
const { value: rightValue, valueOriginalPositions: rightPositions, stmts: rightStmts } = this.tsNodeToSingleAddressValueAndStmts(binaryExpression.right);
|
|
1400
1413
|
rightStmts.forEach(stmt => stmts.push(stmt));
|
|
1401
|
-
let leftOpValue;
|
|
1402
|
-
let leftOpPositions;
|
|
1403
1414
|
const operator = this.compoundAssignmentTokenToBinaryOperator(binaryExpression.operatorToken.kind);
|
|
1404
1415
|
if (operator) {
|
|
1405
1416
|
const exprValue = new Expr_1.ArkNormalBinopExpr(leftValue, rightValue, operator);
|
|
1406
1417
|
const exprValuePosition = Position_1.FullPosition.buildFromNode(binaryExpression, this.sourceFile);
|
|
1407
|
-
const
|
|
1408
|
-
assignStmt.
|
|
1418
|
+
const assignTarget = leftValueOrig instanceof Ref_1.AbstractFieldRef ? leftValueOrig : leftValue;
|
|
1419
|
+
const assignStmt = new Stmt_1.ArkAssignStmt(assignTarget, exprValue);
|
|
1420
|
+
assignStmt.setOperandOriginalPositions([
|
|
1421
|
+
...(assignTarget === leftValueOrig ? leftPositionsOrig : leftPositions),
|
|
1422
|
+
exprValuePosition,
|
|
1423
|
+
...leftPositions,
|
|
1424
|
+
...rightPositions
|
|
1425
|
+
]);
|
|
1409
1426
|
stmts.push(assignStmt);
|
|
1410
|
-
leftOpValue = leftValue;
|
|
1411
|
-
leftOpPositions = leftPositions;
|
|
1412
|
-
}
|
|
1413
|
-
else {
|
|
1414
|
-
leftOpValue = ValueUtil_1.ValueUtil.getUndefinedConst();
|
|
1415
|
-
leftOpPositions = [leftPositions[0]];
|
|
1416
1427
|
}
|
|
1417
1428
|
return {
|
|
1418
|
-
value:
|
|
1419
|
-
valueOriginalPositions:
|
|
1420
|
-
stmts: stmts
|
|
1429
|
+
value: leftValueOrig,
|
|
1430
|
+
valueOriginalPositions: leftPositionsOrig,
|
|
1431
|
+
stmts: stmts
|
|
1421
1432
|
};
|
|
1422
1433
|
}
|
|
1423
1434
|
compoundAssignmentTokenToBinaryOperator(token) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrapBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/TrapBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"TrapBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/TrapBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAcvC,OAAO,EAAE,YAAY,EAAuB,MAAM,cAAc,CAAC;AAKjE;;GAEG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,+BAA+B,CAAoB;IAC3D,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,sBAAsB,CAAgC;IAC9D,OAAO,CAAC,sBAAsB,CAAoB;gBAEtC,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EAChG,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC;IAQnC,UAAU,IAAI,IAAI,EAAE;IAS3B,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,qBAAqB;IAkC7B,OAAO,CAAC,yBAAyB;IAyBjC,OAAO,CAAC,+BAA+B;IAMvC,OAAO,CAAC,qBAAqB;IA+C7B,OAAO,CAAC,wBAAwB;IA8ChC,OAAO,CAAC,eAAe;IAmCvB,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,QAAQ;CAoBnB"}
|
|
@@ -400,7 +400,13 @@ class TrapBuilder {
|
|
|
400
400
|
else if (sourceStmt instanceof Stmt_1.ArkThrowStmt) {
|
|
401
401
|
return new Stmt_1.ArkThrowStmt(sourceStmt.getOp());
|
|
402
402
|
}
|
|
403
|
-
|
|
403
|
+
else if (sourceStmt instanceof Stmt_1.ArkAliasTypeDefineStmt) {
|
|
404
|
+
return new Stmt_1.ArkAliasTypeDefineStmt(sourceStmt.getAliasType(), sourceStmt.getAliasTypeExpr());
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
logger.error(`unsupported statement type`);
|
|
408
|
+
return null;
|
|
409
|
+
}
|
|
404
410
|
}
|
|
405
411
|
}
|
|
406
412
|
exports.TrapBuilder = TrapBuilder;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { FullPosition } from '../base/Position';
|
|
2
2
|
export declare enum ArkMetadataKind {
|
|
3
3
|
LEADING_COMMENTS = 0,
|
|
4
|
-
TRAILING_COMMENTS = 1
|
|
4
|
+
TRAILING_COMMENTS = 1,
|
|
5
|
+
ENUM_INIT_TYPE_USER = 2
|
|
5
6
|
}
|
|
6
7
|
export interface ArkMetadataType {
|
|
7
8
|
}
|
|
@@ -29,4 +30,9 @@ export declare class CommentsMetadata implements ArkMetadataType {
|
|
|
29
30
|
constructor(comments: CommentItem[]);
|
|
30
31
|
getComments(): CommentItem[];
|
|
31
32
|
}
|
|
33
|
+
export declare class EnumInitTypeUserMetadata implements ArkMetadataType {
|
|
34
|
+
private originTypeUser;
|
|
35
|
+
constructor(originTypeUser: boolean);
|
|
36
|
+
isUserDefined(): boolean;
|
|
37
|
+
}
|
|
32
38
|
//# sourceMappingURL=ArkMetadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkMetadata.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkMetadata.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,oBAAY,eAAe;IACvB,gBAAgB,IAAA;IAChB,iBAAiB,IAAA;
|
|
1
|
+
{"version":3,"file":"ArkMetadata.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkMetadata.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,oBAAY,eAAe;IACvB,gBAAgB,IAAA;IAChB,iBAAiB,IAAA;IACjB,mBAAmB,IAAA;CACtB;AAED,MAAM,WAAW,eAAe;CAAI;AAEpC;;;;;;;;;GASG;AACH,qBAAa,WAAW;IACpB,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEpD,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,GAAG,SAAS;IAI/D,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI;CAM1E;AAED,MAAM,MAAM,WAAW,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;CAC1B,CAAC;AAEF,qBAAa,gBAAiB,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAqB;gBAEzB,QAAQ,EAAE,WAAW,EAAE;IAI5B,WAAW,IAAI,WAAW,EAAE;CAGtC;AAED,qBAAa,wBAAyB,YAAW,eAAe;IAC5D,OAAO,CAAC,cAAc,CAAU;gBAEpB,cAAc,EAAE,OAAO;IAI5B,aAAa,IAAI,OAAO;CAGlC"}
|
|
@@ -14,11 +14,12 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.CommentsMetadata = exports.ArkMetadata = exports.ArkMetadataKind = void 0;
|
|
17
|
+
exports.EnumInitTypeUserMetadata = exports.CommentsMetadata = exports.ArkMetadata = exports.ArkMetadataKind = void 0;
|
|
18
18
|
var ArkMetadataKind;
|
|
19
19
|
(function (ArkMetadataKind) {
|
|
20
20
|
ArkMetadataKind[ArkMetadataKind["LEADING_COMMENTS"] = 0] = "LEADING_COMMENTS";
|
|
21
21
|
ArkMetadataKind[ArkMetadataKind["TRAILING_COMMENTS"] = 1] = "TRAILING_COMMENTS";
|
|
22
|
+
ArkMetadataKind[ArkMetadataKind["ENUM_INIT_TYPE_USER"] = 2] = "ENUM_INIT_TYPE_USER";
|
|
22
23
|
})(ArkMetadataKind = exports.ArkMetadataKind || (exports.ArkMetadataKind = {}));
|
|
23
24
|
/**
|
|
24
25
|
* ArkMetadata
|
|
@@ -53,3 +54,12 @@ class CommentsMetadata {
|
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
exports.CommentsMetadata = CommentsMetadata;
|
|
57
|
+
class EnumInitTypeUserMetadata {
|
|
58
|
+
constructor(originTypeUser) {
|
|
59
|
+
this.originTypeUser = originTypeUser;
|
|
60
|
+
}
|
|
61
|
+
isUserDefined() {
|
|
62
|
+
return this.originTypeUser;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.EnumInitTypeUserMetadata = EnumInitTypeUserMetadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkClassBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkClassBuilder.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAmE,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ArkClassBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkClassBuilder.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAmE,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;AA+BtD,MAAM,MAAM,aAAa,GACnB,EAAE,CAAC,gBAAgB,GACnB,EAAE,CAAC,oBAAoB,GACvB,EAAE,CAAC,eAAe,GAClB,EAAE,CAAC,eAAe,GAClB,EAAE,CAAC,eAAe,GAClB,EAAE,CAAC,iBAAiB,GACpB,EAAE,CAAC,uBAAuB,CAAC;AAUjC,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,CAItH;AAED,wBAAgB,oCAAoC,CAChD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,QAAQ,EACtB,MAAM,EAAE,EAAE,CAAC,iBAAiB,EAC5B,UAAU,EAAE,EAAE,CAAC,UAAU,GAC1B,IAAI,CAIN;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAOpJ;AAED,wBAAgB,8BAA8B,CAC1C,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,eAAe,CAAC,EAAE,SAAS,GAC5B,IAAI,CASN;AAED,wBAAgB,mCAAmC,CAC/C,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,eAAe,CAAC,EAAE,SAAS,GAC5B,IAAI,CAUN;AAmBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CA0BvI"}
|
|
@@ -61,6 +61,10 @@ const Type_1 = require("../../base/Type");
|
|
|
61
61
|
const BodyBuilder_1 = require("./BodyBuilder");
|
|
62
62
|
const Expr_1 = require("../../base/Expr");
|
|
63
63
|
const ArkBaseModel_1 = require("../ArkBaseModel");
|
|
64
|
+
const Constant_1 = require("../../base/Constant");
|
|
65
|
+
const ValueUtil_1 = require("../../common/ValueUtil");
|
|
66
|
+
const Local_1 = require("../../base/Local");
|
|
67
|
+
const ArkMetadata_1 = require("../ArkMetadata");
|
|
64
68
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkClassBuilder');
|
|
65
69
|
function buildDefaultArkClassFromArkFile(arkFile, defaultClass, astRoot) {
|
|
66
70
|
defaultClass.setDeclaringArkFile(arkFile);
|
|
@@ -317,6 +321,7 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
|
|
|
317
321
|
const staticInitStmts = [];
|
|
318
322
|
const instanceInitStmts = [];
|
|
319
323
|
let staticBlockId = 0;
|
|
324
|
+
const enumFieldInfo = { lastFieldName: '', curValue: 0, isCurValueValid: true };
|
|
320
325
|
clsNode.members.forEach(member => {
|
|
321
326
|
if (isClassMethod(member)) {
|
|
322
327
|
// these node types have been handled at the beginning of this function by calling buildMethodsForClass
|
|
@@ -341,7 +346,7 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
|
|
|
341
346
|
}
|
|
342
347
|
if (ohos_typescript_1.default.isEnumMember(member)) {
|
|
343
348
|
const arkField = (0, ArkFieldBuilder_1.buildProperty2ArkField)(member, sourceFile, cls);
|
|
344
|
-
getInitStmts(staticIRTransformer, arkField, member.initializer);
|
|
349
|
+
getInitStmts(staticIRTransformer, arkField, member.initializer, enumFieldInfo);
|
|
345
350
|
arkField.getInitializer().forEach(stmt => staticInitStmts.push(stmt));
|
|
346
351
|
}
|
|
347
352
|
else if (ohos_typescript_1.default.isIndexSignatureDeclaration(member)) {
|
|
@@ -466,29 +471,57 @@ function buildStaticBlocksForClass(clsNode, cls, sourceFile) {
|
|
|
466
471
|
});
|
|
467
472
|
return staticBlockMethodSignatures;
|
|
468
473
|
}
|
|
469
|
-
function getInitStmts(transformer, field, initNode) {
|
|
474
|
+
function getInitStmts(transformer, field, initNode, enumFieldInfo) {
|
|
475
|
+
let initValue;
|
|
476
|
+
let initPositions;
|
|
477
|
+
const stmts = [];
|
|
470
478
|
if (initNode) {
|
|
471
|
-
|
|
472
|
-
|
|
479
|
+
let initStmts = [];
|
|
480
|
+
({ value: initValue, valueOriginalPositions: initPositions, stmts: initStmts } = transformer.tsNodeToValueAndStmts(initNode));
|
|
473
481
|
initStmts.forEach(stmt => stmts.push(stmt));
|
|
474
482
|
if (IRUtils_1.IRUtils.moreThanOneAddress(initValue)) {
|
|
475
483
|
({ value: initValue, valueOriginalPositions: initPositions, stmts: initStmts } = transformer.generateAssignStmtForValue(initValue, initPositions));
|
|
476
484
|
initStmts.forEach(stmt => stmts.push(stmt));
|
|
477
485
|
}
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
stmt.setOriginalText(fieldSourceCode);
|
|
486
|
+
if (enumFieldInfo !== undefined) {
|
|
487
|
+
if (initValue instanceof Constant_1.NumberConstant) {
|
|
488
|
+
enumFieldInfo.curValue = parseFloat(initValue.getValue()) + 1;
|
|
489
|
+
enumFieldInfo.isCurValueValid = true;
|
|
490
|
+
}
|
|
491
|
+
else {
|
|
492
|
+
enumFieldInfo.lastFieldName = field.getName();
|
|
493
|
+
enumFieldInfo.isCurValueValid = false;
|
|
494
|
+
}
|
|
488
495
|
}
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
496
|
+
}
|
|
497
|
+
else if (enumFieldInfo !== undefined) {
|
|
498
|
+
if (enumFieldInfo.isCurValueValid) {
|
|
499
|
+
initValue = ValueUtil_1.ValueUtil.getOrCreateNumberConst(enumFieldInfo.curValue);
|
|
500
|
+
enumFieldInfo.curValue += 1;
|
|
501
|
+
}
|
|
502
|
+
else {
|
|
503
|
+
initValue = new Expr_1.ArkNormalBinopExpr(new Local_1.Local(enumFieldInfo.lastFieldName), ValueUtil_1.ValueUtil.getOrCreateNumberConst(1), Expr_1.NormalBinaryOperator.Addition);
|
|
504
|
+
enumFieldInfo.lastFieldName = field.getName();
|
|
492
505
|
}
|
|
506
|
+
initPositions = [Position_1.FullPosition.DEFAULT];
|
|
507
|
+
field.setMetadata(ArkMetadata_1.ArkMetadataKind.ENUM_INIT_TYPE_USER, new ArkMetadata_1.EnumInitTypeUserMetadata(false));
|
|
508
|
+
}
|
|
509
|
+
else {
|
|
510
|
+
return;
|
|
511
|
+
}
|
|
512
|
+
const fieldRef = new Ref_1.ArkInstanceFieldRef(transformer.getThisLocal(), field.getSignature());
|
|
513
|
+
const fieldRefPositions = [Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT];
|
|
514
|
+
const assignStmt = new Stmt_1.ArkAssignStmt(fieldRef, initValue);
|
|
515
|
+
assignStmt.setOperandOriginalPositions([...fieldRefPositions, ...initPositions]);
|
|
516
|
+
stmts.push(assignStmt);
|
|
517
|
+
const fieldSourceCode = field.getCode();
|
|
518
|
+
const fieldOriginPosition = field.getOriginPosition();
|
|
519
|
+
for (const stmt of stmts) {
|
|
520
|
+
stmt.setOriginPositionInfo(fieldOriginPosition);
|
|
521
|
+
stmt.setOriginalText(fieldSourceCode);
|
|
522
|
+
}
|
|
523
|
+
field.setInitializer(stmts);
|
|
524
|
+
if (field.getType() instanceof Type_1.UnknownType) {
|
|
525
|
+
field.getSignature().setType(initValue.getType());
|
|
493
526
|
}
|
|
494
527
|
}
|