arkanalyzer 1.0.70 → 1.0.71
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.
|
@@ -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
|
}
|