arkanalyzer 1.0.23 → 1.0.25
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.d.ts.map +1 -1
- package/lib/Scene.js +4 -1
- package/lib/core/base/Constant.d.ts +3 -0
- package/lib/core/base/Constant.d.ts.map +1 -1
- package/lib/core/base/Constant.js +7 -1
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +9 -0
- package/lib/core/base/Type.d.ts +9 -0
- package/lib/core/base/Type.d.ts.map +1 -1
- package/lib/core/base/Type.js +15 -1
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +20 -3
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +3 -1
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +8 -0
- package/lib/core/common/TSConst.d.ts +1 -0
- package/lib/core/common/TSConst.d.ts.map +1 -1
- package/lib/core/common/TSConst.js +2 -1
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +11 -9
- package/lib/core/common/ValueUtil.d.ts +2 -1
- package/lib/core/common/ValueUtil.d.ts.map +1 -1
- package/lib/core/common/ValueUtil.js +3 -0
- package/lib/core/graph/builder/CfgBuilder.d.ts +1 -0
- package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/CfgBuilder.js +26 -1
- package/lib/core/model/ArkField.d.ts +3 -1
- package/lib/core/model/ArkField.d.ts.map +1 -1
- package/lib/core/model/ArkField.js +12 -0
- package/lib/core/model/ArkMethod.d.ts +1 -0
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +15 -0
- package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkClassBuilder.js +37 -0
- package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkFieldBuilder.js +11 -12
- package/lib/core/model/builder/ArkMethodBuilder.d.ts +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +61 -77
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +16 -13
- package/lib/save/JsonPrinter.d.ts.map +1 -1
- package/lib/save/JsonPrinter.js +5 -0
- package/lib/save/arkir/ArkIRClassPrinter.d.ts.map +1 -1
- package/lib/save/arkir/ArkIRClassPrinter.js +20 -12
- package/lib/save/arkir/ArkIRFieldPrinter.js +1 -1
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts.map +1 -1
- package/lib/save/arkir/ArkIRMethodPrinter.js +11 -15
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +8 -2
- package/package.json +2 -2
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.ArkField = exports.FieldCategory = void 0;
|
|
18
18
|
const Position_1 = require("../base/Position");
|
|
19
|
+
const ArkClass_1 = require("./ArkClass");
|
|
19
20
|
const ArkBaseModel_1 = require("./ArkBaseModel");
|
|
20
21
|
var FieldCategory;
|
|
21
22
|
(function (FieldCategory) {
|
|
@@ -27,6 +28,7 @@ var FieldCategory;
|
|
|
27
28
|
FieldCategory[FieldCategory["ENUM_MEMBER"] = 5] = "ENUM_MEMBER";
|
|
28
29
|
FieldCategory[FieldCategory["INDEX_SIGNATURE"] = 6] = "INDEX_SIGNATURE";
|
|
29
30
|
FieldCategory[FieldCategory["GET_ACCESSOR"] = 7] = "GET_ACCESSOR";
|
|
31
|
+
FieldCategory[FieldCategory["PARAMETER_PROPERTY"] = 8] = "PARAMETER_PROPERTY";
|
|
30
32
|
})(FieldCategory = exports.FieldCategory || (exports.FieldCategory = {}));
|
|
31
33
|
/**
|
|
32
34
|
* @category core/model
|
|
@@ -115,5 +117,15 @@ class ArkField extends ArkBaseModel_1.ArkBaseModel {
|
|
|
115
117
|
validate() {
|
|
116
118
|
return this.validateFields(['category', 'declaringClass', 'fieldSignature']);
|
|
117
119
|
}
|
|
120
|
+
// For class field, it is default public if there is not any access modify
|
|
121
|
+
isPublic() {
|
|
122
|
+
if (!this.containsModifier(ArkBaseModel_1.ModifierType.PUBLIC) &&
|
|
123
|
+
!this.containsModifier(ArkBaseModel_1.ModifierType.PRIVATE) &&
|
|
124
|
+
!this.containsModifier(ArkBaseModel_1.ModifierType.PROTECTED) &&
|
|
125
|
+
this.getDeclaringArkClass().getCategory() === ArkClass_1.ClassCategory.CLASS) {
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
return this.containsModifier(ArkBaseModel_1.ModifierType.PUBLIC);
|
|
129
|
+
}
|
|
118
130
|
}
|
|
119
131
|
exports.ArkField = ArkField;
|
|
@@ -266,5 +266,6 @@ export declare class ArkMethod extends ArkBaseModel implements ArkExport {
|
|
|
266
266
|
getFunctionLocal(name: string): Local | null;
|
|
267
267
|
setQuestionToken(questionToken: boolean): void;
|
|
268
268
|
getQuestionToken(): boolean;
|
|
269
|
+
isPublic(): boolean;
|
|
269
270
|
}
|
|
270
271
|
//# sourceMappingURL=ArkMethod.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkMethod.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkMethod.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAc,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAgC,IAAI,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAA2B,WAAW,EAA2B,IAAI,EAAa,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAiB,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAuB,OAAO,EAAmB,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"ArkMethod.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkMethod.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,7 @@ const ArkError_1 = require("../common/ArkError");
|
|
|
27
27
|
const EtsConst_1 = require("../common/EtsConst");
|
|
28
28
|
const Constant_1 = require("../base/Constant");
|
|
29
29
|
const Local_1 = require("../base/Local");
|
|
30
|
+
const TSConst_1 = require("../common/TSConst");
|
|
30
31
|
exports.arkMethodNodeKind = ['MethodDeclaration', 'Constructor', 'FunctionDeclaration', 'GetAccessor',
|
|
31
32
|
'SetAccessor', 'ArrowFunction', 'FunctionExpression', 'MethodSignature', 'ConstructSignature', 'CallSignature'];
|
|
32
33
|
/**
|
|
@@ -601,5 +602,19 @@ class ArkMethod extends ArkBaseModel_1.ArkBaseModel {
|
|
|
601
602
|
getQuestionToken() {
|
|
602
603
|
return this.questionToken;
|
|
603
604
|
}
|
|
605
|
+
// For class method, if there is no public/private/protected access modifier, it is actually public
|
|
606
|
+
isPublic() {
|
|
607
|
+
if (!this.containsModifier(ArkBaseModel_1.ModifierType.PUBLIC) &&
|
|
608
|
+
!this.containsModifier(ArkBaseModel_1.ModifierType.PRIVATE) &&
|
|
609
|
+
!this.containsModifier(ArkBaseModel_1.ModifierType.PROTECTED) &&
|
|
610
|
+
!this.getDeclaringArkClass().isDefaultArkClass() &&
|
|
611
|
+
!this.isGenerated() &&
|
|
612
|
+
!this.isAnonymousMethod() &&
|
|
613
|
+
this.getName() !== TSConst_1.CONSTRUCTOR_NAME &&
|
|
614
|
+
this.getDeclaringArkClass().getCategory() === ArkClass_1.ClassCategory.CLASS) {
|
|
615
|
+
return true;
|
|
616
|
+
}
|
|
617
|
+
return this.containsModifier(ArkBaseModel_1.ModifierType.PUBLIC);
|
|
618
|
+
}
|
|
604
619
|
}
|
|
605
620
|
exports.ArkMethod = ArkMethod;
|
|
@@ -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,
|
|
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,EAA4B,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;AAyBtD,MAAM,MAAM,aAAa,GACrB,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;AAU/B,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,QAI/G;AAED,wBAAgB,oCAAoC,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAClD,MAAM,EAAE,EAAE,CAAC,iBAAiB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,QAI3G;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAChE,eAAe,CAAC,EAAE,SAAS,QAO3E;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EACvD,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,SAAS,QAYpG;AAED,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EACjE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,SAAS,QAazG;AAgBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,SAAS,QA2BhI"}
|
|
@@ -41,6 +41,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
41
41
|
};
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
43
|
exports.buildNormalArkClass = exports.buildNormalArkClassFromArkNamespace = exports.buildNormalArkClassFromArkFile = exports.buildNormalArkClassFromArkMethod = exports.buildDefaultArkClassFromArkNamespace = exports.buildDefaultArkClassFromArkFile = void 0;
|
|
44
|
+
const ArkField_1 = require("../ArkField");
|
|
44
45
|
const ArkMethod_1 = require("../ArkMethod");
|
|
45
46
|
const logger_1 = __importStar(require("../../../utils/logger"));
|
|
46
47
|
const ohos_typescript_1 = __importDefault(require("ohos-typescript"));
|
|
@@ -148,6 +149,7 @@ function init4InstanceInitMethod(cls) {
|
|
|
148
149
|
instanceInit.setDeclaringArkClass(cls);
|
|
149
150
|
instanceInit.setIsGeneratedFlag(true);
|
|
150
151
|
const methodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(Const_1.INSTANCE_INIT_METHOD_NAME);
|
|
152
|
+
methodSubSignature.setReturnType(Type_1.VoidType.getInstance());
|
|
151
153
|
const methodSignature = new ArkSignature_1.MethodSignature(instanceInit.getDeclaringArkClass().getSignature(), methodSubSignature);
|
|
152
154
|
instanceInit.setImplementationSignature(methodSignature);
|
|
153
155
|
instanceInit.setLineCol(0);
|
|
@@ -160,6 +162,7 @@ function init4StaticInitMethod(cls) {
|
|
|
160
162
|
staticInit.setDeclaringArkClass(cls);
|
|
161
163
|
staticInit.setIsGeneratedFlag(true);
|
|
162
164
|
const methodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(Const_1.STATIC_INIT_METHOD_NAME);
|
|
165
|
+
methodSubSignature.setReturnType(Type_1.VoidType.getInstance());
|
|
163
166
|
const methodSignature = new ArkSignature_1.MethodSignature(staticInit.getDeclaringArkClass().getSignature(), methodSubSignature);
|
|
164
167
|
staticInit.setImplementationSignature(methodSignature);
|
|
165
168
|
staticInit.setLineCol(0);
|
|
@@ -370,7 +373,38 @@ function buildMethodsForClass(clsNode, cls, sourceFile) {
|
|
|
370
373
|
if (ohos_typescript_1.default.isGetAccessor(member)) {
|
|
371
374
|
(0, ArkFieldBuilder_1.buildGetAccessor2ArkField)(member, mthd, sourceFile);
|
|
372
375
|
}
|
|
376
|
+
else if (ohos_typescript_1.default.isConstructorDeclaration(member)) {
|
|
377
|
+
buildParameterProperty2ArkField(member.parameters, cls, sourceFile);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
// params of constructor method may have modifiers such as public or private to directly define class properties with constructor
|
|
383
|
+
function buildParameterProperty2ArkField(params, cls, sourceFile) {
|
|
384
|
+
if (params.length === 0) {
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
params.forEach((parameter) => {
|
|
388
|
+
if (parameter.modifiers === undefined || !ohos_typescript_1.default.isIdentifier(parameter.name)) {
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
let field = new ArkField_1.ArkField();
|
|
392
|
+
field.setDeclaringArkClass(cls);
|
|
393
|
+
field.setCode(parameter.getText(sourceFile));
|
|
394
|
+
field.setCategory(ArkField_1.FieldCategory.PARAMETER_PROPERTY);
|
|
395
|
+
field.setOriginPosition(Position_1.LineColPosition.buildFromNode(parameter, sourceFile));
|
|
396
|
+
let fieldName = parameter.name.text;
|
|
397
|
+
let fieldType;
|
|
398
|
+
if (parameter.type) {
|
|
399
|
+
fieldType = ((0, builderUtils_1.buildGenericType)((0, builderUtils_1.tsNode2Type)(parameter.type, sourceFile, field), field));
|
|
373
400
|
}
|
|
401
|
+
else {
|
|
402
|
+
fieldType = Type_1.UnknownType.getInstance();
|
|
403
|
+
}
|
|
404
|
+
const fieldSignature = new ArkSignature_1.FieldSignature(fieldName, cls.getSignature(), fieldType, false);
|
|
405
|
+
field.setSignature(fieldSignature);
|
|
406
|
+
field.setModifiers((0, builderUtils_1.buildModifiers)(parameter));
|
|
407
|
+
cls.addField(field);
|
|
374
408
|
});
|
|
375
409
|
}
|
|
376
410
|
function buildStaticBlocksForClass(clsNode, cls, sourceFile) {
|
|
@@ -419,5 +453,8 @@ function getInitStmts(transformer, field, initNode) {
|
|
|
419
453
|
stmt.setOriginalText(fieldSourceCode);
|
|
420
454
|
}
|
|
421
455
|
field.setInitializer(stmts);
|
|
456
|
+
if (field.getType() instanceof Type_1.UnknownType) {
|
|
457
|
+
field.getSignature().setType(initValue.getType());
|
|
458
|
+
}
|
|
422
459
|
}
|
|
423
460
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkFieldBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkFieldBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUzC,MAAM,MAAM,YAAY,GAAG,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAC,kBAAkB,CAAC;AAE1E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAC,kBAAkB,GAAG,EAAE,CAAC,2BAA2B,GACxH,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,iBAAiB,GAAG,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"ArkFieldBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkFieldBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUzC,MAAM,MAAM,YAAY,GAAG,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAC,kBAAkB,CAAC;AAE1E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAC,kBAAkB,GAAG,EAAE,CAAC,2BAA2B,GACxH,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,iBAAiB,GAAG,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAqDpH;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,yBAAyB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,QAmB1H;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,QAiCtH"}
|
|
@@ -80,24 +80,23 @@ function buildProperty2ArkField(member, sourceFile, cls) {
|
|
|
80
80
|
else {
|
|
81
81
|
logger.warn("Other type of property name found!");
|
|
82
82
|
}
|
|
83
|
-
if ((ohos_typescript_1.default.isPropertyDeclaration(member) || ohos_typescript_1.default.isPropertySignature(member)) && member.modifiers) {
|
|
84
|
-
let modifiers = (0, builderUtils_1.buildModifiers)(member);
|
|
85
|
-
field.addModifier(modifiers);
|
|
86
|
-
field.setDecorators((0, builderUtils_1.buildDecorators)(member, sourceFile));
|
|
87
|
-
}
|
|
88
83
|
let fieldType = Type_1.UnknownType.getInstance();
|
|
89
|
-
if ((ohos_typescript_1.default.isPropertyDeclaration(member) || ohos_typescript_1.default.isPropertySignature(member))
|
|
90
|
-
|
|
84
|
+
if ((ohos_typescript_1.default.isPropertyDeclaration(member) || ohos_typescript_1.default.isPropertySignature(member))) {
|
|
85
|
+
if (member.modifiers) {
|
|
86
|
+
field.addModifier((0, builderUtils_1.buildModifiers)(member));
|
|
87
|
+
}
|
|
88
|
+
field.addModifier(0);
|
|
89
|
+
field.setDecorators((0, builderUtils_1.buildDecorators)(member, sourceFile));
|
|
90
|
+
field.setQuestionToken(member.questionToken !== undefined);
|
|
91
|
+
if (member.type) {
|
|
92
|
+
fieldType = (0, builderUtils_1.buildGenericType)((0, builderUtils_1.tsNode2Type)(member.type, sourceFile, cls), field);
|
|
93
|
+
}
|
|
91
94
|
}
|
|
92
95
|
if (ohos_typescript_1.default.isEnumMember(member)) {
|
|
93
96
|
field.addModifier(ArkBaseModel_1.ModifierType.STATIC);
|
|
94
97
|
fieldType = new Type_1.ClassType(cls.getSignature());
|
|
95
98
|
}
|
|
96
|
-
|
|
97
|
-
field.setSignature(fieldSignature);
|
|
98
|
-
if ((ohos_typescript_1.default.isPropertyDeclaration(member) || ohos_typescript_1.default.isPropertySignature(member)) && member.questionToken) {
|
|
99
|
-
field.setQuestionToken(true);
|
|
100
|
-
}
|
|
99
|
+
field.setSignature(new ArkSignature_1.FieldSignature(fieldName, cls.getSignature(), fieldType, field.isStatic()));
|
|
101
100
|
if (ohos_typescript_1.default.isPropertyDeclaration(member) && member.exclamationToken) {
|
|
102
101
|
field.setExclamationToken(true);
|
|
103
102
|
}
|
|
@@ -58,7 +58,7 @@ export declare class MethodParameter implements Value {
|
|
|
58
58
|
}
|
|
59
59
|
export declare function buildDefaultConstructor(arkClass: ArkClass): boolean;
|
|
60
60
|
export declare function buildInitMethod(initMethod: ArkMethod, fieldInitializerStmts: Stmt[], thisLocal: Local): void;
|
|
61
|
-
export declare function addInitInConstructor(
|
|
61
|
+
export declare function addInitInConstructor(constructor: ArkMethod): void;
|
|
62
62
|
export declare function isMethodImplementation(node: MethodLikeNode): boolean;
|
|
63
63
|
export declare function checkAndUpdateMethod(method: ArkMethod, cls: ArkClass): void;
|
|
64
64
|
//# sourceMappingURL=ArkMethodBuilder.d.ts.map
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -114,9 +114,7 @@ function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile,
|
|
|
114
114
|
if (mtd.hasBuilderDecorator()) {
|
|
115
115
|
mtd.setViewTree((0, ViewTreeBuilder_1.buildViewTree)(mtd));
|
|
116
116
|
}
|
|
117
|
-
else if (declaringClass.hasComponentDecorator() &&
|
|
118
|
-
mtd.getSubSignature().toString() === 'build()' &&
|
|
119
|
-
!mtd.isStatic()) {
|
|
117
|
+
else if (declaringClass.hasComponentDecorator() && mtd.getSubSignature().toString() === 'build()' && !mtd.isStatic()) {
|
|
120
118
|
declaringClass.setViewTree((0, ViewTreeBuilder_1.buildViewTree)(mtd));
|
|
121
119
|
}
|
|
122
120
|
checkAndUpdateMethod(mtd, declaringClass);
|
|
@@ -294,85 +292,62 @@ class MethodParameter {
|
|
|
294
292
|
exports.MethodParameter = MethodParameter;
|
|
295
293
|
function needDefaultConstructorInClass(arkClass) {
|
|
296
294
|
const originClassType = arkClass.getCategory();
|
|
297
|
-
return arkClass.getMethodWithName(TSConst_1.CONSTRUCTOR_NAME)
|
|
295
|
+
return arkClass.getMethodWithName(TSConst_1.CONSTRUCTOR_NAME) === null &&
|
|
298
296
|
(originClassType === ArkClass_1.ClassCategory.CLASS || originClassType === ArkClass_1.ClassCategory.OBJECT) &&
|
|
299
297
|
arkClass.getName() !== Const_1.DEFAULT_ARK_CLASS_NAME &&
|
|
300
298
|
!arkClass.isDeclare();
|
|
301
299
|
}
|
|
300
|
+
function recursivelyCheckAndBuildSuperConstructor(arkClass) {
|
|
301
|
+
let superClass = arkClass.getSuperClass();
|
|
302
|
+
while (superClass !== null) {
|
|
303
|
+
if (superClass.getMethodWithName(TSConst_1.CONSTRUCTOR_NAME) === null) {
|
|
304
|
+
buildDefaultConstructor(superClass);
|
|
305
|
+
}
|
|
306
|
+
superClass = superClass.getSuperClass();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
302
309
|
function buildDefaultConstructor(arkClass) {
|
|
310
|
+
var _a;
|
|
303
311
|
if (!needDefaultConstructorInClass(arkClass)) {
|
|
304
312
|
return false;
|
|
305
313
|
}
|
|
306
|
-
|
|
307
|
-
let superClass = arkClass.getSuperClass() || null;
|
|
308
|
-
while (superClass != null) {
|
|
309
|
-
parentConstructor = superClass.getMethodWithName(TSConst_1.CONSTRUCTOR_NAME);
|
|
310
|
-
if (parentConstructor != null) {
|
|
311
|
-
break;
|
|
312
|
-
}
|
|
313
|
-
superClass = superClass.getSuperClass() || null;
|
|
314
|
-
}
|
|
314
|
+
recursivelyCheckAndBuildSuperConstructor(arkClass);
|
|
315
315
|
const defaultConstructor = new ArkMethod_1.ArkMethod();
|
|
316
316
|
defaultConstructor.setDeclaringArkClass(arkClass);
|
|
317
317
|
defaultConstructor.setCode('');
|
|
318
318
|
defaultConstructor.setIsGeneratedFlag(true);
|
|
319
|
-
|
|
319
|
+
defaultConstructor.setLineCol(0);
|
|
320
|
+
const thisLocal = new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(arkClass.getSignature()));
|
|
320
321
|
const locals = new Set([thisLocal]);
|
|
321
322
|
const basicBlock = new BasicBlock_1.BasicBlock();
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
const methodSignature = new ArkSignature_1.MethodSignature(defaultConstructor.getDeclaringArkClass().getSignature(), methodSubSignature);
|
|
332
|
-
defaultConstructor.setImplementationSignature(methodSignature);
|
|
333
|
-
defaultConstructor.setLineCol(0);
|
|
334
|
-
const stmts = [];
|
|
335
|
-
let index = 0;
|
|
336
|
-
const parameterLocals = [];
|
|
337
|
-
for (const methodParameter of defaultConstructor.getParameters()) {
|
|
338
|
-
const parameterRef = new Ref_1.ArkParameterRef(index, methodParameter.getType());
|
|
339
|
-
const parameterLocal = new Local_1.Local(methodParameter.getName(), parameterRef.getType());
|
|
323
|
+
basicBlock.setId(0);
|
|
324
|
+
let parameters = [];
|
|
325
|
+
let parameterArgs = [];
|
|
326
|
+
const superConstructor = (_a = arkClass.getSuperClass()) === null || _a === void 0 ? void 0 : _a.getMethodWithName(TSConst_1.CONSTRUCTOR_NAME);
|
|
327
|
+
if (superConstructor) {
|
|
328
|
+
parameters = superConstructor.getParameters();
|
|
329
|
+
for (let index = 0; index < parameters.length; index++) {
|
|
330
|
+
const parameterRef = new Ref_1.ArkParameterRef(index, parameters[index].getType());
|
|
331
|
+
const parameterLocal = new Local_1.Local(parameters[index].getName(), parameterRef.getType());
|
|
340
332
|
locals.add(parameterLocal);
|
|
341
|
-
|
|
342
|
-
|
|
333
|
+
parameterArgs.push(parameterLocal);
|
|
334
|
+
basicBlock.addStmt(new Stmt_1.ArkAssignStmt(parameterLocal, parameterRef));
|
|
343
335
|
index++;
|
|
344
336
|
}
|
|
345
|
-
const superMethodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.SUPER_NAME, parentConstructor.getParameters(), defaultConstructor.getReturnType());
|
|
346
|
-
const superMethodSignature = new ArkSignature_1.MethodSignature(arkClass.getSignature(), superMethodSubSignature);
|
|
347
|
-
const superInvokeExpr = new Expr_1.ArkStaticInvokeExpr(superMethodSignature, parameterLocals);
|
|
348
|
-
const superInvokeStmt = new Stmt_1.ArkInvokeStmt(superInvokeExpr);
|
|
349
|
-
basicBlock.addStmt(superInvokeStmt);
|
|
350
|
-
const returnVoidStmt = new Stmt_1.ArkReturnVoidStmt();
|
|
351
|
-
basicBlock.addStmt(returnVoidStmt);
|
|
352
337
|
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
const
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
const superClass = arkClass.getSuperClass();
|
|
360
|
-
const superMethodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.SUPER_NAME, [], Type_1.UnknownType.getInstance());
|
|
361
|
-
const superMethodSignature = new ArkSignature_1.MethodSignature(superClass.getSignature(), superMethodSubSignature);
|
|
362
|
-
const superInvokeExpr = new Expr_1.ArkStaticInvokeExpr(superMethodSignature, []);
|
|
363
|
-
const superInvokeStmt = new Stmt_1.ArkInvokeStmt(superInvokeExpr);
|
|
364
|
-
basicBlock.addStmt(superInvokeStmt);
|
|
365
|
-
const returnVoidStmt = new Stmt_1.ArkReturnVoidStmt();
|
|
366
|
-
basicBlock.addStmt(returnVoidStmt);
|
|
367
|
-
}
|
|
368
|
-
else {
|
|
369
|
-
const returnVoidStmt = new Stmt_1.ArkReturnVoidStmt();
|
|
370
|
-
basicBlock.addStmt(returnVoidStmt);
|
|
371
|
-
}
|
|
338
|
+
basicBlock.addStmt(new Stmt_1.ArkAssignStmt(thisLocal, new Ref_1.ArkThisRef(new Type_1.ClassType(arkClass.getSignature()))));
|
|
339
|
+
if (superConstructor) {
|
|
340
|
+
const superMethodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.SUPER_NAME, parameters, superConstructor.getReturnType());
|
|
341
|
+
const superMethodSignature = new ArkSignature_1.MethodSignature(arkClass.getSignature(), superMethodSubSignature);
|
|
342
|
+
const superInvokeExpr = new Expr_1.ArkStaticInvokeExpr(superMethodSignature, parameterArgs);
|
|
343
|
+
basicBlock.addStmt(new Stmt_1.ArkInvokeStmt(superInvokeExpr));
|
|
372
344
|
}
|
|
345
|
+
const methodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.CONSTRUCTOR_NAME, parameters, thisLocal.getType(), defaultConstructor.isStatic());
|
|
346
|
+
defaultConstructor.setImplementationSignature(new ArkSignature_1.MethodSignature(arkClass.getSignature(), methodSubSignature));
|
|
347
|
+
basicBlock.addStmt(new Stmt_1.ArkReturnStmt(thisLocal));
|
|
373
348
|
const cfg = new Cfg_1.Cfg();
|
|
374
349
|
cfg.addBlock(basicBlock);
|
|
375
|
-
cfg.setStartingStmt(
|
|
350
|
+
cfg.setStartingStmt(basicBlock.getHead());
|
|
376
351
|
cfg.setDeclaringMethod(defaultConstructor);
|
|
377
352
|
cfg.getStmts().forEach(s => s.setCfg(cfg));
|
|
378
353
|
defaultConstructor.setBody(new ArkBody_1.ArkBody(locals, cfg));
|
|
@@ -385,6 +360,7 @@ function buildInitMethod(initMethod, fieldInitializerStmts, thisLocal) {
|
|
|
385
360
|
const classType = new Type_1.ClassType(initMethod.getDeclaringArkClass().getSignature());
|
|
386
361
|
const assignStmt = new Stmt_1.ArkAssignStmt(thisLocal, new Ref_1.ArkThisRef(classType));
|
|
387
362
|
const block = new BasicBlock_1.BasicBlock();
|
|
363
|
+
block.setId(0);
|
|
388
364
|
block.addStmt(assignStmt);
|
|
389
365
|
const locals = new Set([thisLocal]);
|
|
390
366
|
for (const stmt of fieldInitializerStmts) {
|
|
@@ -405,27 +381,35 @@ function buildInitMethod(initMethod, fieldInitializerStmts, thisLocal) {
|
|
|
405
381
|
initMethod.setBody(new ArkBody_1.ArkBody(locals, cfg));
|
|
406
382
|
}
|
|
407
383
|
exports.buildInitMethod = buildInitMethod;
|
|
408
|
-
function addInitInConstructor(
|
|
384
|
+
function addInitInConstructor(constructor) {
|
|
409
385
|
var _a, _b;
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
386
|
+
const thisLocal = (_a = constructor.getBody()) === null || _a === void 0 ? void 0 : _a.getLocals().get(TSConst_1.THIS_NAME);
|
|
387
|
+
if (!thisLocal) {
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
const blocks = (_b = constructor.getCfg()) === null || _b === void 0 ? void 0 : _b.getBlocks();
|
|
391
|
+
if (!blocks) {
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
const firstBlockStmts = [...blocks][0].getStmts();
|
|
395
|
+
let index = 0;
|
|
396
|
+
for (let i = 0; i < firstBlockStmts.length; i++) {
|
|
397
|
+
const stmt = firstBlockStmts[i];
|
|
398
|
+
if (stmt instanceof Stmt_1.ArkInvokeStmt && stmt.getInvokeExpr().getMethodSignature().getMethodSubSignature().getMethodName() === TSConst_1.SUPER_NAME) {
|
|
399
|
+
index++;
|
|
400
|
+
continue;
|
|
401
|
+
}
|
|
402
|
+
if (stmt instanceof Stmt_1.ArkAssignStmt) {
|
|
403
|
+
const rightOp = stmt.getRightOp();
|
|
404
|
+
if (rightOp instanceof Ref_1.ArkParameterRef || rightOp instanceof Ref_1.ArkThisRef || rightOp instanceof Ref_1.ClosureFieldRef) {
|
|
405
|
+
index++;
|
|
419
406
|
continue;
|
|
420
407
|
}
|
|
421
|
-
const firstBlockStmts = [...blocks][0].getStmts();
|
|
422
|
-
let index = 0;
|
|
423
|
-
if (firstBlockStmts[0].getDef() instanceof Local_1.Local && firstBlockStmts[0].getDef().getName() === TSConst_1.THIS_NAME) {
|
|
424
|
-
index = 1;
|
|
425
|
-
}
|
|
426
|
-
firstBlockStmts.splice(index, 0, initInvokeStmt);
|
|
427
408
|
}
|
|
409
|
+
break;
|
|
428
410
|
}
|
|
411
|
+
const initInvokeStmt = new Stmt_1.ArkInvokeStmt(new Expr_1.ArkInstanceInvokeExpr(thisLocal, constructor.getDeclaringArkClass().getInstanceInitMethod().getSignature(), []));
|
|
412
|
+
firstBlockStmts.splice(index, 0, initInvokeStmt);
|
|
429
413
|
}
|
|
430
414
|
exports.addInitInConstructor = addInitInConstructor;
|
|
431
415
|
function isMethodImplementation(node) {
|
|
@@ -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,EAGH,eAAe,EAElB,MAAM,oBAAoB,CAAC;
|
|
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;AAuB5B,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,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,EAAE,CAyB/G;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,qBA4GvI;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAmDhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,QAM3F;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAC9E,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CA0F9E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,QAiDjD"}
|
|
@@ -467,43 +467,46 @@ function buildTypeFromPreStr(preStr) {
|
|
|
467
467
|
let postStr = '';
|
|
468
468
|
switch (preStr) {
|
|
469
469
|
case 'BooleanKeyword':
|
|
470
|
-
postStr =
|
|
470
|
+
postStr = TSConst_1.BOOLEAN_KEYWORD;
|
|
471
471
|
break;
|
|
472
472
|
case 'FalseKeyword':
|
|
473
|
-
postStr =
|
|
473
|
+
postStr = TSConst_1.BOOLEAN_KEYWORD;
|
|
474
474
|
break;
|
|
475
475
|
case 'TrueKeyword':
|
|
476
|
-
postStr =
|
|
476
|
+
postStr = TSConst_1.BOOLEAN_KEYWORD;
|
|
477
477
|
break;
|
|
478
478
|
case 'NumberKeyword':
|
|
479
|
-
postStr =
|
|
479
|
+
postStr = TSConst_1.NUMBER_KEYWORD;
|
|
480
480
|
break;
|
|
481
481
|
case 'NumericLiteral':
|
|
482
|
-
postStr =
|
|
482
|
+
postStr = TSConst_1.NUMBER_KEYWORD;
|
|
483
483
|
break;
|
|
484
484
|
case 'FirstLiteralToken':
|
|
485
|
-
postStr =
|
|
485
|
+
postStr = TSConst_1.NUMBER_KEYWORD;
|
|
486
486
|
break;
|
|
487
487
|
case 'StringKeyword':
|
|
488
|
-
postStr =
|
|
488
|
+
postStr = TSConst_1.STRING_KEYWORD;
|
|
489
489
|
break;
|
|
490
490
|
case 'StringLiteral':
|
|
491
|
-
postStr =
|
|
491
|
+
postStr = TSConst_1.STRING_KEYWORD;
|
|
492
492
|
break;
|
|
493
493
|
case 'UndefinedKeyword':
|
|
494
|
-
postStr =
|
|
494
|
+
postStr = TSConst_1.UNDEFINED_KEYWORD;
|
|
495
495
|
break;
|
|
496
496
|
case 'NullKeyword':
|
|
497
|
-
postStr =
|
|
497
|
+
postStr = TSConst_1.NULL_KEYWORD;
|
|
498
498
|
break;
|
|
499
499
|
case 'AnyKeyword':
|
|
500
|
-
postStr =
|
|
500
|
+
postStr = TSConst_1.ANY_KEYWORD;
|
|
501
501
|
break;
|
|
502
502
|
case 'VoidKeyword':
|
|
503
|
-
postStr =
|
|
503
|
+
postStr = TSConst_1.VOID_KEYWORD;
|
|
504
504
|
break;
|
|
505
505
|
case 'NeverKeyword':
|
|
506
|
-
postStr =
|
|
506
|
+
postStr = TSConst_1.NEVER_KEYWORD;
|
|
507
|
+
break;
|
|
508
|
+
case 'BigIntKeyword':
|
|
509
|
+
postStr = TSConst_1.BIGINT_KEYWORD;
|
|
507
510
|
break;
|
|
508
511
|
default:
|
|
509
512
|
postStr = preStr;
|
|
@@ -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;AAiFhD,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;IAatB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,aAAa;
|
|
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;AAiFhD,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;IAatB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,aAAa;IAwHrB,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,cAAc;IAyJtB,OAAO,CAAC,aAAa;CAmCxB"}
|
package/lib/save/JsonPrinter.js
CHANGED
|
@@ -177,6 +177,11 @@ class JsonPrinter extends Printer_1.Printer {
|
|
|
177
177
|
_: 'NumberType',
|
|
178
178
|
};
|
|
179
179
|
}
|
|
180
|
+
else if (type instanceof Type_1.BigIntType) {
|
|
181
|
+
return {
|
|
182
|
+
_: 'BigIntType',
|
|
183
|
+
};
|
|
184
|
+
}
|
|
180
185
|
else if (type instanceof Type_1.StringType) {
|
|
181
186
|
return {
|
|
182
187
|
_: 'StringType',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkIRClassPrinter.d.ts","sourceRoot":"","sources":["../../../src/save/arkir/ArkIRClassPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAIxD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAC9C,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC;gBAEL,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAE,MAAW;IAK9C,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"ArkIRClassPrinter.d.ts","sourceRoot":"","sources":["../../../src/save/arkir/ArkIRClassPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAIxD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAC9C,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC;gBAEL,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAE,MAAW;IAK9C,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,MAAM;IA4DrB,SAAS,CAAC,YAAY,IAAI,IAAI,EAAE;IAQhC,OAAO,CAAC,WAAW;CAOtB"}
|
|
@@ -56,10 +56,26 @@ class ArkIRClassPrinter extends BasePrinter_1.BasePrinter {
|
|
|
56
56
|
this.printer.writeLine(' {');
|
|
57
57
|
this.printer.incIndent();
|
|
58
58
|
let items = [];
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
items.
|
|
59
|
+
let fieldItems = this.printFields();
|
|
60
|
+
fieldItems.sort((a, b) => a.getLine() - b.getLine());
|
|
61
|
+
items.push(...fieldItems);
|
|
62
|
+
let methodItems = this.printMethods();
|
|
63
|
+
methodItems.sort((a, b) => a.getLine() - b.getLine());
|
|
64
|
+
items.push(...methodItems);
|
|
65
|
+
let isFirstMethod = true;
|
|
66
|
+
let hasField = false;
|
|
62
67
|
items.forEach((v) => {
|
|
68
|
+
if (v instanceof ArkIRMethodPrinter_1.ArkIRMethodPrinter) {
|
|
69
|
+
if (!isFirstMethod || hasField) {
|
|
70
|
+
this.printer.writeLine('');
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
isFirstMethod = false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else if (v instanceof ArkIRFieldPrinter_1.ArkIRFieldPrinter) {
|
|
77
|
+
hasField = true;
|
|
78
|
+
}
|
|
63
79
|
this.printer.write(v.dump());
|
|
64
80
|
});
|
|
65
81
|
this.printer.decIndent();
|
|
@@ -68,17 +84,9 @@ class ArkIRClassPrinter extends BasePrinter_1.BasePrinter {
|
|
|
68
84
|
}
|
|
69
85
|
printMethods() {
|
|
70
86
|
let items = [];
|
|
71
|
-
for (let method of this.cls.getMethods()) {
|
|
87
|
+
for (let method of this.cls.getMethods(true)) {
|
|
72
88
|
items.push(new ArkIRMethodPrinter_1.ArkIRMethodPrinter(method, this.printer.getIndent()));
|
|
73
89
|
}
|
|
74
|
-
let instanceInitMethod = this.cls.getInstanceInitMethod();
|
|
75
|
-
if (instanceInitMethod.getImplementationSignature()) {
|
|
76
|
-
items.push(new ArkIRMethodPrinter_1.ArkIRMethodPrinter(this.cls.getInstanceInitMethod(), this.printer.getIndent()));
|
|
77
|
-
}
|
|
78
|
-
let staticInitMethod = this.cls.getStaticInitMethod();
|
|
79
|
-
if (staticInitMethod.getImplementationSignature()) {
|
|
80
|
-
items.push(new ArkIRMethodPrinter_1.ArkIRMethodPrinter(this.cls.getStaticInitMethod(), this.printer.getIndent()));
|
|
81
|
-
}
|
|
82
90
|
return items;
|
|
83
91
|
}
|
|
84
92
|
printFields() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkIRMethodPrinter.d.ts","sourceRoot":"","sources":["../../../src/save/arkir/ArkIRMethodPrinter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ArkIRMethodPrinter.d.ts","sourceRoot":"","sources":["../../../src/save/arkir/ArkIRMethodPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAKvD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIlD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IAC/C,OAAO,CAAC,MAAM,CAAY;gBAEP,MAAM,EAAE,SAAS,EAAE,MAAM,GAAE,MAAW;IAKlD,IAAI,IAAI,MAAM;IAYd,OAAO,IAAI,MAAM;IAyBxB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,SAAS;IAMjB,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAsCxD,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,eAAe;CA2B1B"}
|