arkanalyzer 1.0.85 → 1.0.87
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/README.en.md +69 -65
- package/README.md +56 -70
- package/config/arkanalyzer.json +7 -2
- package/docs/cppFrontend/ArkAnalyzer-cpp_usage_guide.md +245 -0
- package/docs/cppFrontend/cpp_frontend_build_guide.md +126 -0
- package/docs/cppFrontend/cpp_frontend_user_guide.md +175 -0
- package/docs/cppFrontend/img.png +0 -0
- package/docs/cppFrontend/img_1.png +0 -0
- package/docs/cppFrontend/img_10.png +0 -0
- package/docs/cppFrontend/img_11.png +0 -0
- package/docs/cppFrontend/img_12.png +0 -0
- package/docs/cppFrontend/img_13.png +0 -0
- package/docs/cppFrontend/img_14.png +0 -0
- package/docs/cppFrontend/img_15.png +0 -0
- package/docs/cppFrontend/img_16.png +0 -0
- package/docs/cppFrontend/img_17.png +0 -0
- package/docs/cppFrontend/img_18.png +0 -0
- package/docs/cppFrontend/img_19.png +0 -0
- package/docs/cppFrontend/img_2.png +0 -0
- package/docs/cppFrontend/img_20.png +0 -0
- package/docs/cppFrontend/img_21.png +0 -0
- package/docs/cppFrontend/img_22.png +0 -0
- package/docs/cppFrontend/img_23.png +0 -0
- package/docs/cppFrontend/img_3.png +0 -0
- package/docs/cppFrontend/img_4.png +0 -0
- package/docs/cppFrontend/img_5.png +0 -0
- package/docs/cppFrontend/img_6.png +0 -0
- package/docs/cppFrontend/img_7.png +0 -0
- package/docs/cppFrontend/img_8.png +0 -0
- package/docs/cppFrontend/img_9.png +0 -0
- package/docs/sig_programanalysis.en.md +66 -0
- package/docs/sig_programanalysis.md +73 -0
- package/lib/Config.d.ts +32 -1
- package/lib/Config.d.ts.map +1 -1
- package/lib/Config.js +76 -2
- package/lib/Scene.d.ts +25 -2
- package/lib/Scene.d.ts.map +1 -1
- package/lib/Scene.js +148 -40
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +4 -3
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/AbstractAnalysis.js +17 -17
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts +6 -1
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +117 -14
- package/lib/callgraph/common/Statistics.d.ts +4 -2
- package/lib/callgraph/common/Statistics.d.ts.map +1 -1
- package/lib/callgraph/common/Statistics.js +14 -2
- package/lib/callgraph/model/CallGraph.d.ts +12 -8
- package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
- package/lib/callgraph/model/CallGraph.js +53 -29
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +1 -0
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts.map +1 -1
- package/lib/callgraph/model/builder/CallGraphBuilder.js +5 -1
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +3 -0
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +4 -2
- package/lib/cli/cli.d.ts +3 -0
- package/lib/cli/cli.d.ts.map +1 -0
- package/lib/cli/cli.js +82 -0
- package/lib/cli/commands/cg.d.ts +32 -0
- package/lib/cli/commands/cg.d.ts.map +1 -0
- package/lib/cli/commands/cg.js +401 -0
- package/lib/cli/commands/index.d.ts +6 -0
- package/lib/cli/commands/index.d.ts.map +1 -0
- package/lib/cli/commands/index.js +64 -0
- package/lib/cli/commands/ir.d.ts +26 -0
- package/lib/cli/commands/ir.d.ts.map +1 -0
- package/lib/cli/commands/ir.js +94 -0
- package/lib/core/base/Constant.d.ts +1 -1
- package/lib/core/base/Constant.d.ts.map +1 -1
- package/lib/core/base/Constant.js +1 -1
- package/lib/core/base/Expr.d.ts +29 -5
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +144 -22
- package/lib/core/base/Position.d.ts +14 -0
- package/lib/core/base/Position.d.ts.map +1 -1
- package/lib/core/base/Position.js +27 -0
- package/lib/core/base/Ref.d.ts +1 -0
- package/lib/core/base/Ref.d.ts.map +1 -1
- package/lib/core/base/Ref.js +4 -1
- package/lib/core/base/Type.d.ts +64 -24
- package/lib/core/base/Type.d.ts.map +1 -1
- package/lib/core/base/Type.js +144 -49
- package/lib/core/common/ArkError.d.ts +26 -2
- package/lib/core/common/ArkError.d.ts.map +1 -1
- package/lib/core/common/ArkError.js +56 -2
- package/lib/core/common/ArkIRTransformer.d.ts +11 -10
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +1 -1
- package/lib/core/common/ArkValueTransformer.d.ts +14 -12
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +1 -5
- package/lib/core/common/Const.d.ts +3 -0
- package/lib/core/common/Const.d.ts.map +1 -1
- package/lib/core/common/Const.js +4 -1
- package/lib/core/common/DummyMainCreater.d.ts +23 -13
- package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
- package/lib/core/common/DummyMainCreater.js +66 -43
- package/lib/core/common/EtsConst.d.ts +11 -0
- package/lib/core/common/EtsConst.d.ts.map +1 -1
- package/lib/core/common/EtsConst.js +12 -1
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +5 -1
- package/lib/core/common/ModelUtils.d.ts +4 -7
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +77 -110
- package/lib/core/common/SdkUtils.d.ts +1 -1
- package/lib/core/common/SdkUtils.d.ts.map +1 -1
- package/lib/core/common/SdkUtils.js +14 -5
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +9 -3
- package/lib/core/graph/BaseExplicitGraph.d.ts +4 -4
- package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
- package/lib/core/graph/BaseExplicitGraph.js +15 -8
- package/lib/core/graph/BasicBlock.d.ts.map +1 -1
- package/lib/core/graph/Scc.d.ts.map +1 -1
- package/lib/core/graph/Scc.js +7 -2
- package/lib/core/graph/builder/CfgBuilder.d.ts +10 -7
- package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/CfgBuilder.js +12 -5
- package/lib/core/inference/Inference.d.ts.map +1 -1
- package/lib/core/inference/Inference.js +7 -0
- package/lib/core/inference/ModelInference.d.ts +1 -1
- package/lib/core/inference/ModelInference.d.ts.map +1 -1
- package/lib/core/inference/ValueInference.d.ts +3 -2
- package/lib/core/inference/ValueInference.d.ts.map +1 -1
- package/lib/core/inference/ValueInference.js +64 -12
- package/lib/core/inference/abc/AbcInference.d.ts +28 -2
- package/lib/core/inference/abc/AbcInference.d.ts.map +1 -1
- package/lib/core/inference/abc/AbcInference.js +105 -4
- package/lib/core/model/ArkBaseModel.d.ts +14 -1
- package/lib/core/model/ArkBaseModel.d.ts.map +1 -1
- package/lib/core/model/ArkBaseModel.js +61 -2
- package/lib/core/model/ArkBody.d.ts.map +1 -1
- package/lib/core/model/ArkBody.js +1 -3
- package/lib/core/model/ArkClass.d.ts +22 -2
- package/lib/core/model/ArkClass.d.ts.map +1 -1
- package/lib/core/model/ArkClass.js +59 -28
- package/lib/core/model/ArkField.d.ts.map +1 -1
- package/lib/core/model/ArkField.js +3 -1
- package/lib/core/model/ArkFile.d.ts +4 -1
- package/lib/core/model/ArkFile.d.ts.map +1 -1
- package/lib/core/model/ArkFile.js +44 -3
- package/lib/core/model/ArkImport.d.ts.map +1 -1
- package/lib/core/model/ArkImport.js +9 -1
- package/lib/core/model/ArkMethod.d.ts +5 -0
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +33 -1
- package/lib/core/model/ArkNamespace.d.ts +2 -0
- package/lib/core/model/ArkNamespace.d.ts.map +1 -1
- package/lib/core/model/ArkNamespace.js +11 -0
- package/lib/core/model/ArkSignature.d.ts +3 -3
- package/lib/core/model/ArkSignature.d.ts.map +1 -1
- package/lib/core/model/ArkSignature.js +14 -9
- package/lib/core/model/builder/ArkClassBuilder.d.ts +2 -0
- package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkClassBuilder.js +3 -3
- package/lib/core/model/builder/ArkMethodBuilder.d.ts +4 -1
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +19 -6
- package/lib/core/model/builder/ArkNamespaceBuilder.d.ts +1 -0
- package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkNamespaceBuilder.js +2 -1
- package/lib/core/model/builder/BodyBuilder.d.ts +4 -0
- package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.d.ts +1 -0
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +7 -3
- package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.d.ts +296 -0
- package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.js +145 -0
- package/lib/frontend/cppFrontend/ast/astUtils.d.ts +51 -0
- package/lib/frontend/cppFrontend/ast/astUtils.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/ast/astUtils.js +470 -0
- package/lib/frontend/cppFrontend/ast/const.d.ts +30 -0
- package/lib/frontend/cppFrontend/ast/const.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/ast/const.js +134 -0
- package/lib/frontend/cppFrontend/base/Constant.d.ts +9 -0
- package/lib/frontend/cppFrontend/base/Constant.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/base/Constant.js +33 -0
- package/lib/frontend/cppFrontend/base/Expr.d.ts +174 -0
- package/lib/frontend/cppFrontend/base/Expr.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/base/Expr.js +530 -0
- package/lib/frontend/cppFrontend/base/Ref.d.ts +25 -0
- package/lib/frontend/cppFrontend/base/Ref.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/base/Ref.js +53 -0
- package/lib/frontend/cppFrontend/base/Trap.d.ts +8 -0
- package/lib/frontend/cppFrontend/base/Trap.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/base/Trap.js +28 -0
- package/lib/frontend/cppFrontend/base/Type.d.ts +264 -0
- package/lib/frontend/cppFrontend/base/Type.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/base/Type.js +600 -0
- package/lib/frontend/cppFrontend/common/ArkIRTransformer.d.ts +109 -0
- package/lib/frontend/cppFrontend/common/ArkIRTransformer.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/common/ArkIRTransformer.js +925 -0
- package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts +477 -0
- package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/common/ArkValueTransformer.js +2746 -0
- package/lib/frontend/cppFrontend/common/Builtin.d.ts +57 -0
- package/lib/frontend/cppFrontend/common/Builtin.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/common/Builtin.js +106 -0
- package/lib/frontend/cppFrontend/common/IRInference.d.ts +94 -0
- package/lib/frontend/cppFrontend/common/IRInference.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/common/IRInference.js +1087 -0
- package/lib/frontend/cppFrontend/common/IRUtils.d.ts +23 -0
- package/lib/frontend/cppFrontend/common/IRUtils.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/common/IRUtils.js +168 -0
- package/lib/frontend/cppFrontend/common/ModelUtils.d.ts +44 -0
- package/lib/frontend/cppFrontend/common/ModelUtils.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/common/ModelUtils.js +567 -0
- package/lib/frontend/cppFrontend/common/TypeInference.d.ts +278 -0
- package/lib/frontend/cppFrontend/common/TypeInference.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/common/TypeInference.js +1354 -0
- package/lib/frontend/cppFrontend/common/ValueUtil.d.ts +16 -0
- package/lib/frontend/cppFrontend/common/ValueUtil.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/common/ValueUtil.js +61 -0
- package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.d.ts +182 -0
- package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.js +1435 -0
- package/lib/frontend/cppFrontend/graph/builder/ConditionBuilder.d.ts +21 -0
- package/lib/frontend/cppFrontend/graph/builder/ConditionBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/graph/builder/ConditionBuilder.js +303 -0
- package/lib/frontend/cppFrontend/graph/builder/IfBuilder.d.ts +15 -0
- package/lib/frontend/cppFrontend/graph/builder/IfBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/graph/builder/IfBuilder.js +161 -0
- package/lib/frontend/cppFrontend/graph/builder/LoopBuilder.d.ts +21 -0
- package/lib/frontend/cppFrontend/graph/builder/LoopBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/graph/builder/LoopBuilder.js +261 -0
- package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.d.ts +12 -0
- package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.js +155 -0
- package/lib/frontend/cppFrontend/graph/builder/TrapBuilder.d.ts +29 -0
- package/lib/frontend/cppFrontend/graph/builder/TrapBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/graph/builder/TrapBuilder.js +302 -0
- package/lib/frontend/cppFrontend/inference/CxxInference.d.ts +10 -0
- package/lib/frontend/cppFrontend/inference/CxxInference.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/inference/CxxInference.js +41 -0
- package/lib/frontend/cppFrontend/inference/CxxModelInference.d.ts +28 -0
- package/lib/frontend/cppFrontend/inference/CxxModelInference.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/inference/CxxModelInference.js +98 -0
- package/lib/frontend/cppFrontend/inference/CxxValueInference.d.ts +20 -0
- package/lib/frontend/cppFrontend/inference/CxxValueInference.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/inference/CxxValueInference.js +128 -0
- package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.d.ts +11 -0
- package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.js +413 -0
- package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.d.ts +5 -0
- package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.js +61 -0
- package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts +17 -0
- package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.js +285 -0
- package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.d.ts +6 -0
- package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.js +57 -0
- package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.d.ts +14 -0
- package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.js +422 -0
- package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts +8 -0
- package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.js +194 -0
- package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts +59 -0
- package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/model/builder/BodyBuilder.js +605 -0
- package/lib/frontend/cppFrontend/model/builder/builderUtils.d.ts +46 -0
- package/lib/frontend/cppFrontend/model/builder/builderUtils.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/model/builder/builderUtils.js +499 -0
- package/lib/frontend/cppFrontend/utils/cmakeUtils.d.ts +44 -0
- package/lib/frontend/cppFrontend/utils/cmakeUtils.d.ts.map +1 -0
- package/lib/frontend/cppFrontend/utils/cmakeUtils.js +240 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +7 -1
- package/lib/node_modules/ohos-typescript/.ohos-typescript-version +1 -0
- package/{node_modules → lib/node_modules}/ohos-typescript/package.json +2 -1
- package/lib/save/CGJsonPrinter.d.ts +8 -0
- package/lib/save/CGJsonPrinter.d.ts.map +1 -0
- package/lib/save/CGJsonPrinter.js +41 -0
- package/lib/save/GraphPrinter.js +2 -2
- package/lib/save/json/JsonDto.d.ts +86 -2
- package/lib/save/json/JsonDto.d.ts.map +1 -1
- package/lib/save/json/JsonSerialization.d.ts +1 -1
- package/lib/save/json/JsonSerialization.d.ts.map +1 -1
- package/lib/save/json/JsonSerialization.js +235 -145
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +0 -3
- package/lib/utils/CxxSceneUtils.d.ts +11 -0
- package/lib/utils/CxxSceneUtils.d.ts.map +1 -0
- package/lib/utils/CxxSceneUtils.js +178 -0
- package/lib/utils/FileUtils.d.ts +7 -8
- package/lib/utils/FileUtils.d.ts.map +1 -1
- package/lib/utils/FileUtils.js +27 -45
- package/lib/utils/LRUCacheDecorator.d.ts +20 -0
- package/lib/utils/LRUCacheDecorator.d.ts.map +1 -0
- package/lib/utils/LRUCacheDecorator.js +89 -0
- package/lib/utils/ModuleUtils.d.ts +39 -0
- package/lib/utils/ModuleUtils.d.ts.map +1 -0
- package/lib/utils/ModuleUtils.js +261 -0
- package/package.json +15 -12
- /package/{node_modules → lib/node_modules}/ohos-typescript/LICENSE +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/README.OpenSource +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/README.md +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/SECURITY.md +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/ThirdPartyNoticeText.txt +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/bin/tsc +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/bin/tsserver +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/README.md +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/cancellationToken.js +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/cs/diagnosticMessages.generated.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/de/diagnosticMessages.generated.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/es/diagnosticMessages.generated.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/fr/diagnosticMessages.generated.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/it/diagnosticMessages.generated.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/ja/diagnosticMessages.generated.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/ko/diagnosticMessages.generated.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.dom.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.dom.iterable.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.collection.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.core.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.generator.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.iterable.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.promise.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.proxy.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.reflect.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.symbol.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2016.array.include.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2016.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2016.full.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.full.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.intl.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.object.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.sharedmemory.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.string.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.typedarrays.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.asynciterable.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.full.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.intl.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.promise.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.regexp.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.array.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.full.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.intl.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.object.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.string.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.symbol.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.bigint.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.date.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.full.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.intl.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.number.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.promise.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.sharedmemory.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.string.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.full.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.intl.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.promise.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.string.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.weakref.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.array.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.error.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.full.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.intl.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.object.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.sharedmemory.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.string.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es5.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es6.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.esnext.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.esnext.full.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.esnext.intl.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.scripthost.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.webworker.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.webworker.importscripts.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.webworker.iterable.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/pl/diagnosticMessages.generated.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/pt-br/diagnosticMessages.generated.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/ru/diagnosticMessages.generated.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tr/diagnosticMessages.generated.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsc.js +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsserver.js +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsserverlibrary.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsserverlibrary.js +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typesMap.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typescript.d.ts +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typescript.js +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typingsInstaller.js +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/watchGuard.js +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -0
- /package/{node_modules → lib/node_modules}/ohos-typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -0
|
@@ -14,9 +14,11 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.serializeStmt = exports.serializeValue = exports.serializeConstant = exports.serializeLocal = exports.serializeBasicBlock = exports.serializeCfg = exports.serializeAliasTypeSignature = exports.serializeMethodSignature = exports.serializeFieldSignature = exports.serializeClassSignature = exports.serializeNamespaceSignature = exports.serializeFileSignature = exports.
|
|
17
|
+
exports.serializeStmt = exports.serializeValue = exports.serializeConstant = exports.serializeType = exports.serializeLocal = exports.serializeBasicBlock = exports.serializeCfg = exports.serializeAliasTypeSignature = exports.serializeMethodSignature = exports.serializeFieldSignature = exports.serializeClassSignature = exports.serializeNamespaceSignature = exports.serializeFileSignature = exports.serializeLineColPosition = exports.serializeDecorator = exports.serializeExportInfo = exports.serializeImportInfo = exports.serializeMethodParameter = exports.serializeMethodBody = exports.serializeMethod = exports.serializeField = exports.serializeClass = exports.serializeNamespace = exports.serializeArkFile = exports.serializeArkScene = void 0;
|
|
18
18
|
const __1 = require("../..");
|
|
19
19
|
const JsonDto_1 = require("./JsonDto");
|
|
20
|
+
const Expr_1 = require("../../frontend/cppFrontend/base/Expr");
|
|
21
|
+
const Type_1 = require("../../frontend/cppFrontend/base/Type");
|
|
20
22
|
function serializeArkScene(scene) {
|
|
21
23
|
return {
|
|
22
24
|
files: scene.getFiles().map(f => serializeArkFile(f)),
|
|
@@ -128,150 +130,6 @@ function serializeLineColPosition(position) {
|
|
|
128
130
|
};
|
|
129
131
|
}
|
|
130
132
|
exports.serializeLineColPosition = serializeLineColPosition;
|
|
131
|
-
function serializeType(type) {
|
|
132
|
-
var _a, _b, _c;
|
|
133
|
-
if (type === undefined) {
|
|
134
|
-
throw new Error('Type is undefined');
|
|
135
|
-
}
|
|
136
|
-
if (type instanceof __1.AnyType) {
|
|
137
|
-
return (0, JsonDto_1.polymorphic)('AnyType', {});
|
|
138
|
-
}
|
|
139
|
-
else if (type instanceof __1.UnknownType) {
|
|
140
|
-
return (0, JsonDto_1.polymorphic)('UnknownType', {});
|
|
141
|
-
}
|
|
142
|
-
else if (type instanceof __1.VoidType) {
|
|
143
|
-
return (0, JsonDto_1.polymorphic)('VoidType', {});
|
|
144
|
-
}
|
|
145
|
-
else if (type instanceof __1.NeverType) {
|
|
146
|
-
return (0, JsonDto_1.polymorphic)('NeverType', {});
|
|
147
|
-
}
|
|
148
|
-
else if (type instanceof __1.UnionType) {
|
|
149
|
-
return (0, JsonDto_1.polymorphic)('UnionType', {
|
|
150
|
-
types: type.getTypes().map(type => serializeType(type)),
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
else if (type instanceof __1.IntersectionType) {
|
|
154
|
-
return (0, JsonDto_1.polymorphic)('IntersectionType', {
|
|
155
|
-
types: type.getTypes().map(type => serializeType(type)),
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
else if (type instanceof __1.TupleType) {
|
|
159
|
-
return (0, JsonDto_1.polymorphic)('TupleType', {
|
|
160
|
-
types: type.getTypes().map(type => serializeType(type)),
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
else if (type instanceof __1.BooleanType) {
|
|
164
|
-
return (0, JsonDto_1.polymorphic)('BooleanType', {});
|
|
165
|
-
}
|
|
166
|
-
else if (type instanceof __1.NumberType) {
|
|
167
|
-
return (0, JsonDto_1.polymorphic)('NumberType', {});
|
|
168
|
-
}
|
|
169
|
-
else if (type instanceof __1.BigIntType) {
|
|
170
|
-
return (0, JsonDto_1.polymorphic)('BigIntType', {});
|
|
171
|
-
}
|
|
172
|
-
else if (type instanceof __1.StringType) {
|
|
173
|
-
return (0, JsonDto_1.polymorphic)('StringType', {});
|
|
174
|
-
}
|
|
175
|
-
else if (type instanceof __1.NullType) {
|
|
176
|
-
return (0, JsonDto_1.polymorphic)('NullType', {});
|
|
177
|
-
}
|
|
178
|
-
else if (type instanceof __1.UndefinedType) {
|
|
179
|
-
return (0, JsonDto_1.polymorphic)('UndefinedType', {});
|
|
180
|
-
}
|
|
181
|
-
else if (type instanceof __1.LiteralType) {
|
|
182
|
-
return (0, JsonDto_1.polymorphic)('LiteralType', {
|
|
183
|
-
literal: type.getLiteralName(),
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
else if (type instanceof __1.ClassType) {
|
|
187
|
-
return (0, JsonDto_1.polymorphic)('ClassType', {
|
|
188
|
-
signature: serializeClassSignature(type.getClassSignature()),
|
|
189
|
-
typeParameters: (_a = type.getRealGenericTypes()) === null || _a === void 0 ? void 0 : _a.map(type => serializeType(type)),
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
else if (type instanceof __1.FunctionType) {
|
|
193
|
-
if (type.getMethodSignature().getMethodSubSignature().getReturnType() === type) {
|
|
194
|
-
// Handle recursive function types.
|
|
195
|
-
// This is a workaround for the issue where the function type refers to itself,
|
|
196
|
-
// which can cause infinite recursion during serialization.
|
|
197
|
-
// In this case, we return a simple FunctionType without a signature.
|
|
198
|
-
console.warn('Detected recursive function type, replacing return type with UnknownType');
|
|
199
|
-
const sig = type.getMethodSignature();
|
|
200
|
-
const sub = sig.getMethodSubSignature();
|
|
201
|
-
const sig2 = new __1.MethodSignature(sig.getDeclaringClassSignature(), new __1.MethodSubSignature(sub.getMethodName(), sub.getParameters(), __1.UnknownType.getInstance(), sub.isStatic()));
|
|
202
|
-
return (0, JsonDto_1.polymorphic)('FunctionType', {
|
|
203
|
-
signature: serializeMethodSignature(sig2),
|
|
204
|
-
typeParameters: (_b = type.getRealGenericTypes()) === null || _b === void 0 ? void 0 : _b.map(type => serializeType(type)),
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
return (0, JsonDto_1.polymorphic)('FunctionType', {
|
|
208
|
-
signature: serializeMethodSignature(type.getMethodSignature()),
|
|
209
|
-
typeParameters: (_c = type.getRealGenericTypes()) === null || _c === void 0 ? void 0 : _c.map(type => serializeType(type)),
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
else if (type instanceof __1.ArrayType) {
|
|
213
|
-
return (0, JsonDto_1.polymorphic)('ArrayType', {
|
|
214
|
-
elementType: serializeType(type.getBaseType()),
|
|
215
|
-
dimensions: type.getDimension(),
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
else if (type instanceof __1.UnclearReferenceType) {
|
|
219
|
-
return (0, JsonDto_1.polymorphic)('UnclearReferenceType', {
|
|
220
|
-
name: type.getName(),
|
|
221
|
-
typeParameters: type.getGenericTypes().map(type => serializeType(type)),
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
else if (type instanceof __1.AliasType) {
|
|
225
|
-
return (0, JsonDto_1.polymorphic)('AliasType', {
|
|
226
|
-
name: type.getName(),
|
|
227
|
-
originalType: serializeType(type.getOriginalType()),
|
|
228
|
-
signature: serializeAliasTypeSignature(type.getSignature()),
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
else if (type instanceof __1.GenericType) {
|
|
232
|
-
const constraint = type.getConstraint();
|
|
233
|
-
const defaultType = type.getDefaultType();
|
|
234
|
-
return (0, JsonDto_1.polymorphic)('GenericType', {
|
|
235
|
-
name: type.getName(),
|
|
236
|
-
constraint: constraint && serializeType(constraint),
|
|
237
|
-
defaultType: defaultType && serializeType(defaultType),
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
else if (type instanceof __1.AnnotationNamespaceType) {
|
|
241
|
-
return (0, JsonDto_1.polymorphic)('AnnotationNamespaceType', {
|
|
242
|
-
originType: type.getOriginType(),
|
|
243
|
-
namespaceSignature: serializeNamespaceSignature(type.getNamespaceSignature()),
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
else if (type instanceof __1.AnnotationTypeQueryType) {
|
|
247
|
-
return (0, JsonDto_1.polymorphic)('AnnotationTypeQueryType', {
|
|
248
|
-
originType: type.getOriginType(),
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
else if (type instanceof __1.LexicalEnvType) {
|
|
252
|
-
const m = type.getNestedMethod();
|
|
253
|
-
const s = m.getMethodSubSignature();
|
|
254
|
-
const sig = new __1.MethodSignature(m.getDeclaringClassSignature(), new __1.MethodSubSignature(s.getMethodName(), [], __1.UnknownType.getInstance()));
|
|
255
|
-
return (0, JsonDto_1.polymorphic)('LexicalEnvType', {
|
|
256
|
-
// method: serializeMethodSignature(type.getNestedMethod()),
|
|
257
|
-
method: serializeMethodSignature(sig),
|
|
258
|
-
closures: type.getClosures().map(closure => serializeLocal(closure)),
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
else if (type instanceof __1.EnumValueType) {
|
|
262
|
-
return (0, JsonDto_1.polymorphic)('EnumValueType', {
|
|
263
|
-
signature: serializeClassSignature(type.getFieldSignature().getDeclaringSignature()),
|
|
264
|
-
name: type.getFieldSignature().getFieldName(),
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
// Fallback for unhandled type cases
|
|
268
|
-
console.info(`Unhandled Type: ${type.constructor.name} (${type.toString()})`);
|
|
269
|
-
return {
|
|
270
|
-
kind: type.constructor.name,
|
|
271
|
-
text: type.toString(),
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
|
-
exports.serializeType = serializeType;
|
|
275
133
|
function serializeFileSignature(file) {
|
|
276
134
|
return {
|
|
277
135
|
projectName: file.getProjectName(),
|
|
@@ -363,6 +221,180 @@ function serializeLocal(local) {
|
|
|
363
221
|
};
|
|
364
222
|
}
|
|
365
223
|
exports.serializeLocal = serializeLocal;
|
|
224
|
+
function trySerializeCxxSignType(type) {
|
|
225
|
+
if (type instanceof Type_1.CxxIntType) {
|
|
226
|
+
return (0, JsonDto_1.polymorphic)('CxxIntType', { signType: type.getSignType().toString() });
|
|
227
|
+
}
|
|
228
|
+
if (type instanceof Type_1.CxxShortType) {
|
|
229
|
+
return (0, JsonDto_1.polymorphic)('CxxShortType', { signType: type.getSignType().toString() });
|
|
230
|
+
}
|
|
231
|
+
if (type instanceof Type_1.CxxLongType) {
|
|
232
|
+
return (0, JsonDto_1.polymorphic)('CxxLongType', { signType: type.getSignType().toString() });
|
|
233
|
+
}
|
|
234
|
+
if (type instanceof Type_1.CxxLongLongType) {
|
|
235
|
+
return (0, JsonDto_1.polymorphic)('CxxLongLongType', { signType: type.getSignType().toString() });
|
|
236
|
+
}
|
|
237
|
+
if (type instanceof Type_1.CxxSizeTType) {
|
|
238
|
+
return (0, JsonDto_1.polymorphic)('CxxSizeTType', { signType: type.getSignType().toString() });
|
|
239
|
+
}
|
|
240
|
+
return undefined;
|
|
241
|
+
}
|
|
242
|
+
function trySerializeCxxBitWidthType(type) {
|
|
243
|
+
if (type instanceof Type_1.CxxFloatType) {
|
|
244
|
+
return (0, JsonDto_1.polymorphic)('CxxFloatType', { bitWidth: type.getBitWith() });
|
|
245
|
+
}
|
|
246
|
+
if (type instanceof Type_1.CxxDoubleType) {
|
|
247
|
+
return (0, JsonDto_1.polymorphic)('CxxDoubleType', { bitWidth: type.getBitWith() });
|
|
248
|
+
}
|
|
249
|
+
if (type instanceof Type_1.CxxLongDoubleType) {
|
|
250
|
+
return (0, JsonDto_1.polymorphic)('CxxLongDoubleType', { bitWidth: type.getBitWith() });
|
|
251
|
+
}
|
|
252
|
+
return undefined;
|
|
253
|
+
}
|
|
254
|
+
function serializeFunctionTypeDto(type, active) {
|
|
255
|
+
var _a, _b;
|
|
256
|
+
if (type.getMethodSignature().getMethodSubSignature().getReturnType() === type) {
|
|
257
|
+
// Recursive function type: avoid infinite recursion by stubbing return type.
|
|
258
|
+
console.warn('Detected recursive function type, replacing return type with UnknownType');
|
|
259
|
+
const sig = type.getMethodSignature();
|
|
260
|
+
const sub = sig.getMethodSubSignature();
|
|
261
|
+
const sig2 = new __1.MethodSignature(sig.getDeclaringClassSignature(), new __1.MethodSubSignature(sub.getMethodName(), sub.getParameters(), __1.UnknownType.getInstance(), sub.isStatic()));
|
|
262
|
+
return (0, JsonDto_1.polymorphic)('FunctionType', {
|
|
263
|
+
signature: serializeMethodSignature(sig2),
|
|
264
|
+
typeParameters: (_a = type.getRealGenericTypes()) === null || _a === void 0 ? void 0 : _a.map(t => serializeType(t, active)),
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
return (0, JsonDto_1.polymorphic)('FunctionType', {
|
|
268
|
+
signature: serializeMethodSignature(type.getMethodSignature()),
|
|
269
|
+
typeParameters: (_b = type.getRealGenericTypes()) === null || _b === void 0 ? void 0 : _b.map(t => serializeType(t, active)),
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
const TYPE_SERIALIZERS = [
|
|
273
|
+
(type, active) => (type instanceof __1.AnyType ? (0, JsonDto_1.polymorphic)('AnyType', {}) : undefined),
|
|
274
|
+
(type, active) => (type instanceof __1.UnknownType ? (0, JsonDto_1.polymorphic)('UnknownType', {}) : undefined),
|
|
275
|
+
(type, active) => (type instanceof __1.VoidType ? (0, JsonDto_1.polymorphic)('VoidType', {}) : undefined),
|
|
276
|
+
(type, active) => (type instanceof __1.NeverType ? (0, JsonDto_1.polymorphic)('NeverType', {}) : undefined),
|
|
277
|
+
(type, active) => type instanceof __1.UnionType
|
|
278
|
+
? (0, JsonDto_1.polymorphic)('UnionType', { types: type.getTypes().map(t => serializeType(t, active)) })
|
|
279
|
+
: undefined,
|
|
280
|
+
(type, active) => type instanceof __1.IntersectionType
|
|
281
|
+
? (0, JsonDto_1.polymorphic)('IntersectionType', { types: type.getTypes().map(t => serializeType(t, active)) })
|
|
282
|
+
: undefined,
|
|
283
|
+
(type, active) => type instanceof __1.TupleType
|
|
284
|
+
? (0, JsonDto_1.polymorphic)('TupleType', { types: type.getTypes().map(t => serializeType(t, active)) })
|
|
285
|
+
: undefined,
|
|
286
|
+
(type, active) => trySerializeCxxSignType(type),
|
|
287
|
+
(type, active) => trySerializeCxxBitWidthType(type),
|
|
288
|
+
(type, active) => (type instanceof Type_1.CxxCharType ? (0, JsonDto_1.polymorphic)('CxxCharType', { text: type.toString() }) : undefined),
|
|
289
|
+
(type, active) => (type instanceof Type_1.CxxWcharType ? (0, JsonDto_1.polymorphic)('CxxWcharType', { text: type.toString() }) : undefined),
|
|
290
|
+
(type, active) => type instanceof Type_1.PointerType
|
|
291
|
+
? (0, JsonDto_1.polymorphic)('PointerType', { baseType: serializeType(type.getBaseType(), active) })
|
|
292
|
+
: undefined,
|
|
293
|
+
(type, active) => type instanceof Type_1.SmartPointerType
|
|
294
|
+
? (0, JsonDto_1.polymorphic)('SmartPointerType', { baseType: serializeType(type.getBaseType(), active) })
|
|
295
|
+
: undefined,
|
|
296
|
+
(type, active) => type instanceof Type_1.ReferenceType
|
|
297
|
+
? (0, JsonDto_1.polymorphic)('ReferenceType', { baseType: serializeType(type.getBaseType(), active) })
|
|
298
|
+
: undefined,
|
|
299
|
+
(type, active) => (type instanceof Type_1.Thread ? (0, JsonDto_1.polymorphic)('Thread', { text: type.toString() }) : undefined),
|
|
300
|
+
(type, active) => (type instanceof Type_1.TypeInfo ? (0, JsonDto_1.polymorphic)('TypeInfo', { name: type.toString() }) : undefined),
|
|
301
|
+
(type, active) => (type instanceof __1.BooleanType ? (0, JsonDto_1.polymorphic)('BooleanType', {}) : undefined),
|
|
302
|
+
(type, active) => (type instanceof __1.NumberType ? (0, JsonDto_1.polymorphic)('NumberType', {}) : undefined),
|
|
303
|
+
(type, active) => (type instanceof __1.BigIntType ? (0, JsonDto_1.polymorphic)('BigIntType', {}) : undefined),
|
|
304
|
+
(type, active) => (type instanceof __1.StringType ? (0, JsonDto_1.polymorphic)('StringType', {}) : undefined),
|
|
305
|
+
(type, active) => (type instanceof __1.NullType ? (0, JsonDto_1.polymorphic)('NullType', {}) : undefined),
|
|
306
|
+
(type, active) => (type instanceof __1.UndefinedType ? (0, JsonDto_1.polymorphic)('UndefinedType', {}) : undefined),
|
|
307
|
+
(type, active) => type instanceof __1.LiteralType ? (0, JsonDto_1.polymorphic)('LiteralType', { literal: type.getLiteralName() }) : undefined,
|
|
308
|
+
(type, active) => {
|
|
309
|
+
var _a;
|
|
310
|
+
return type instanceof __1.ClassType
|
|
311
|
+
? (0, JsonDto_1.polymorphic)('ClassType', {
|
|
312
|
+
signature: serializeClassSignature(type.getClassSignature()),
|
|
313
|
+
typeParameters: (_a = type.getRealGenericTypes()) === null || _a === void 0 ? void 0 : _a.map(t => serializeType(t, active)),
|
|
314
|
+
})
|
|
315
|
+
: undefined;
|
|
316
|
+
},
|
|
317
|
+
(type, active) => (type instanceof __1.FunctionType ? serializeFunctionTypeDto(type, active) : undefined),
|
|
318
|
+
(type, active) => type instanceof __1.ArrayType
|
|
319
|
+
? (0, JsonDto_1.polymorphic)('ArrayType', {
|
|
320
|
+
elementType: serializeType(type.getBaseType(), active),
|
|
321
|
+
dimensions: type.getDimension(),
|
|
322
|
+
})
|
|
323
|
+
: undefined,
|
|
324
|
+
(type, active) => type instanceof __1.UnclearReferenceType
|
|
325
|
+
? (0, JsonDto_1.polymorphic)('UnclearReferenceType', {
|
|
326
|
+
name: type.getName(),
|
|
327
|
+
typeParameters: type.getGenericTypes().map(t => serializeType(t, active)),
|
|
328
|
+
})
|
|
329
|
+
: undefined,
|
|
330
|
+
(type, active) => type instanceof __1.AliasType
|
|
331
|
+
? (0, JsonDto_1.polymorphic)('AliasType', {
|
|
332
|
+
name: type.getName(),
|
|
333
|
+
originalType: serializeType(type.getOriginalType(), active),
|
|
334
|
+
signature: serializeAliasTypeSignature(type.getSignature()),
|
|
335
|
+
})
|
|
336
|
+
: undefined,
|
|
337
|
+
(type, active) => {
|
|
338
|
+
if (!(type instanceof __1.GenericType)) {
|
|
339
|
+
return undefined;
|
|
340
|
+
}
|
|
341
|
+
const constraint = type.getConstraint();
|
|
342
|
+
const defaultType = type.getDefaultType();
|
|
343
|
+
return (0, JsonDto_1.polymorphic)('GenericType', {
|
|
344
|
+
name: type.getName(),
|
|
345
|
+
constraint: constraint && serializeType(constraint, active),
|
|
346
|
+
defaultType: defaultType && serializeType(defaultType, active),
|
|
347
|
+
});
|
|
348
|
+
},
|
|
349
|
+
(type, active) => type instanceof __1.AnnotationNamespaceType
|
|
350
|
+
? (0, JsonDto_1.polymorphic)('AnnotationNamespaceType', {
|
|
351
|
+
originType: type.getOriginType(),
|
|
352
|
+
namespaceSignature: serializeNamespaceSignature(type.getNamespaceSignature()),
|
|
353
|
+
})
|
|
354
|
+
: undefined,
|
|
355
|
+
(type, active) => type instanceof __1.AnnotationTypeQueryType
|
|
356
|
+
? (0, JsonDto_1.polymorphic)('AnnotationTypeQueryType', { originType: type.getOriginType() })
|
|
357
|
+
: undefined,
|
|
358
|
+
(type, active) => {
|
|
359
|
+
if (!(type instanceof __1.LexicalEnvType)) {
|
|
360
|
+
return undefined;
|
|
361
|
+
}
|
|
362
|
+
const m = type.getNestedMethod();
|
|
363
|
+
const s = m.getMethodSubSignature();
|
|
364
|
+
const sig = new __1.MethodSignature(m.getDeclaringClassSignature(), new __1.MethodSubSignature(s.getMethodName(), [], __1.UnknownType.getInstance()));
|
|
365
|
+
return (0, JsonDto_1.polymorphic)('LexicalEnvType', {
|
|
366
|
+
method: serializeMethodSignature(sig),
|
|
367
|
+
closures: type.getClosures().map(closure => serializeLocal(closure)),
|
|
368
|
+
});
|
|
369
|
+
},
|
|
370
|
+
(type, active) => type instanceof __1.EnumValueType
|
|
371
|
+
? (0, JsonDto_1.polymorphic)('EnumValueType', {
|
|
372
|
+
signature: serializeClassSignature(type.getFieldSignature().getDeclaringSignature()),
|
|
373
|
+
name: type.getFieldSignature().getFieldName(),
|
|
374
|
+
})
|
|
375
|
+
: undefined,
|
|
376
|
+
];
|
|
377
|
+
function serializeType(type, activeTypeSerialization = new WeakSet()) {
|
|
378
|
+
if (type === undefined) {
|
|
379
|
+
throw new Error('Type is undefined');
|
|
380
|
+
}
|
|
381
|
+
if (activeTypeSerialization.has(type)) {
|
|
382
|
+
return (0, JsonDto_1.polymorphic)('UnknownType', {});
|
|
383
|
+
}
|
|
384
|
+
activeTypeSerialization.add(type);
|
|
385
|
+
for (const serialize of TYPE_SERIALIZERS) {
|
|
386
|
+
const dto = serialize(type, activeTypeSerialization);
|
|
387
|
+
if (dto !== undefined) {
|
|
388
|
+
return dto;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
console.info(`Unhandled Type: ${type.constructor.name} (${type.toString()})`);
|
|
392
|
+
return {
|
|
393
|
+
kind: type.constructor.name,
|
|
394
|
+
text: type.toString(),
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
exports.serializeType = serializeType;
|
|
366
398
|
function serializeConstant(constant) {
|
|
367
399
|
let value = constant.getValue();
|
|
368
400
|
if (constant.getType() instanceof __1.NumberType) {
|
|
@@ -525,6 +557,64 @@ function serializeValue(value) {
|
|
|
525
557
|
field: serializeFieldSignature(value.getFieldSignature()),
|
|
526
558
|
});
|
|
527
559
|
}
|
|
560
|
+
else if (value instanceof Expr_1.ArkCxxDeleteArrayExpr) {
|
|
561
|
+
return (0, JsonDto_1.polymorphic)('ArkCxxDeleteArrayExpr', {
|
|
562
|
+
field: serializeValue(value.getField()),
|
|
563
|
+
type: serializeType(value.getType()),
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
else if (value instanceof Expr_1.ArkCxxNewArrayExpr) {
|
|
567
|
+
return (0, JsonDto_1.polymorphic)('ArkCxxNewArrayExpr', {
|
|
568
|
+
baseType: serializeType(value.getBaseType()),
|
|
569
|
+
size: serializeValue(value.getSize()),
|
|
570
|
+
elementsNumber: value.getElementsNumber(),
|
|
571
|
+
});
|
|
572
|
+
}
|
|
573
|
+
else if (value instanceof Expr_1.ArkCxxInitArrayExpr) {
|
|
574
|
+
return (0, JsonDto_1.polymorphic)('ArkCxxInitArrayExpr', {
|
|
575
|
+
op: serializeValue(value.getOp()),
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
else if (value instanceof Expr_1.ArkCxxUnaryExpr) {
|
|
579
|
+
let op = value.getOp();
|
|
580
|
+
if (op instanceof __1.Type) {
|
|
581
|
+
return (0, JsonDto_1.polymorphic)('ArkCxxUnaryExpr', {
|
|
582
|
+
op: serializeType(op),
|
|
583
|
+
});
|
|
584
|
+
}
|
|
585
|
+
return (0, JsonDto_1.polymorphic)('ArkCxxUnaryExpr', {
|
|
586
|
+
op: serializeValue(op),
|
|
587
|
+
});
|
|
588
|
+
}
|
|
589
|
+
else if (value instanceof Expr_1.ArkCxxCastExpr) {
|
|
590
|
+
return (0, JsonDto_1.polymorphic)('ArkCxxCastExpr', {
|
|
591
|
+
cxxCastType: value.getCxxCastType(),
|
|
592
|
+
});
|
|
593
|
+
}
|
|
594
|
+
else if (value instanceof Expr_1.ArkTypeIdExpr) {
|
|
595
|
+
return (0, JsonDto_1.polymorphic)('ArkTypeIdExpr', {
|
|
596
|
+
op: serializeValue(value.getOp()),
|
|
597
|
+
});
|
|
598
|
+
}
|
|
599
|
+
else if (value instanceof Expr_1.ArkNoExpectExpr) {
|
|
600
|
+
return (0, JsonDto_1.polymorphic)('ArkNoExpectExpr', {
|
|
601
|
+
op: serializeValue(value.getOp()),
|
|
602
|
+
});
|
|
603
|
+
}
|
|
604
|
+
else if (value instanceof Expr_1.ArkCxxFolderExpr) {
|
|
605
|
+
return (0, JsonDto_1.polymorphic)('ArkCxxFolderExpr', {
|
|
606
|
+
arg: serializeValue(value.getArg()),
|
|
607
|
+
op: value.getOp(),
|
|
608
|
+
});
|
|
609
|
+
}
|
|
610
|
+
else if (value instanceof Expr_1.ArkCxxNormalBinOpExpr) {
|
|
611
|
+
return (0, JsonDto_1.polymorphic)('ArkCxxNormalBinOpExpr', {
|
|
612
|
+
op1: serializeValue(value.getOp1()),
|
|
613
|
+
op2: serializeValue(value.getOp2()),
|
|
614
|
+
type: serializeType(value.getType()),
|
|
615
|
+
operator: value.getOperator(),
|
|
616
|
+
});
|
|
617
|
+
}
|
|
528
618
|
// Fallback for unhandled value types
|
|
529
619
|
console.info(`Unhandled Value: ${value.constructor.name} (${value.toString()})`);
|
|
530
620
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceTransformer.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAMH,qBAAqB,EAKrB,mBAAmB,EAKtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAiB,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAyB,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,OAAO,EAGH,SAAS,EAQT,IAAI,EAKP,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAmE,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAU7D,MAAM,WAAW,kBAAkB;IAC/B,UAAU,IAAI,OAAO,CAAC;IAEtB,wBAAwB,IAAI,YAAY,GAAG,SAAS,CAAC;IAErD,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;IAExD,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI,CAAC;IAErD,UAAU,IAAI,aAAa,CAAC;IAE5B,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAEvD,iBAAiB,IAAI,OAAO,CAAC;CAChC;AAED,qBAAa,iBAAiB;IAC1B,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAE1B,OAAO,EAAE,kBAAkB;IAIvC,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,sBAAsB;IAKvB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM;IA+B7F,OAAO,CAAC,kBAAkB;IAuCnB,wBAAwB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM;IA8BxE,OAAO,CAAC,oBAAoB;IAYrB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,GAAE,MAAa,GAAG,MAAM;WASvD,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"SourceTransformer.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAMH,qBAAqB,EAKrB,mBAAmB,EAKtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAiB,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAyB,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,OAAO,EAGH,SAAS,EAQT,IAAI,EAKP,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAmE,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAU7D,MAAM,WAAW,kBAAkB;IAC/B,UAAU,IAAI,OAAO,CAAC;IAEtB,wBAAwB,IAAI,YAAY,GAAG,SAAS,CAAC;IAErD,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;IAExD,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI,CAAC;IAErD,UAAU,IAAI,aAAa,CAAC;IAE5B,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAEvD,iBAAiB,IAAI,OAAO,CAAC;CAChC;AAED,qBAAa,iBAAiB;IAC1B,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAE1B,OAAO,EAAE,kBAAkB;IAIvC,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,sBAAsB;IAKvB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM;IA+B7F,OAAO,CAAC,kBAAkB;IAuCnB,wBAAwB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM;IA8BxE,OAAO,CAAC,oBAAoB;IAYrB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,GAAE,MAAa,GAAG,MAAM;WASvD,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAQpD,OAAO,CAAC,YAAY;IA4Db,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;IA0BvC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAE,OAAe,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAqBxF,OAAO,CAAC,aAAa;IA4Bd,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAW9C,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IA+DvC,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,gBAAgB;CAkB3B"}
|
|
@@ -184,9 +184,6 @@ class SourceTransformer {
|
|
|
184
184
|
if (value.getType().toString() === 'string') {
|
|
185
185
|
return `'${PrinterUtils_1.PrinterUtils.escape(value.getValue())}'`;
|
|
186
186
|
}
|
|
187
|
-
else if (value.getType().toString() === TSConst_1.BIGINT_KEYWORD) {
|
|
188
|
-
return `${value.getValue()}n`;
|
|
189
|
-
}
|
|
190
187
|
else {
|
|
191
188
|
return value.getValue();
|
|
192
189
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ArkFile } from '../core/model/ArkFile';
|
|
2
|
+
export declare class CxxSceneUtils {
|
|
3
|
+
static puncture(cxxModulePath: string, tsFile: ArkFile): void;
|
|
4
|
+
private static processApiDefine;
|
|
5
|
+
private static findPropDesc;
|
|
6
|
+
private static processPropDesc;
|
|
7
|
+
private static getDeclaredAssignStmt;
|
|
8
|
+
private static getUsedStmts;
|
|
9
|
+
private static mergeMethod;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=CxxSceneUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CxxSceneUtils.d.ts","sourceRoot":"","sources":["../../src/utils/CxxSceneUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAkBhD,qBAAa,aAAa;WACR,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAqBpE,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAsB/B,OAAO,CAAC,MAAM,CAAC,YAAY;IAU3B,OAAO,CAAC,MAAM,CAAC,eAAe;IAmC9B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAUpC,OAAO,CAAC,MAAM,CAAC,YAAY;IAO3B,OAAO,CAAC,MAAM,CAAC,WAAW;CAa7B"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2024-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
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
20
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
21
|
+
}
|
|
22
|
+
Object.defineProperty(o, k2, desc);
|
|
23
|
+
}) : (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
o[k2] = m[k];
|
|
26
|
+
}));
|
|
27
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
28
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
29
|
+
}) : function(o, v) {
|
|
30
|
+
o["default"] = v;
|
|
31
|
+
});
|
|
32
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
|
+
};
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.CxxSceneUtils = void 0;
|
|
44
|
+
const path_1 = __importDefault(require("path"));
|
|
45
|
+
const ArkSignature_1 = require("../core/model/ArkSignature");
|
|
46
|
+
const ModelUtils_1 = require("../core/common/ModelUtils");
|
|
47
|
+
const Stmt_1 = require("../core/base/Stmt");
|
|
48
|
+
const ArkMethod_1 = require("../core/model/ArkMethod");
|
|
49
|
+
const Constant_1 = require("../core/base/Constant");
|
|
50
|
+
const Local_1 = require("../core/base/Local");
|
|
51
|
+
const Ref_1 = require("../core/base/Ref");
|
|
52
|
+
const ArkField_1 = require("../core/model/ArkField");
|
|
53
|
+
const Type_1 = require("../core/base/Type");
|
|
54
|
+
const TSConst_1 = require("../core/common/TSConst");
|
|
55
|
+
const logger_1 = __importStar(require("./logger"));
|
|
56
|
+
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkValueTransformer');
|
|
57
|
+
class CxxSceneUtils {
|
|
58
|
+
static puncture(cxxModulePath, tsFile) {
|
|
59
|
+
var _a;
|
|
60
|
+
const fileName = path_1.default.relative(tsFile.getProjectDir(), path_1.default.join(cxxModulePath, '../../napi_init.cpp'));
|
|
61
|
+
const initFile = tsFile.getScene().getFile(new ArkSignature_1.FileSignature(tsFile.getProjectName(), fileName));
|
|
62
|
+
if (!initFile) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const ts2cxxFuncMap = initFile.getDefaultClass().getTs2cxxFuncMap();
|
|
66
|
+
const methods = ModelUtils_1.ModelUtils.getAllMethodsInFile(initFile);
|
|
67
|
+
for (const method of methods) {
|
|
68
|
+
const stmts = (_a = method.getCfg()) === null || _a === void 0 ? void 0 : _a.getStmts();
|
|
69
|
+
if (!stmts) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
for (const stmt of stmts) {
|
|
73
|
+
if (stmt instanceof Stmt_1.ArkInvokeStmt) {
|
|
74
|
+
this.processApiDefine(stmt, tsFile, ts2cxxFuncMap);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
static processApiDefine(stmt, tsFile, ts2cxxFuncMap) {
|
|
80
|
+
const invokeExpr = stmt.getInvokeExpr();
|
|
81
|
+
const methodName = invokeExpr.getMethodSignature().getMethodSubSignature().getMethodName();
|
|
82
|
+
const clsConstant = invokeExpr.getArg(1);
|
|
83
|
+
if (methodName === 'napi_define_class' && clsConstant instanceof Constant_1.Constant) {
|
|
84
|
+
const tsClass = tsFile.getClassWithName(clsConstant.getValue());
|
|
85
|
+
if (!tsClass) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const props = invokeExpr.getArg(6);
|
|
89
|
+
this.findPropDesc(props, ts2cxxFuncMap, tsClass);
|
|
90
|
+
const arkMethods = ts2cxxFuncMap.get(clsConstant.getValue());
|
|
91
|
+
if ((arkMethods === null || arkMethods === void 0 ? void 0 : arkMethods.length) === 1) {
|
|
92
|
+
this.mergeMethod(TSConst_1.CONSTRUCTOR_NAME, tsClass, arkMethods[0]);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else if (methodName === 'napi_define_properties') {
|
|
96
|
+
const tsClass = tsFile.getDefaultClass();
|
|
97
|
+
const props = invokeExpr.getArg(3);
|
|
98
|
+
this.findPropDesc(props, ts2cxxFuncMap, tsClass);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
static findPropDesc(props, ts2cxxFuncMap, tsClass) {
|
|
102
|
+
var _a, _b;
|
|
103
|
+
(_b = this.getUsedStmts((_a = this.getDeclaredAssignStmt(props)) === null || _a === void 0 ? void 0 : _a.getRightOp())) === null || _b === void 0 ? void 0 : _b.forEach(x => {
|
|
104
|
+
var _a;
|
|
105
|
+
if (x instanceof Stmt_1.ArkAssignStmt && x.getLeftOp() instanceof Ref_1.ArkArrayRef) {
|
|
106
|
+
(_a = this.getUsedStmts(x.getRightOp())) === null || _a === void 0 ? void 0 : _a.forEach(s => {
|
|
107
|
+
this.processPropDesc(s, ts2cxxFuncMap, tsClass);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
static processPropDesc(s, ts2cxxFuncMap, tsClass) {
|
|
113
|
+
let constant;
|
|
114
|
+
if (s instanceof Stmt_1.ArkInvokeStmt) {
|
|
115
|
+
// This scenario corresponds to the registration of class objects
|
|
116
|
+
constant = s.getInvokeExpr().getArg(0);
|
|
117
|
+
}
|
|
118
|
+
else if (s instanceof Stmt_1.ArkAssignStmt && s.getLeftOp() instanceof Ref_1.ArkArrayRef) {
|
|
119
|
+
// The registration scenario is a structure aggregation scenario, where the syntax tree does not contain a construct,
|
|
120
|
+
// and each unit is expressed using an aggregation expression
|
|
121
|
+
let rightOp = s.getRightOp();
|
|
122
|
+
if (rightOp.getName().startsWith('%')) {
|
|
123
|
+
const declaringStmt = rightOp.getDeclaringStmt();
|
|
124
|
+
if (declaringStmt instanceof Stmt_1.ArkAssignStmt) {
|
|
125
|
+
rightOp = declaringStmt.getRightOp();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
// Due to the order of type definitions, type judgment cannot be performed here,
|
|
130
|
+
// so try+assertion is used to avoid runtime errors
|
|
131
|
+
constant = rightOp.getElements()[0];
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
logger.info('This is Unknow scene');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (constant instanceof Constant_1.Constant) {
|
|
138
|
+
const tsMtdName = constant.getValue();
|
|
139
|
+
const arkMethods = ts2cxxFuncMap.get(tsMtdName);
|
|
140
|
+
if ((arkMethods === null || arkMethods === void 0 ? void 0 : arkMethods.length) === 1) {
|
|
141
|
+
this.mergeMethod(tsMtdName, tsClass, arkMethods[0]);
|
|
142
|
+
}
|
|
143
|
+
else if ((arkMethods === null || arkMethods === void 0 ? void 0 : arkMethods.length) === 2) {
|
|
144
|
+
this.mergeMethod('Get-' + tsMtdName, tsClass, arkMethods[0]);
|
|
145
|
+
this.mergeMethod('Set-' + tsMtdName, tsClass, arkMethods[1]);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
static getDeclaredAssignStmt(value) {
|
|
150
|
+
if (value instanceof Local_1.Local) {
|
|
151
|
+
const declaringStmt = value.getDeclaringStmt();
|
|
152
|
+
if (declaringStmt instanceof Stmt_1.ArkAssignStmt) {
|
|
153
|
+
return declaringStmt;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
static getUsedStmts(value) {
|
|
159
|
+
if (value instanceof Local_1.Local) {
|
|
160
|
+
return value.getUsedStmts();
|
|
161
|
+
}
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
static mergeMethod(tsMtdName, tsClass, cppMtd) {
|
|
165
|
+
let tsMtd = ModelUtils_1.ModelUtils.findArkModel(tsMtdName, tsClass);
|
|
166
|
+
if (tsMtd instanceof Local_1.Local || tsMtd instanceof ArkField_1.ArkField) {
|
|
167
|
+
const type = tsMtd.getType();
|
|
168
|
+
if (type instanceof Type_1.FunctionType) {
|
|
169
|
+
tsMtd = tsClass.getDeclaringArkFile().getScene().getMethod(type.getMethodSignature());
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (tsMtd instanceof ArkMethod_1.ArkMethod && cppMtd.getBody()) {
|
|
173
|
+
tsMtd.setImplementationSignature(cppMtd.getSignature());
|
|
174
|
+
tsMtd.setBody(cppMtd.getBody());
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
exports.CxxSceneUtils = CxxSceneUtils;
|
package/lib/utils/FileUtils.d.ts
CHANGED
|
@@ -7,15 +7,14 @@ export declare class FileUtils {
|
|
|
7
7
|
static getIndexFileName(srcPath: string): string;
|
|
8
8
|
static isDirectory(srcPath: string): boolean;
|
|
9
9
|
static isAbsolutePath(path: string): boolean;
|
|
10
|
-
static generateModuleMap(ohPkgContentMap: Map<string, {
|
|
11
|
-
[k: string]: unknown;
|
|
12
|
-
}>): Map<string, ModulePath>;
|
|
13
10
|
static getFileLanguage(file: string, fileTags?: Map<string, Language>): Language;
|
|
14
11
|
}
|
|
15
|
-
export declare class ModulePath {
|
|
16
|
-
path: string;
|
|
17
|
-
main: string;
|
|
18
|
-
constructor(path: string, main: string);
|
|
19
|
-
}
|
|
20
12
|
export declare function getFileRecursively(srcDir: string, fileName: string, visited?: Set<string>): string;
|
|
13
|
+
/**
|
|
14
|
+
* Try to combine each source path in the array with the relative path, returning the first absolute path that exists.
|
|
15
|
+
* @param srcPathList Source path array (absolute or relative paths)
|
|
16
|
+
* @param relativePath The relative path to concatenate
|
|
17
|
+
* @returns The first concatenated absolute path that exists; otherwise returns an empty string
|
|
18
|
+
*/
|
|
19
|
+
export declare function getFileAbsPath(srcPathList: string[], relativePath: string): string;
|
|
21
20
|
//# sourceMappingURL=FileUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/FileUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/FileUtils.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAOjD,qBAAa,SAAS;IAClB,gBAAuB,WAAW;;;MAGhC;WAEY,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WASzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;WAUrC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAIrC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,QAAQ;CAmB1F;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,GAAG,CAAC,MAAM,CAAqB,GAAG,MAAM,CA2BrH;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAclF"}
|