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
|
@@ -0,0 +1,285 @@
|
|
|
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.buildArkClassFromCxxClass = exports.buildArkFileFromFile = exports.classMap = void 0;
|
|
44
|
+
const fs_1 = __importDefault(require("fs"));
|
|
45
|
+
const path_1 = __importDefault(require("path"));
|
|
46
|
+
const ArkNamespace_1 = require("../../../../core/model/ArkNamespace");
|
|
47
|
+
const ArkClassBuilder_1 = require("./ArkClassBuilder");
|
|
48
|
+
const ArkMethodBuilder_1 = require("./ArkMethodBuilder");
|
|
49
|
+
const ArkExportBuilder_1 = require("../../../../core/model/builder/ArkExportBuilder");
|
|
50
|
+
const ArkNamespaceBuilder_1 = require("./ArkNamespaceBuilder");
|
|
51
|
+
const ArkClass_1 = require("../../../../core/model/ArkClass");
|
|
52
|
+
const ArkClassBuilder_2 = require("./ArkClassBuilder");
|
|
53
|
+
const ArkMethod_1 = require("../../../../core/model/ArkMethod");
|
|
54
|
+
const astUtils_1 = require("../../ast/astUtils");
|
|
55
|
+
const ArkSignature_1 = require("../../../../core/model/ArkSignature");
|
|
56
|
+
const Position_1 = require("../../../../core/base/Position");
|
|
57
|
+
const ArkImportBuilder_1 = require("./ArkImportBuilder");
|
|
58
|
+
const ModelUtils_1 = require("../../common/ModelUtils");
|
|
59
|
+
const logger_1 = __importStar(require("../../../../utils/logger"));
|
|
60
|
+
const ArkClassBuilder_3 = require("../../../../core/model/builder/ArkClassBuilder");
|
|
61
|
+
const ArkCxxAstNode_1 = require("../../ast/ArkCxxAstNode");
|
|
62
|
+
const ArkFieldBuilder_1 = require("./ArkFieldBuilder");
|
|
63
|
+
const Const_1 = require("../../../../core/common/Const");
|
|
64
|
+
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkFileBuilder');
|
|
65
|
+
exports.classMap = new Map();
|
|
66
|
+
function extractOhosSdkPath(mapData) {
|
|
67
|
+
for (const [key, value] of mapData.entries()) {
|
|
68
|
+
if (key !== 'ohosSdk') {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
const sdkPath = Object.prototype.hasOwnProperty.call(value, 'path') ? value.path : '';
|
|
72
|
+
if (typeof sdkPath === 'string' && sdkPath) {
|
|
73
|
+
return sdkPath;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return '';
|
|
77
|
+
}
|
|
78
|
+
function findLLVMPath(inputPath) {
|
|
79
|
+
if (!inputPath || !inputPath.trim() || !path_1.default.isAbsolute(inputPath)) {
|
|
80
|
+
return '';
|
|
81
|
+
}
|
|
82
|
+
const normalized = path_1.default.normalize(inputPath);
|
|
83
|
+
const parts = normalized.split(path_1.default.sep);
|
|
84
|
+
const devEcoIndex = parts.findIndex(p => p.trim() === 'DevEco Studio');
|
|
85
|
+
if (devEcoIndex === -1) {
|
|
86
|
+
return '';
|
|
87
|
+
}
|
|
88
|
+
const basePath = path_1.default.join(...parts.slice(0, devEcoIndex + 1));
|
|
89
|
+
// Prioritize finding LLVM path in environment variables
|
|
90
|
+
const envPathList = (process.env.PATH || '').split(';');
|
|
91
|
+
const llvmEnvPath = envPathList.find(p => p.includes('clang+llvm-19.1.7-x86_64-pc-windows-msvc') && fs_1.default.existsSync(p)) || '';
|
|
92
|
+
const llvmBinCandidates = [
|
|
93
|
+
llvmEnvPath,
|
|
94
|
+
path_1.default.join(basePath, 'sdk', 'default', 'openharmony', 'native', 'clang+llvm-19.1.7-x86_64-pc-windows-msvc', 'bin'),
|
|
95
|
+
path_1.default.join(basePath, 'sdk', 'default', 'openharmony', 'native', 'llvm', 'bin'),
|
|
96
|
+
];
|
|
97
|
+
for (const candidate of llvmBinCandidates) {
|
|
98
|
+
if (fs_1.default.existsSync(candidate)) {
|
|
99
|
+
return candidate;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return '';
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Entry of building ArkFile instance
|
|
106
|
+
*
|
|
107
|
+
* @param absoluteFilePath
|
|
108
|
+
* @param projectDir
|
|
109
|
+
* @param arkFile
|
|
110
|
+
* @param projectName
|
|
111
|
+
* @param includeDirs
|
|
112
|
+
* @returns
|
|
113
|
+
*/
|
|
114
|
+
function buildArkFileFromFile(absoluteFilePath, projectDir, arkFile, projectName, includeDirs = []) {
|
|
115
|
+
let scene = arkFile.getScene();
|
|
116
|
+
arkFile.setFilePath(absoluteFilePath);
|
|
117
|
+
arkFile.setProjectDir(projectDir);
|
|
118
|
+
const fileSignature = new ArkSignature_1.FileSignature(projectName, path_1.default.relative(projectDir, absoluteFilePath));
|
|
119
|
+
arkFile.setFileSignature(fileSignature);
|
|
120
|
+
arkFile.setCode(fs_1.default.readFileSync(arkFile.getFilePath(), 'utf8'));
|
|
121
|
+
let sdkPath = extractOhosSdkPath(arkFile.getScene().getProjectSdkMap());
|
|
122
|
+
let llvmPath = findLLVMPath(sdkPath);
|
|
123
|
+
const jsonObject = astUtils_1.AstUtils.parse(absoluteFilePath, scene.getCcjsonPath(), includeDirs, llvmPath, scene.getCppAstPath());
|
|
124
|
+
genDefaultArkClass(arkFile, jsonObject);
|
|
125
|
+
buildArkFile(arkFile, jsonObject);
|
|
126
|
+
}
|
|
127
|
+
exports.buildArkFileFromFile = buildArkFileFromFile;
|
|
128
|
+
function buildArkClassFromCxxClass(classNode, arkFile, astRoot) {
|
|
129
|
+
let cls = new ArkClass_1.ArkClass();
|
|
130
|
+
if (classNode.kind === 'ClassTemplateDecl') {
|
|
131
|
+
classNode.tagUsed = classNode.tagUsed ? classNode.tagUsed : 'class';
|
|
132
|
+
}
|
|
133
|
+
(0, ArkClassBuilder_1.buildNormalArkClassFromArkFile)(classNode, arkFile, cls, astRoot);
|
|
134
|
+
addExportInfoOnCondition(classNode, cls, arkFile);
|
|
135
|
+
if (classNode.id) {
|
|
136
|
+
exports.classMap.set(classNode.id, cls);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.buildArkClassFromCxxClass = buildArkClassFromCxxClass;
|
|
140
|
+
/**
|
|
141
|
+
* Building import info from inclusion directive (just like: #include '../xxx.h')
|
|
142
|
+
*
|
|
143
|
+
* @param includeInfo Info of inclusion
|
|
144
|
+
* @param includeNode Ast node of inclusion
|
|
145
|
+
* @param astRoot Ast node of translate unit file
|
|
146
|
+
* @param arkFile ArkFile of translate unit file
|
|
147
|
+
* @returns
|
|
148
|
+
*/
|
|
149
|
+
function buildImportInfoFromInclude(includeInfo, includeNode, astRoot, arkFile) {
|
|
150
|
+
let importInfo = (0, ArkImportBuilder_1.buildGenericImportInfo)(includeInfo, includeNode, astRoot, arkFile);
|
|
151
|
+
if (!importInfo) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
importInfo.setDeclaringArkFile(arkFile);
|
|
155
|
+
if ((0, ModelUtils_1.shouldAddCxxHeaderImport)(importInfo)) {
|
|
156
|
+
arkFile.addImportInfo(importInfo);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Building import info from using namespace declaration (just like: using namespace xxx)
|
|
161
|
+
*
|
|
162
|
+
* @param usingNode Ast node of using declaration
|
|
163
|
+
* @param astRoot Ast node of translate unit file
|
|
164
|
+
* @param arkFile ArkFile of translate unit file
|
|
165
|
+
* @returns
|
|
166
|
+
*/
|
|
167
|
+
function buildImportInfoFromUsing(usingNode, astRoot, arkFile) {
|
|
168
|
+
let importInfo = (0, ArkImportBuilder_1.buildUsingNamespaceImportInfo)(usingNode, astRoot, arkFile);
|
|
169
|
+
if (!importInfo) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
importInfo.setDeclaringArkFile(arkFile);
|
|
173
|
+
if ((0, ModelUtils_1.shouldAddCxxHeaderImport)(importInfo)) {
|
|
174
|
+
arkFile.addImportInfo(importInfo);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function addExportInfoOnCondition(currNode, arkInstance, arkFile) {
|
|
178
|
+
var _a, _b;
|
|
179
|
+
if ((_b = (_a = currNode.loc) === null || _a === void 0 ? void 0 : _a.file) === null || _b === void 0 ? void 0 : _b.endsWith('.h')) {
|
|
180
|
+
arkFile.addExportInfo((0, ArkExportBuilder_1.buildExportInfo)(arkInstance, arkFile, Position_1.LineColPosition.cxxBuildFromNode(currNode)));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function buildArkMethodFromCxxMethod(mtdNode, arkFile, astRoot, arkClass) {
|
|
184
|
+
let mtd = new ArkMethod_1.ArkMethod();
|
|
185
|
+
(0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(mtdNode, arkClass !== null && arkClass !== void 0 ? arkClass : arkFile.getDefaultClass(), mtd, astRoot);
|
|
186
|
+
addExportInfoOnCondition(mtdNode, mtd, arkFile);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Building ArkFile instance
|
|
190
|
+
*
|
|
191
|
+
* @param arkFile
|
|
192
|
+
* @param astRoot
|
|
193
|
+
* @returns
|
|
194
|
+
*/
|
|
195
|
+
function buildArkFile(arkFile, astRoot) {
|
|
196
|
+
var _a, _b;
|
|
197
|
+
// handle header units
|
|
198
|
+
(_a = astRoot.headerUnits) === null || _a === void 0 ? void 0 : _a.forEach((child) => {
|
|
199
|
+
var _a;
|
|
200
|
+
if (!child.includes) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
for (const includeInfo of child.includes) {
|
|
204
|
+
if (includeInfo.kind !== 'InclusionDirective') {
|
|
205
|
+
logger.trace('Unprocess kind of header unit: ', (_a = includeInfo.kind) !== null && _a !== void 0 ? _a : includeInfo.code);
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
buildImportInfoFromInclude(includeInfo, child, astRoot, arkFile);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
// handle non-header unit
|
|
212
|
+
const statements = (_b = astRoot.inner) !== null && _b !== void 0 ? _b : [];
|
|
213
|
+
statements.forEach((child) => {
|
|
214
|
+
var _a;
|
|
215
|
+
let childKind = child.kind;
|
|
216
|
+
switch (childKind) {
|
|
217
|
+
// 'RecordDecl' ---C Language (struct/class/union)
|
|
218
|
+
// 'CXXRecordDecl' ---C++ Language (struct/class/union)
|
|
219
|
+
case ArkCxxAstNode_1.astKind.RecordDecl:
|
|
220
|
+
case ArkCxxAstNode_1.astKind.CXXRecordDecl:
|
|
221
|
+
case ArkCxxAstNode_1.astKind.ClassTemplateDecl:
|
|
222
|
+
buildArkClassFromCxxClass(child, arkFile, astRoot);
|
|
223
|
+
break;
|
|
224
|
+
case ArkCxxAstNode_1.astKind.FunctionDecl:
|
|
225
|
+
case ArkCxxAstNode_1.astKind.FriendDecl:
|
|
226
|
+
case ArkCxxAstNode_1.astKind.FunctionTemplateDecl:
|
|
227
|
+
buildArkMethodFromCxxMethod(child, arkFile, astRoot);
|
|
228
|
+
break;
|
|
229
|
+
case ArkCxxAstNode_1.astKind.NamespaceDecl:
|
|
230
|
+
let ns = new ArkNamespace_1.ArkNamespace();
|
|
231
|
+
ns.setDeclaringArkFile(arkFile);
|
|
232
|
+
(0, ArkNamespaceBuilder_1.buildArkNamespace)(child, arkFile, ns, astRoot);
|
|
233
|
+
arkFile.addNamespace(ns);
|
|
234
|
+
addExportInfoOnCondition(child, ns, arkFile);
|
|
235
|
+
break;
|
|
236
|
+
case ArkCxxAstNode_1.astKind.CXXMethodDecl:
|
|
237
|
+
case ArkCxxAstNode_1.astKind.CXXConstructorDecl:
|
|
238
|
+
case ArkCxxAstNode_1.astKind.CXXDestructorDecl:
|
|
239
|
+
// Member function, construction and destructor need to establish the function class first
|
|
240
|
+
const arkClass = getDeclaringArkClassOfMethod(child, arkFile);
|
|
241
|
+
buildArkMethodFromCxxMethod(child, arkFile, astRoot, arkClass);
|
|
242
|
+
break;
|
|
243
|
+
case ArkCxxAstNode_1.astKind.EnumDecl:
|
|
244
|
+
child = Object.assign(Object.assign({}, child), { tagUsed: 'enum' });
|
|
245
|
+
buildArkClassFromCxxClass(child, arkFile, astRoot);
|
|
246
|
+
break;
|
|
247
|
+
case ArkCxxAstNode_1.astKind.UsingDirectiveDecl:
|
|
248
|
+
buildImportInfoFromUsing(child, astRoot, arkFile);
|
|
249
|
+
break;
|
|
250
|
+
case ArkCxxAstNode_1.astKind.VarDecl:
|
|
251
|
+
// handle global variable
|
|
252
|
+
child.mangledName = Const_1.DEFAULT_ARK_CLASS_NAME;
|
|
253
|
+
const arkDefaultClass = getDeclaringArkClassOfMethod(child, arkFile);
|
|
254
|
+
(0, ArkFieldBuilder_1.buildProperty2ArkField)(child, astRoot, arkDefaultClass);
|
|
255
|
+
break;
|
|
256
|
+
case ArkCxxAstNode_1.astKind.LinkageSpecDecl:
|
|
257
|
+
buildArkFile(arkFile, child);
|
|
258
|
+
default:
|
|
259
|
+
logger.trace('Child joined default method of arkFile: ', (_a = child.kind) !== null && _a !== void 0 ? _a : child.code);
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
// Get ArkClass of 'CXXMethodDecl'/'CXXConstructorDecl'/'CXXDestructorDecl'
|
|
265
|
+
function getDeclaringArkClassOfMethod(mtd, arkFile) {
|
|
266
|
+
var _a;
|
|
267
|
+
const className = (_a = mtd.mangledName) !== null && _a !== void 0 ? _a : '';
|
|
268
|
+
let arkClass = arkFile.getClasses().find(arkClass => arkClass.getName() === className);
|
|
269
|
+
if (!arkClass) {
|
|
270
|
+
arkClass = new ArkClass_1.ArkClass();
|
|
271
|
+
const classSignature = new ArkSignature_1.ClassSignature(className, arkFile.getFileSignature());
|
|
272
|
+
arkClass.setSignature(classSignature);
|
|
273
|
+
arkClass.setDeclaringArkFile(arkFile);
|
|
274
|
+
arkFile.addArkClass(arkClass);
|
|
275
|
+
(0, ArkClassBuilder_3.init4InstanceInitMethod)(arkClass);
|
|
276
|
+
(0, ArkClassBuilder_3.init4StaticInitMethod)(arkClass);
|
|
277
|
+
}
|
|
278
|
+
return arkClass;
|
|
279
|
+
}
|
|
280
|
+
function genDefaultArkClass(arkFile, astRoot) {
|
|
281
|
+
let defaultClass = new ArkClass_1.ArkClass();
|
|
282
|
+
(0, ArkClassBuilder_2.buildDefaultArkClassFromArkFile)(arkFile, defaultClass, astRoot);
|
|
283
|
+
arkFile.setDefaultClass(defaultClass);
|
|
284
|
+
arkFile.addArkClass(defaultClass);
|
|
285
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ImportInfo } from '../../../../core/model/ArkImport';
|
|
2
|
+
import { ArkFile } from '../../../../core/model/ArkFile';
|
|
3
|
+
import { CxxAstNode, CxxIncludeInfo } from '../../ast/ArkCxxAstNode';
|
|
4
|
+
export declare function buildGenericImportInfo(includeInfo: CxxIncludeInfo, includeNode: CxxAstNode, sourceFile: CxxAstNode, arkFile: ArkFile): ImportInfo;
|
|
5
|
+
export declare function buildUsingNamespaceImportInfo(node: CxxAstNode, sourceFile: CxxAstNode, arkFile: ArkFile): ImportInfo | null;
|
|
6
|
+
//# sourceMappingURL=ArkImportBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArkImportBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkImportBuilder.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGrE,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAWjJ;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAmB3H"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.buildUsingNamespaceImportInfo = exports.buildGenericImportInfo = void 0;
|
|
18
|
+
const Position_1 = require("../../../../core/base/Position");
|
|
19
|
+
const ArkImport_1 = require("../../../../core/model/ArkImport");
|
|
20
|
+
const IRUtils_1 = require("../../common/IRUtils");
|
|
21
|
+
const path_1 = require("path");
|
|
22
|
+
const ArkExportBuilder_1 = require("../../../../core/model/builder/ArkExportBuilder");
|
|
23
|
+
function buildGenericImportInfo(includeInfo, includeNode, sourceFile, arkFile) {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
const originTsPosition = Position_1.LineColPosition.cxxBuildFromNode(includeNode);
|
|
26
|
+
const tsSourceCode = includeInfo.code;
|
|
27
|
+
const importFrom = (0, path_1.normalize)((_b = (_a = includeInfo.fileName) !== null && _a !== void 0 ? _a : includeInfo.includeName) !== null && _b !== void 0 ? _b : '');
|
|
28
|
+
let importClauseName = `#include "${includeInfo.includeName}"`;
|
|
29
|
+
let importType = '';
|
|
30
|
+
let importInfo = new ArkImport_1.ImportInfo();
|
|
31
|
+
importInfo.build(importClauseName, importType, importFrom, originTsPosition, 0);
|
|
32
|
+
importInfo.setTsSourceCode(tsSourceCode);
|
|
33
|
+
IRUtils_1.IRUtils.setComments(importInfo, includeNode, sourceFile, arkFile.getScene().getOptions());
|
|
34
|
+
return importInfo;
|
|
35
|
+
}
|
|
36
|
+
exports.buildGenericImportInfo = buildGenericImportInfo;
|
|
37
|
+
function buildUsingNamespaceImportInfo(node, sourceFile, arkFile) {
|
|
38
|
+
const originTsPosition = Position_1.LineColPosition.cxxBuildFromNode(node);
|
|
39
|
+
if (!node.nominatedNamespace) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const importClauseName = node.nominatedNamespace.name;
|
|
43
|
+
const sourceCode = `using namespace ${importClauseName}`;
|
|
44
|
+
const importFrom = '';
|
|
45
|
+
let importType = 'NamespaceImport';
|
|
46
|
+
let importInfo = new ArkImport_1.ImportInfo();
|
|
47
|
+
importInfo.build(importClauseName, importType, importFrom, originTsPosition, 0);
|
|
48
|
+
importInfo.setTsSourceCode(sourceCode);
|
|
49
|
+
IRUtils_1.IRUtils.setComments(importInfo, node, sourceFile, arkFile.getScene().getOptions());
|
|
50
|
+
// scenario in cpp file: namespace xxx { Func() {} }; using namespace xxx;
|
|
51
|
+
const namespaceInCpp = arkFile.getNamespaceWithName(importClauseName);
|
|
52
|
+
if (namespaceInCpp) {
|
|
53
|
+
importInfo.setExportInfo((0, ArkExportBuilder_1.buildExportInfo)(namespaceInCpp, arkFile, new Position_1.LineColPosition(namespaceInCpp.getLine(), namespaceInCpp.getColumn())));
|
|
54
|
+
}
|
|
55
|
+
return importInfo;
|
|
56
|
+
}
|
|
57
|
+
exports.buildUsingNamespaceImportInfo = buildUsingNamespaceImportInfo;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ArkClass } from '../../../../core/model/ArkClass';
|
|
2
|
+
import { ArkMethod } from '../../../../core/model/ArkMethod';
|
|
3
|
+
import { Stmt } from '../../../../core/base/Stmt';
|
|
4
|
+
import { Local } from '../../../../core/base/Local';
|
|
5
|
+
import { CxxAstNode } from '../../ast/ArkCxxAstNode';
|
|
6
|
+
export declare function buildDefaultArkMethodFromArkClass(declaringClass: ArkClass, mtd: ArkMethod, sourceFile: CxxAstNode, node?: CxxAstNode): void;
|
|
7
|
+
export declare function handleFunctionTemplateDecl(methodNode: CxxAstNode, mtd: ArkMethod, sourceFile: CxxAstNode): void;
|
|
8
|
+
export declare function buildArkMethodFromArkClass(methodNode: CxxAstNode, declaringClass: ArkClass, mtd: ArkMethod, sourceFile: CxxAstNode, declaringMethod?: ArkMethod): void;
|
|
9
|
+
export declare function recursivelyCheckAndBuildSuperConstructor(arkClass: ArkClass): void;
|
|
10
|
+
export declare function buildDefaultConstructor(arkClass: ArkClass): boolean;
|
|
11
|
+
export declare function buildInitMethod(initMethod: ArkMethod, fieldInitializerStmts: Stmt[], thisLocal: Local): void;
|
|
12
|
+
export declare function addInitInConstructor(constructor: ArkMethod): void;
|
|
13
|
+
export declare function isMethodImplementation(node: CxxAstNode): boolean;
|
|
14
|
+
//# sourceMappingURL=ArkMethodBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAa7D,OAAO,EAAkE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElH,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAcpD,OAAO,EAAE,UAAU,EAA0B,MAAM,yBAAyB,CAAC;AA0B7E,wBAAgB,iCAAiC,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAY3I;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CA0B/G;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAChE,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAiDpG;AAyHD,wBAAgB,wCAAwC,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAWjF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAuDnE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,GAAG,IAAI,CAuB5G;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAmCjE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAkBhE"}
|