arkanalyzer 1.0.17 → 1.0.19
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/callgraph/pointerAnalysis/Pag.d.ts +3 -2
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +5 -3
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +4 -4
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +5 -4
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +2 -0
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +11 -9
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +8 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +27 -3
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts +30 -6
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PtsDS.js +86 -5
- package/lib/core/base/Decorator.d.ts +1 -0
- package/lib/core/base/Decorator.d.ts.map +1 -1
- package/lib/core/base/Decorator.js +4 -1
- package/lib/core/base/Stmt.d.ts +3 -0
- package/lib/core/base/Stmt.d.ts.map +1 -1
- package/lib/core/base/Stmt.js +34 -0
- package/lib/core/base/Type.d.ts +45 -3
- package/lib/core/base/Type.d.ts.map +1 -1
- package/lib/core/base/Type.js +84 -4
- package/lib/core/base/TypeExpr.d.ts +72 -0
- package/lib/core/base/TypeExpr.d.ts.map +1 -0
- package/lib/core/base/TypeExpr.js +155 -0
- package/lib/core/common/ArkIRTransformer.d.ts +1 -0
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +46 -23
- 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 +66 -16
- package/lib/core/common/IRInference.d.ts +5 -1
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +71 -0
- package/lib/core/common/ModelUtils.d.ts +3 -1
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +23 -1
- package/lib/core/common/TypeInference.d.ts +6 -0
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +82 -14
- package/lib/core/{common → graph/builder}/CfgBuilder.d.ts +34 -46
- package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/CfgBuilder.js +1139 -0
- package/lib/core/graph/builder/ConditionBuilder.d.ts +16 -0
- package/lib/core/graph/builder/ConditionBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/ConditionBuilder.js +252 -0
- package/lib/core/graph/builder/LoopBuilder.d.ts +21 -0
- package/lib/core/graph/builder/LoopBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/LoopBuilder.js +251 -0
- package/lib/core/graph/builder/SwitchBuilder.d.ts +12 -0
- package/lib/core/graph/builder/SwitchBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/SwitchBuilder.js +152 -0
- package/lib/core/graph/builder/TrapBuilder.d.ts +17 -0
- package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -0
- package/lib/core/graph/builder/TrapBuilder.js +272 -0
- package/lib/core/model/ArkMethod.d.ts +1 -1
- package/lib/core/model/ArkMethod.js +1 -1
- package/lib/core/model/ArkSignature.d.ts +9 -1
- package/lib/core/model/ArkSignature.d.ts.map +1 -1
- package/lib/core/model/ArkSignature.js +17 -1
- package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkClassBuilder.js +2 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +1 -1
- package/lib/core/{common → model/builder}/BodyBuilder.d.ts +5 -5
- package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -0
- package/lib/core/{common → model/builder}/BodyBuilder.js +12 -12
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +79 -5
- package/lib/save/JsonPrinter.d.ts +1 -1
- package/lib/save/JsonPrinter.d.ts.map +1 -1
- package/lib/save/JsonPrinter.js +2 -2
- package/lib/save/PrinterBuilder.d.ts +22 -0
- package/lib/save/PrinterBuilder.d.ts.map +1 -1
- package/lib/save/PrinterBuilder.js +54 -1
- package/lib/save/arkir/ArkIRClassPrinter.d.ts +14 -0
- package/lib/save/arkir/ArkIRClassPrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRClassPrinter.js +92 -0
- package/lib/save/arkir/ArkIRFieldPrinter.d.ts +12 -0
- package/lib/save/arkir/ArkIRFieldPrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRFieldPrinter.js +64 -0
- package/lib/save/arkir/ArkIRFilePrinter.d.ts +13 -0
- package/lib/save/arkir/ArkIRFilePrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRFilePrinter.js +54 -0
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts +17 -0
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRMethodPrinter.js +159 -0
- package/lib/save/arkir/ArkIRNamespacePrinter.d.ts +12 -0
- package/lib/save/arkir/ArkIRNamespacePrinter.d.ts.map +1 -0
- package/lib/save/arkir/ArkIRNamespacePrinter.js +66 -0
- package/lib/save/base/BasePrinter.d.ts +24 -0
- package/lib/save/base/BasePrinter.d.ts.map +1 -0
- package/lib/save/base/BasePrinter.js +70 -0
- package/lib/save/base/ExportPrinter.d.ts +9 -0
- package/lib/save/base/ExportPrinter.d.ts.map +1 -0
- package/lib/save/base/ExportPrinter.js +67 -0
- package/lib/save/base/ImportPrinter.d.ts +10 -0
- package/lib/save/base/ImportPrinter.d.ts.map +1 -0
- package/lib/save/base/ImportPrinter.js +92 -0
- package/lib/save/{source/SourceUtils.d.ts → base/PrinterUtils.d.ts} +2 -2
- package/lib/save/{source/SourceUtils.d.ts.map → base/PrinterUtils.d.ts.map} +1 -1
- package/lib/save/{source/SourceUtils.js → base/PrinterUtils.js} +10 -10
- package/lib/save/source/SourceBase.d.ts +2 -11
- package/lib/save/source/SourceBase.d.ts.map +1 -1
- package/lib/save/source/SourceBase.js +3 -25
- package/lib/save/source/SourceBody.js +3 -3
- package/lib/save/source/SourceClass.d.ts +2 -1
- package/lib/save/source/SourceClass.d.ts.map +1 -1
- package/lib/save/source/SourceClass.js +18 -17
- package/lib/save/source/SourceFilePrinter.d.ts +1 -1
- package/lib/save/source/SourceFilePrinter.d.ts.map +1 -1
- package/lib/save/source/SourceFilePrinter.js +9 -10
- package/lib/save/source/SourceMethod.d.ts +1 -1
- package/lib/save/source/SourceMethod.d.ts.map +1 -1
- package/lib/save/source/SourceMethod.js +37 -22
- package/lib/save/source/SourceNamespace.d.ts.map +1 -1
- package/lib/save/source/SourceNamespace.js +6 -6
- package/lib/save/source/SourceStmt.d.ts +1 -1
- package/lib/save/source/SourceStmt.d.ts.map +1 -1
- package/lib/save/source/SourceStmt.js +29 -42
- package/lib/save/source/SourceTransformer.d.ts +5 -1
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +107 -33
- package/lib/utils/SparseBitVector.d.ts +11 -2
- package/lib/utils/SparseBitVector.d.ts.map +1 -1
- package/lib/utils/SparseBitVector.js +70 -3
- package/package.json +1 -1
- package/lib/core/common/BodyBuilder.d.ts.map +0 -1
- package/lib/core/common/CfgBuilder.d.ts.map +0 -1
- package/lib/core/common/CfgBuilder.js +0 -1886
- package/lib/save/source/SourceModule.d.ts +0 -16
- package/lib/save/source/SourceModule.d.ts.map +0 -1
- package/lib/save/source/SourceModule.js +0 -125
|
@@ -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,
|
|
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;AAc5B,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,CAmB/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,CA8ChG;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,QA8CjD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -54,6 +54,11 @@ const ArkClassBuilder_1 = require("./ArkClassBuilder");
|
|
|
54
54
|
const Builtin_1 = require("../../common/Builtin");
|
|
55
55
|
const ArkBaseModel_1 = require("../ArkBaseModel");
|
|
56
56
|
const ArkValueTransformer_1 = require("../../common/ArkValueTransformer");
|
|
57
|
+
const TypeExpr_1 = require("../../base/TypeExpr");
|
|
58
|
+
const TSConst_1 = require("../../common/TSConst");
|
|
59
|
+
const ArkSignatureBuilder_1 = require("./ArkSignatureBuilder");
|
|
60
|
+
const Ref_1 = require("../../base/Ref");
|
|
61
|
+
const Local_1 = require("../../base/Local");
|
|
57
62
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'builderUtils');
|
|
58
63
|
function handleQualifiedName(node) {
|
|
59
64
|
let right = node.right.text;
|
|
@@ -354,12 +359,17 @@ function tsNode2Type(typeNode, sourceFile, arkInstance) {
|
|
|
354
359
|
return new Type_1.UnclearReferenceType(parameterTypeStr, genericTypes);
|
|
355
360
|
}
|
|
356
361
|
}
|
|
357
|
-
else if (ohos_typescript_1.default.isUnionTypeNode(typeNode)) {
|
|
358
|
-
let
|
|
362
|
+
else if (ohos_typescript_1.default.isUnionTypeNode(typeNode) || ohos_typescript_1.default.isIntersectionTypeNode(typeNode)) {
|
|
363
|
+
let multipleTypePara = [];
|
|
359
364
|
typeNode.types.forEach((tmpType) => {
|
|
360
|
-
|
|
365
|
+
multipleTypePara.push(tsNode2Type(tmpType, sourceFile, arkInstance));
|
|
361
366
|
});
|
|
362
|
-
|
|
367
|
+
if (ohos_typescript_1.default.isUnionTypeNode(typeNode)) {
|
|
368
|
+
return new Type_1.UnionType(multipleTypePara);
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
return new Type_1.IntersectionType(multipleTypePara);
|
|
372
|
+
}
|
|
363
373
|
}
|
|
364
374
|
else if (ohos_typescript_1.default.isLiteralTypeNode(typeNode)) {
|
|
365
375
|
return ArkValueTransformer_1.ArkValueTransformer.resolveLiteralTypeNode(typeNode, sourceFile);
|
|
@@ -426,6 +436,12 @@ function tsNode2Type(typeNode, sourceFile, arkInstance) {
|
|
|
426
436
|
else if (ohos_typescript_1.default.isParenthesizedTypeNode(typeNode)) {
|
|
427
437
|
return tsNode2Type(typeNode.type, sourceFile, arkInstance);
|
|
428
438
|
}
|
|
439
|
+
else if (ohos_typescript_1.default.isTypeOperatorNode(typeNode)) {
|
|
440
|
+
return buildTypeFromTypeOperator(typeNode, sourceFile, arkInstance);
|
|
441
|
+
}
|
|
442
|
+
else if (ohos_typescript_1.default.isTypeQueryNode(typeNode)) {
|
|
443
|
+
return buildTypeFromTypeQuery(typeNode, sourceFile, arkInstance);
|
|
444
|
+
}
|
|
429
445
|
else if (typeNode.kind === ohos_typescript_1.default.SyntaxKind.ObjectKeyword) {
|
|
430
446
|
return new Type_1.ClassType(Builtin_1.Builtin.OBJECT_CLASS_SIGNATURE);
|
|
431
447
|
}
|
|
@@ -482,3 +498,61 @@ function buildTypeFromPreStr(preStr) {
|
|
|
482
498
|
return TypeInference_1.TypeInference.buildTypeFromStr(postStr);
|
|
483
499
|
}
|
|
484
500
|
exports.buildTypeFromPreStr = buildTypeFromPreStr;
|
|
501
|
+
function buildTypeFromTypeOperator(typeOperatorNode, sourceFile, arkInstance) {
|
|
502
|
+
const typeNode = typeOperatorNode.type;
|
|
503
|
+
let type = tsNode2Type(typeNode, sourceFile, arkInstance);
|
|
504
|
+
switch (typeOperatorNode.operator) {
|
|
505
|
+
case (ohos_typescript_1.default.SyntaxKind.ReadonlyKeyword): {
|
|
506
|
+
if (type instanceof Type_1.ArrayType || type instanceof Type_1.TupleType) {
|
|
507
|
+
type.setReadonlyFlag(true);
|
|
508
|
+
}
|
|
509
|
+
return type;
|
|
510
|
+
}
|
|
511
|
+
case (ohos_typescript_1.default.SyntaxKind.KeyOfKeyword):
|
|
512
|
+
return new TypeExpr_1.KeyofTypeExpr(type);
|
|
513
|
+
case (ohos_typescript_1.default.SyntaxKind.UniqueKeyword):
|
|
514
|
+
return Type_1.UnknownType.getInstance();
|
|
515
|
+
default:
|
|
516
|
+
return Type_1.UnknownType.getInstance();
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
function buildTypeFromTypeQuery(typeQueryNode, sourceFile, arkInstance) {
|
|
520
|
+
var _a, _b, _c, _d, _e, _f;
|
|
521
|
+
const exprNameNode = typeQueryNode.exprName;
|
|
522
|
+
let opValue;
|
|
523
|
+
if (ohos_typescript_1.default.isQualifiedName(exprNameNode)) {
|
|
524
|
+
if (exprNameNode.left.getText(sourceFile) === TSConst_1.THIS_NAME) {
|
|
525
|
+
const fieldName = exprNameNode.right.getText(sourceFile);
|
|
526
|
+
if (arkInstance instanceof ArkMethod_1.ArkMethod) {
|
|
527
|
+
const fieldSignature = (_b = (_a = arkInstance.getDeclaringArkClass().getFieldWithName(fieldName)) === null || _a === void 0 ? void 0 : _a.getSignature()) !== null && _b !== void 0 ? _b : ArkSignatureBuilder_1.ArkSignatureBuilder.buildFieldSignatureFromFieldName(fieldName);
|
|
528
|
+
const baseLocal = (_d = (_c = arkInstance.getBody()) === null || _c === void 0 ? void 0 : _c.getLocals().get(TSConst_1.THIS_NAME)) !== null && _d !== void 0 ? _d : new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(arkInstance.getDeclaringArkClass().getSignature(), arkInstance.getDeclaringArkClass().getGenericsTypes()));
|
|
529
|
+
opValue = new Ref_1.ArkInstanceFieldRef(baseLocal, fieldSignature);
|
|
530
|
+
}
|
|
531
|
+
else if (arkInstance instanceof ArkClass_1.ArkClass) {
|
|
532
|
+
const fieldSignature = (_f = (_e = arkInstance.getFieldWithName(fieldName)) === null || _e === void 0 ? void 0 : _e.getSignature()) !== null && _f !== void 0 ? _f : ArkSignatureBuilder_1.ArkSignatureBuilder.buildFieldSignatureFromFieldName(fieldName);
|
|
533
|
+
const baseLocal = new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(arkInstance.getSignature(), arkInstance.getGenericsTypes()));
|
|
534
|
+
opValue = new Ref_1.ArkInstanceFieldRef(baseLocal, fieldSignature);
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
const fieldSignature = arkInstance.getSignature();
|
|
538
|
+
const baseLocal = new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(arkInstance.getDeclaringArkClass().getSignature(), arkInstance.getDeclaringArkClass().getGenericsTypes()));
|
|
539
|
+
opValue = new Ref_1.ArkInstanceFieldRef(baseLocal, fieldSignature);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
else {
|
|
543
|
+
const exprName = exprNameNode.getText(sourceFile);
|
|
544
|
+
opValue = new Local_1.Local(exprName, Type_1.UnknownType.getInstance());
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
else {
|
|
548
|
+
const exprName = exprNameNode.escapedText.toString();
|
|
549
|
+
opValue = new Local_1.Local(exprName, Type_1.UnknownType.getInstance());
|
|
550
|
+
}
|
|
551
|
+
let expr = new TypeExpr_1.TypeQueryExpr(opValue);
|
|
552
|
+
if (typeQueryNode.typeArguments) {
|
|
553
|
+
for (const typeArgument of typeQueryNode.typeArguments) {
|
|
554
|
+
expr.addGenericType(tsNode2Type(typeArgument, sourceFile, arkInstance));
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
return expr;
|
|
558
|
+
}
|
|
@@ -21,7 +21,7 @@ export declare class JsonPrinter extends Printer {
|
|
|
21
21
|
private serializeClassSignature;
|
|
22
22
|
private serializeFieldSignature;
|
|
23
23
|
private serializeMethodSignature;
|
|
24
|
-
private
|
|
24
|
+
private serializeAliasTypeSignature;
|
|
25
25
|
private serializeCfg;
|
|
26
26
|
private serializeBasicBlock;
|
|
27
27
|
private serializeLocal;
|
|
@@ -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;IAoHrB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,wBAAwB;IAYhC,OAAO,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;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;IAoHrB,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
|
@@ -244,7 +244,7 @@ class JsonPrinter extends Printer_1.Printer {
|
|
|
244
244
|
_: 'AliasType',
|
|
245
245
|
name: type.getName(),
|
|
246
246
|
originalType: this.serializeType(type.getOriginalType()),
|
|
247
|
-
signature: this.
|
|
247
|
+
signature: this.serializeAliasTypeSignature(type.getSignature()),
|
|
248
248
|
};
|
|
249
249
|
}
|
|
250
250
|
else if (type instanceof Type_1.AnnotationNamespaceType) {
|
|
@@ -315,7 +315,7 @@ class JsonPrinter extends Printer_1.Printer {
|
|
|
315
315
|
returnType: this.serializeType(method.getType()),
|
|
316
316
|
};
|
|
317
317
|
}
|
|
318
|
-
|
|
318
|
+
serializeAliasTypeSignature(signature) {
|
|
319
319
|
return {
|
|
320
320
|
name: signature.getName(),
|
|
321
321
|
method: this.serializeMethodSignature(signature.getDeclaringMethodSignature()),
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ArkFile } from '../core/model/ArkFile';
|
|
2
2
|
import { Printer } from './Printer';
|
|
3
|
+
import { Scene } from '../Scene';
|
|
4
|
+
import { PrinterOptions } from './base/BasePrinter';
|
|
3
5
|
/**
|
|
4
6
|
* @example
|
|
5
7
|
* // dump method IR to ts source
|
|
@@ -28,5 +30,25 @@ export declare class PrinterBuilder {
|
|
|
28
30
|
dumpToDot(arkFile: ArkFile, output?: string | undefined): void;
|
|
29
31
|
dumpToTs(arkFile: ArkFile, output?: string | undefined): void;
|
|
30
32
|
dumpToJson(arkFile: ArkFile, output?: string | undefined): void;
|
|
33
|
+
dumpToIR(arkFile: ArkFile, output?: string | undefined): void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @example
|
|
37
|
+
* // dump scene
|
|
38
|
+
* let scenePrinter = new ScenePrinter(scene, 'output');
|
|
39
|
+
* scenePrinter.dumpToTs();
|
|
40
|
+
* scenePrinter.dumpToIR();
|
|
41
|
+
*
|
|
42
|
+
* @category save
|
|
43
|
+
*/
|
|
44
|
+
export declare class ScenePrinter {
|
|
45
|
+
scene: Scene;
|
|
46
|
+
outputDir: string;
|
|
47
|
+
printer: PrinterBuilder;
|
|
48
|
+
constructor(scene: Scene, outputDir: string, option?: PrinterOptions);
|
|
49
|
+
dumpToDot(): void;
|
|
50
|
+
dumpToTs(): void;
|
|
51
|
+
dumpToJson(): void;
|
|
52
|
+
dumpToIR(): void;
|
|
31
53
|
}
|
|
32
54
|
//# sourceMappingURL=PrinterBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrinterBuilder.d.ts","sourceRoot":"","sources":["../../src/save/PrinterBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAc;IACvB,SAAS,EAAE,MAAM,CAAC;gBACN,SAAS,GAAE,MAAW;WAIpB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAIlD,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAQzC,SAAS,CACZ,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,MAAM,GAAG,SAAqB,GACvC,IAAI;IAWA,QAAQ,CACX,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,MAAM,GAAG,SAAqB,GACvC,IAAI;IAcA,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,MAAM,GAAG,SAAqB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"PrinterBuilder.d.ts","sourceRoot":"","sources":["../../src/save/PrinterBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAc;IACvB,SAAS,EAAE,MAAM,CAAC;gBACN,SAAS,GAAE,MAAW;WAIpB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAIlD,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAQzC,SAAS,CACZ,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,MAAM,GAAG,SAAqB,GACvC,IAAI;IAWA,QAAQ,CACX,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,MAAM,GAAG,SAAqB,GACvC,IAAI;IAcA,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,MAAM,GAAG,SAAqB,GAAG,IAAI;IAW1E,QAAQ,CACX,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,MAAM,GAAG,SAAqB,GACvC,IAAI;CAaV;AAED;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;gBAEZ,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc;IAS7D,SAAS;IAMT,QAAQ;IAOR,UAAU;IAMV,QAAQ;CAKlB"}
|
|
@@ -17,12 +17,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.PrinterBuilder = void 0;
|
|
20
|
+
exports.ScenePrinter = exports.PrinterBuilder = void 0;
|
|
21
21
|
const fs_1 = __importDefault(require("fs"));
|
|
22
22
|
const path_1 = __importDefault(require("path"));
|
|
23
23
|
const DotPrinter_1 = require("./DotPrinter");
|
|
24
24
|
const SourceFilePrinter_1 = require("./source/SourceFilePrinter");
|
|
25
25
|
const JsonPrinter_1 = require("./JsonPrinter");
|
|
26
|
+
const ArkIRFilePrinter_1 = require("./arkir/ArkIRFilePrinter");
|
|
27
|
+
const BasePrinter_1 = require("./base/BasePrinter");
|
|
26
28
|
/**
|
|
27
29
|
* @example
|
|
28
30
|
* // dump method IR to ts source
|
|
@@ -88,5 +90,56 @@ class PrinterBuilder {
|
|
|
88
90
|
let printer = new JsonPrinter_1.JsonPrinter(arkFile);
|
|
89
91
|
PrinterBuilder.dump(printer, filename);
|
|
90
92
|
}
|
|
93
|
+
dumpToIR(arkFile, output = undefined) {
|
|
94
|
+
let filename = output;
|
|
95
|
+
if (filename === undefined) {
|
|
96
|
+
filename = path_1.default.join(this.getOutputDir(arkFile), arkFile.getName());
|
|
97
|
+
}
|
|
98
|
+
filename += '.ir';
|
|
99
|
+
fs_1.default.mkdirSync(path_1.default.dirname(filename), { recursive: true });
|
|
100
|
+
let printer = new ArkIRFilePrinter_1.ArkIRFilePrinter(arkFile);
|
|
101
|
+
PrinterBuilder.dump(printer, filename);
|
|
102
|
+
}
|
|
91
103
|
}
|
|
92
104
|
exports.PrinterBuilder = PrinterBuilder;
|
|
105
|
+
/**
|
|
106
|
+
* @example
|
|
107
|
+
* // dump scene
|
|
108
|
+
* let scenePrinter = new ScenePrinter(scene, 'output');
|
|
109
|
+
* scenePrinter.dumpToTs();
|
|
110
|
+
* scenePrinter.dumpToIR();
|
|
111
|
+
*
|
|
112
|
+
* @category save
|
|
113
|
+
*/
|
|
114
|
+
class ScenePrinter {
|
|
115
|
+
constructor(scene, outputDir, option) {
|
|
116
|
+
this.scene = scene;
|
|
117
|
+
this.outputDir = outputDir;
|
|
118
|
+
this.printer = new PrinterBuilder(outputDir);
|
|
119
|
+
if (option) {
|
|
120
|
+
(0, BasePrinter_1.setPrinterOptions)(option);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
dumpToDot() {
|
|
124
|
+
for (let f of this.scene.getFiles()) {
|
|
125
|
+
this.printer.dumpToDot(f);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
dumpToTs() {
|
|
129
|
+
for (let f of this.scene.getFiles()) {
|
|
130
|
+
let relativePath = path_1.default.relative(f.getProjectDir(), f.getFilePath());
|
|
131
|
+
this.printer.dumpToTs(f, path_1.default.join(this.outputDir, relativePath));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
dumpToJson() {
|
|
135
|
+
for (let f of this.scene.getFiles()) {
|
|
136
|
+
this.printer.dumpToJson(f);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
dumpToIR() {
|
|
140
|
+
for (let f of this.scene.getFiles()) {
|
|
141
|
+
this.printer.dumpToIR(f);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.ScenePrinter = ScenePrinter;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ArkClass } from '../../core/model/ArkClass';
|
|
2
|
+
import { BasePrinter, Dump } from '../base/BasePrinter';
|
|
3
|
+
/**
|
|
4
|
+
* @category save
|
|
5
|
+
*/
|
|
6
|
+
export declare class ArkIRClassPrinter extends BasePrinter {
|
|
7
|
+
protected cls: ArkClass;
|
|
8
|
+
constructor(cls: ArkClass, indent?: string);
|
|
9
|
+
getLine(): number;
|
|
10
|
+
dump(): string;
|
|
11
|
+
protected printMethods(): Dump[];
|
|
12
|
+
private printFields;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ArkIRClassPrinter.d.ts.map
|
|
@@ -0,0 +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;IA8CrB,SAAS,CAAC,YAAY,IAAI,IAAI,EAAE;IAkBhC,OAAO,CAAC,WAAW;CAOtB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025 Huawei Device Co., Ltd.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ArkIRClassPrinter = void 0;
|
|
18
|
+
const ArkMetadata_1 = require("../../core/model/ArkMetadata");
|
|
19
|
+
const BasePrinter_1 = require("../base/BasePrinter");
|
|
20
|
+
const ArkIRFieldPrinter_1 = require("./ArkIRFieldPrinter");
|
|
21
|
+
const ArkIRMethodPrinter_1 = require("./ArkIRMethodPrinter");
|
|
22
|
+
/**
|
|
23
|
+
* @category save
|
|
24
|
+
*/
|
|
25
|
+
class ArkIRClassPrinter extends BasePrinter_1.BasePrinter {
|
|
26
|
+
constructor(cls, indent = '') {
|
|
27
|
+
super(indent);
|
|
28
|
+
this.cls = cls;
|
|
29
|
+
}
|
|
30
|
+
getLine() {
|
|
31
|
+
return this.cls.getLine();
|
|
32
|
+
}
|
|
33
|
+
dump() {
|
|
34
|
+
this.printer.clear();
|
|
35
|
+
const commentsMetadata = this.cls.getMetadata(ArkMetadata_1.ArkMetadataKind.LEADING_COMMENTS);
|
|
36
|
+
if (commentsMetadata instanceof ArkMetadata_1.CommentsMetadata) {
|
|
37
|
+
this.printComments(commentsMetadata);
|
|
38
|
+
}
|
|
39
|
+
this.printDecorator(this.cls.getDecorators());
|
|
40
|
+
// print export class name<> + extends c0 implements x1, x2 {
|
|
41
|
+
this.printer
|
|
42
|
+
.writeIndent()
|
|
43
|
+
.writeSpace(this.modifiersToString(this.cls.getModifiers()))
|
|
44
|
+
.write(`${this.classOriginTypeToString(this.cls.getCategory())} `);
|
|
45
|
+
this.printer.write(this.cls.getName());
|
|
46
|
+
const genericsTypes = this.cls.getGenericsTypes();
|
|
47
|
+
if (genericsTypes) {
|
|
48
|
+
this.printer.write(`<${genericsTypes.map((v) => v.toString()).join(', ')}>`);
|
|
49
|
+
}
|
|
50
|
+
if (this.cls.getSuperClassName() && !this.cls.hasComponentDecorator()) {
|
|
51
|
+
this.printer.write(` extends ${this.cls.getSuperClassName()}`);
|
|
52
|
+
}
|
|
53
|
+
if (this.cls.getImplementedInterfaceNames().length > 0) {
|
|
54
|
+
this.printer.write(` implements ${this.cls.getImplementedInterfaceNames().join(', ')}`);
|
|
55
|
+
}
|
|
56
|
+
this.printer.writeLine(' {');
|
|
57
|
+
this.printer.incIndent();
|
|
58
|
+
let items = [];
|
|
59
|
+
items.push(...this.printFields());
|
|
60
|
+
items.push(...this.printMethods());
|
|
61
|
+
items.sort((a, b) => a.getLine() - b.getLine());
|
|
62
|
+
items.forEach((v) => {
|
|
63
|
+
this.printer.write(v.dump());
|
|
64
|
+
});
|
|
65
|
+
this.printer.decIndent();
|
|
66
|
+
this.printer.writeIndent().writeLine('}');
|
|
67
|
+
return this.printer.toString();
|
|
68
|
+
}
|
|
69
|
+
printMethods() {
|
|
70
|
+
let items = [];
|
|
71
|
+
for (let method of this.cls.getMethods()) {
|
|
72
|
+
items.push(new ArkIRMethodPrinter_1.ArkIRMethodPrinter(method, this.printer.getIndent()));
|
|
73
|
+
}
|
|
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
|
+
return items;
|
|
83
|
+
}
|
|
84
|
+
printFields() {
|
|
85
|
+
let items = [];
|
|
86
|
+
for (let field of this.cls.getFields()) {
|
|
87
|
+
items.push(new ArkIRFieldPrinter_1.ArkIRFieldPrinter(field, this.printer.getIndent()));
|
|
88
|
+
}
|
|
89
|
+
return items;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.ArkIRClassPrinter = ArkIRClassPrinter;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ArkField } from '../../core/model/ArkField';
|
|
2
|
+
import { BasePrinter } from '../base/BasePrinter';
|
|
3
|
+
/**
|
|
4
|
+
* @category save
|
|
5
|
+
*/
|
|
6
|
+
export declare class ArkIRFieldPrinter extends BasePrinter {
|
|
7
|
+
private field;
|
|
8
|
+
constructor(field: ArkField, indent?: string);
|
|
9
|
+
getLine(): number;
|
|
10
|
+
dump(): string;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=ArkIRFieldPrinter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArkIRFieldPrinter.d.ts","sourceRoot":"","sources":["../../../src/save/arkir/ArkIRFieldPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAiB,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAC9C,OAAO,CAAC,KAAK,CAAW;gBAEL,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAE,MAAW;IAKhD,OAAO,IAAI,MAAM;IAGjB,IAAI,IAAI,MAAM;CAiCxB"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025 Huawei Device Co., Ltd.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ArkIRFieldPrinter = void 0;
|
|
18
|
+
const ArkField_1 = require("../../core/model/ArkField");
|
|
19
|
+
const Type_1 = require("../../core/base/Type");
|
|
20
|
+
const ArkMetadata_1 = require("../../core/model/ArkMetadata");
|
|
21
|
+
const BasePrinter_1 = require("../base/BasePrinter");
|
|
22
|
+
/**
|
|
23
|
+
* @category save
|
|
24
|
+
*/
|
|
25
|
+
class ArkIRFieldPrinter extends BasePrinter_1.BasePrinter {
|
|
26
|
+
constructor(field, indent = '') {
|
|
27
|
+
super(indent);
|
|
28
|
+
this.field = field;
|
|
29
|
+
}
|
|
30
|
+
getLine() {
|
|
31
|
+
return this.field.getOriginPosition().getLineNo();
|
|
32
|
+
}
|
|
33
|
+
dump() {
|
|
34
|
+
this.printer.clear();
|
|
35
|
+
const commentsMetadata = this.field.getMetadata(ArkMetadata_1.ArkMetadataKind.LEADING_COMMENTS);
|
|
36
|
+
if (commentsMetadata instanceof ArkMetadata_1.CommentsMetadata) {
|
|
37
|
+
this.printComments(commentsMetadata);
|
|
38
|
+
}
|
|
39
|
+
this.printDecorator(this.field.getDecorators());
|
|
40
|
+
this.printer.writeIndent();
|
|
41
|
+
if (this.field.getCategory() !== ArkField_1.FieldCategory.ENUM_MEMBER) {
|
|
42
|
+
this.printer.writeSpace(this.modifiersToString(this.field.getModifiers()));
|
|
43
|
+
}
|
|
44
|
+
this.printer.write(this.field.getName());
|
|
45
|
+
if (this.field.getQuestionToken()) {
|
|
46
|
+
this.printer.write('?');
|
|
47
|
+
}
|
|
48
|
+
if (this.field.getExclamationToken()) {
|
|
49
|
+
this.printer.write('!');
|
|
50
|
+
}
|
|
51
|
+
// property.getInitializer() PropertyAccessExpression ArrowFunction ClassExpression FirstLiteralToken StringLiteral
|
|
52
|
+
if (!(this.field.getType() instanceof Type_1.UnknownType) && this.field.getCategory() !== ArkField_1.FieldCategory.ENUM_MEMBER) {
|
|
53
|
+
this.printer.write(`: ${this.field.getType().toString()}`);
|
|
54
|
+
}
|
|
55
|
+
if (this.field.getCategory() === ArkField_1.FieldCategory.ENUM_MEMBER) {
|
|
56
|
+
this.printer.writeLine(',');
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
this.printer.writeLine(';');
|
|
60
|
+
}
|
|
61
|
+
return this.printer.toString();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.ArkIRFieldPrinter = ArkIRFieldPrinter;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ArkFile } from '../../core/model/ArkFile';
|
|
2
|
+
import { Dump } from '../base/BasePrinter';
|
|
3
|
+
import { Printer } from '../Printer';
|
|
4
|
+
/**
|
|
5
|
+
* @category save
|
|
6
|
+
*/
|
|
7
|
+
export declare class ArkIRFilePrinter extends Printer {
|
|
8
|
+
arkFile: ArkFile;
|
|
9
|
+
items: Dump[];
|
|
10
|
+
constructor(arkFile: ArkFile);
|
|
11
|
+
dump(): string;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=ArkIRFilePrinter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArkIRFilePrinter.d.ts","sourceRoot":"","sources":["../../../src/save/arkir/ArkIRFilePrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAMrC;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,OAAO;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAM;gBAEP,OAAO,EAAE,OAAO;IAKrB,IAAI,IAAI,MAAM;CAyBxB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025 Huawei Device Co., Ltd.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ArkIRFilePrinter = void 0;
|
|
18
|
+
const Printer_1 = require("../Printer");
|
|
19
|
+
const ArkIRClassPrinter_1 = require("./ArkIRClassPrinter");
|
|
20
|
+
const ExportPrinter_1 = require("../base/ExportPrinter");
|
|
21
|
+
const ImportPrinter_1 = require("../base/ImportPrinter");
|
|
22
|
+
const ArkIRNamespacePrinter_1 = require("./ArkIRNamespacePrinter");
|
|
23
|
+
/**
|
|
24
|
+
* @category save
|
|
25
|
+
*/
|
|
26
|
+
class ArkIRFilePrinter extends Printer_1.Printer {
|
|
27
|
+
constructor(arkFile) {
|
|
28
|
+
super();
|
|
29
|
+
this.items = [];
|
|
30
|
+
this.arkFile = arkFile;
|
|
31
|
+
}
|
|
32
|
+
dump() {
|
|
33
|
+
// print imports
|
|
34
|
+
this.items.push(...(0, ImportPrinter_1.printImports)(this.arkFile.getImportInfos(), this.printer.getIndent()));
|
|
35
|
+
// print namespace
|
|
36
|
+
for (let ns of this.arkFile.getNamespaces()) {
|
|
37
|
+
this.items.push(new ArkIRNamespacePrinter_1.ArkIRNamespacePrinter(ns));
|
|
38
|
+
}
|
|
39
|
+
// print class
|
|
40
|
+
for (let cls of this.arkFile.getClasses()) {
|
|
41
|
+
this.items.push(new ArkIRClassPrinter_1.ArkIRClassPrinter(cls));
|
|
42
|
+
}
|
|
43
|
+
// print export
|
|
44
|
+
for (let info of this.arkFile.getExportInfos()) {
|
|
45
|
+
this.items.push(new ExportPrinter_1.ExportPrinter(info));
|
|
46
|
+
}
|
|
47
|
+
this.items.sort((a, b) => a.getLine() - b.getLine());
|
|
48
|
+
this.items.forEach((v) => {
|
|
49
|
+
this.printer.write(v.dump());
|
|
50
|
+
});
|
|
51
|
+
return this.printer.toString();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.ArkIRFilePrinter = ArkIRFilePrinter;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ArkMethod } from '../../core/model/ArkMethod';
|
|
2
|
+
import { BasePrinter } from '../base/BasePrinter';
|
|
3
|
+
/**
|
|
4
|
+
* @category save
|
|
5
|
+
*/
|
|
6
|
+
export declare class ArkIRMethodPrinter extends BasePrinter {
|
|
7
|
+
private method;
|
|
8
|
+
constructor(method: ArkMethod, indent?: string);
|
|
9
|
+
dump(): string;
|
|
10
|
+
getLine(): number;
|
|
11
|
+
private printMethod;
|
|
12
|
+
private printBody;
|
|
13
|
+
protected methodProtoToString(method: ArkMethod): string;
|
|
14
|
+
private printCfg;
|
|
15
|
+
private printBasicBlock;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=ArkIRMethodPrinter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArkIRMethodPrinter.d.ts","sourceRoot":"","sources":["../../../src/save/arkir/ArkIRMethodPrinter.ts"],"names":[],"mappings":"AAgBA,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;IAiBnB,OAAO,CAAC,SAAS;IAMjB,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAwCxD,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,eAAe;CA2B1B"}
|