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,530 @@
|
|
|
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.ArkDesignatedInitExpr = exports.ArkAggregateExpr = exports.ArkAllocExpr = exports.ArkCxxNormalBinOpExpr = exports.ArkCxxFolderExpr = exports.ArkNoExpectExpr = exports.ArkTypeIdExpr = exports.ArkArrayTypeTraitExpr = exports.ArkCxxCastExpr = exports.ArkCxxUnaryExpr = exports.Operator = exports.ArkCxxInitArrayExpr = exports.ArkCxxNewArrayExpr = exports.ArkCxxDeleteArrayExpr = void 0;
|
|
18
|
+
const Expr_1 = require("../../../core/base/Expr");
|
|
19
|
+
const Type_1 = require("../../../core/base/Type");
|
|
20
|
+
const Ref_1 = require("../../../core/base/Ref");
|
|
21
|
+
const Type_2 = require("./Type");
|
|
22
|
+
const TypeInference_1 = require("../../../core/common/TypeInference");
|
|
23
|
+
const Const_1 = require("../../../core/common/Const");
|
|
24
|
+
const ModelUtils_1 = require("../../../core/common/ModelUtils");
|
|
25
|
+
const Local_1 = require("../../../core/base/Local");
|
|
26
|
+
const ArkClass_1 = require("../../../core/model/ArkClass");
|
|
27
|
+
/**
|
|
28
|
+
* delete[] expression in C++
|
|
29
|
+
* 1. c++: delete[] a / delete[] a.b / delete[] a->b
|
|
30
|
+
*/
|
|
31
|
+
class ArkCxxDeleteArrayExpr extends Expr_1.AbstractExpr {
|
|
32
|
+
constructor(field) {
|
|
33
|
+
super();
|
|
34
|
+
this.field = field;
|
|
35
|
+
}
|
|
36
|
+
getField() {
|
|
37
|
+
return this.field;
|
|
38
|
+
}
|
|
39
|
+
setField(newField) {
|
|
40
|
+
this.field = newField;
|
|
41
|
+
}
|
|
42
|
+
getType() {
|
|
43
|
+
return Type_1.BooleanType.getInstance();
|
|
44
|
+
}
|
|
45
|
+
getUses() {
|
|
46
|
+
const uses = [];
|
|
47
|
+
uses.push(this.field);
|
|
48
|
+
uses.push(...this.field.getUses());
|
|
49
|
+
return uses;
|
|
50
|
+
}
|
|
51
|
+
toString() {
|
|
52
|
+
return 'delete[] ' + this.field;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.ArkCxxDeleteArrayExpr = ArkCxxDeleteArrayExpr;
|
|
56
|
+
// Expression when creating a new array
|
|
57
|
+
class ArkCxxNewArrayExpr extends Expr_1.AbstractExpr {
|
|
58
|
+
constructor(baseType, size, fromLiteral = false, elementsNumber) {
|
|
59
|
+
super();
|
|
60
|
+
this.elementsNumber = 0; // The total number of elements contained in the array
|
|
61
|
+
this.baseType = baseType;
|
|
62
|
+
this.size = size;
|
|
63
|
+
this.fromLiteral = fromLiteral;
|
|
64
|
+
if (elementsNumber) {
|
|
65
|
+
this.elementsNumber = elementsNumber;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
getElementsNumber() {
|
|
69
|
+
return this.elementsNumber;
|
|
70
|
+
}
|
|
71
|
+
setElementsNumber(elementsNumber) {
|
|
72
|
+
this.elementsNumber = elementsNumber;
|
|
73
|
+
}
|
|
74
|
+
getSize() {
|
|
75
|
+
return this.size;
|
|
76
|
+
}
|
|
77
|
+
setSize(newSize) {
|
|
78
|
+
this.size = newSize;
|
|
79
|
+
}
|
|
80
|
+
getType() {
|
|
81
|
+
return new Type_1.ArrayType(this.baseType, 1);
|
|
82
|
+
}
|
|
83
|
+
getBaseType() {
|
|
84
|
+
return this.baseType;
|
|
85
|
+
}
|
|
86
|
+
setBaseType(newType) {
|
|
87
|
+
this.baseType = newType;
|
|
88
|
+
}
|
|
89
|
+
isFromLiteral() {
|
|
90
|
+
return this.fromLiteral;
|
|
91
|
+
}
|
|
92
|
+
inferType(arkMethod) {
|
|
93
|
+
const type = TypeInference_1.TypeInference.inferUnclearedType(this.baseType, arkMethod.getDeclaringArkClass());
|
|
94
|
+
if (type) {
|
|
95
|
+
this.baseType = type;
|
|
96
|
+
}
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
getUses() {
|
|
100
|
+
let uses = [this.size];
|
|
101
|
+
uses.push(...this.size.getUses());
|
|
102
|
+
return uses;
|
|
103
|
+
}
|
|
104
|
+
toString() {
|
|
105
|
+
return 'newarray (' + this.baseType + ')';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.ArkCxxNewArrayExpr = ArkCxxNewArrayExpr;
|
|
109
|
+
// Array 0 initialization expression
|
|
110
|
+
class ArkCxxInitArrayExpr extends Expr_1.AbstractExpr {
|
|
111
|
+
constructor(op) {
|
|
112
|
+
super();
|
|
113
|
+
this.op = op;
|
|
114
|
+
}
|
|
115
|
+
getOp() {
|
|
116
|
+
return this.op;
|
|
117
|
+
}
|
|
118
|
+
setOp(newOp) {
|
|
119
|
+
this.op = newOp;
|
|
120
|
+
}
|
|
121
|
+
getUses() {
|
|
122
|
+
let uses = [];
|
|
123
|
+
uses.push(this.op);
|
|
124
|
+
uses.push(...this.op.getUses());
|
|
125
|
+
return uses;
|
|
126
|
+
}
|
|
127
|
+
getType() {
|
|
128
|
+
return this.op.getType();
|
|
129
|
+
}
|
|
130
|
+
toString() {
|
|
131
|
+
return 'initArrayWith(' + this.op + ')';
|
|
132
|
+
}
|
|
133
|
+
inferType(arkMethod) {
|
|
134
|
+
if (this.op instanceof Ref_1.AbstractRef || this.op instanceof Expr_1.AbstractExpr) {
|
|
135
|
+
this.op.inferType(arkMethod);
|
|
136
|
+
}
|
|
137
|
+
return this;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.ArkCxxInitArrayExpr = ArkCxxInitArrayExpr;
|
|
141
|
+
var Operator;
|
|
142
|
+
(function (Operator) {
|
|
143
|
+
Operator["sizeof"] = "sizeof";
|
|
144
|
+
Operator["alignof"] = "alignof";
|
|
145
|
+
Operator["Unknown"] = "Unknown";
|
|
146
|
+
})(Operator = exports.Operator || (exports.Operator = {}));
|
|
147
|
+
// expression with either a type or (unevaluated) expression operand.
|
|
148
|
+
// Used for sizeof/alignof (C99 6.5.3.4) and vec_step (OpenCL 1.1 6.11.12).
|
|
149
|
+
class ArkCxxUnaryExpr extends Expr_1.AbstractExpr {
|
|
150
|
+
constructor(operator, op) {
|
|
151
|
+
super();
|
|
152
|
+
this.operator = operator;
|
|
153
|
+
this.op = op;
|
|
154
|
+
}
|
|
155
|
+
getOp() {
|
|
156
|
+
return this.op;
|
|
157
|
+
}
|
|
158
|
+
setOp(newOp) {
|
|
159
|
+
this.op = newOp;
|
|
160
|
+
}
|
|
161
|
+
getOperator() {
|
|
162
|
+
return this.operator;
|
|
163
|
+
}
|
|
164
|
+
getUses() {
|
|
165
|
+
let uses = [];
|
|
166
|
+
if (!(this.op instanceof Type_1.Type)) {
|
|
167
|
+
uses.push(this.op);
|
|
168
|
+
uses.push(...this.op.getUses());
|
|
169
|
+
}
|
|
170
|
+
return uses;
|
|
171
|
+
}
|
|
172
|
+
getOpType() {
|
|
173
|
+
if (this.op instanceof Type_1.Type) {
|
|
174
|
+
return this.op;
|
|
175
|
+
}
|
|
176
|
+
return this.op.getType();
|
|
177
|
+
}
|
|
178
|
+
getType() {
|
|
179
|
+
return Type_2.CxxSizeTType.getInstance(Type_2.CxxTypeSigned.UNSIGNED, Type_2.CxxTypeBitWidth.UNKNOWN, Type_2.CxxStdTypeName.SIZE_T);
|
|
180
|
+
}
|
|
181
|
+
toString() {
|
|
182
|
+
return this.operator + '(' + this.op + ')';
|
|
183
|
+
}
|
|
184
|
+
inferType(arkMethod) {
|
|
185
|
+
if (this.op instanceof Ref_1.AbstractRef || this.op instanceof Expr_1.AbstractExpr) {
|
|
186
|
+
this.op.inferType(arkMethod);
|
|
187
|
+
}
|
|
188
|
+
return this;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
exports.ArkCxxUnaryExpr = ArkCxxUnaryExpr;
|
|
192
|
+
// Type conversion expression
|
|
193
|
+
class ArkCxxCastExpr extends Expr_1.ArkCastExpr {
|
|
194
|
+
constructor(op, type, cxxCastType) {
|
|
195
|
+
super(op, type);
|
|
196
|
+
this.cxxCastType = cxxCastType;
|
|
197
|
+
}
|
|
198
|
+
getCxxCastType() {
|
|
199
|
+
return this.cxxCastType;
|
|
200
|
+
}
|
|
201
|
+
toString() {
|
|
202
|
+
return `<${this.cxxCastType}: ${this.getType()}>${this.getOp()}`;
|
|
203
|
+
}
|
|
204
|
+
inferType(arkMethod) {
|
|
205
|
+
let op = this.getOp();
|
|
206
|
+
if (op instanceof Ref_1.AbstractRef || op instanceof Expr_1.AbstractExpr) {
|
|
207
|
+
op.inferType(arkMethod);
|
|
208
|
+
}
|
|
209
|
+
return this;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.ArkCxxCastExpr = ArkCxxCastExpr;
|
|
213
|
+
// __array_extent expression,the inner of node is DeclRefExpr or several IntegerLiteral
|
|
214
|
+
class ArkArrayTypeTraitExpr extends Expr_1.AbstractExpr {
|
|
215
|
+
constructor(dimensionSizes = [], op) {
|
|
216
|
+
super();
|
|
217
|
+
this.op = op || null;
|
|
218
|
+
this.dimensionSizes = dimensionSizes;
|
|
219
|
+
}
|
|
220
|
+
getOp() {
|
|
221
|
+
return this.op;
|
|
222
|
+
}
|
|
223
|
+
setOp(newOp) {
|
|
224
|
+
this.op = newOp;
|
|
225
|
+
}
|
|
226
|
+
getUses() {
|
|
227
|
+
let uses = [];
|
|
228
|
+
if (this.op) {
|
|
229
|
+
uses.push(this.op);
|
|
230
|
+
uses.push(...this.op.getUses());
|
|
231
|
+
}
|
|
232
|
+
return uses;
|
|
233
|
+
}
|
|
234
|
+
getDimensionOrder() {
|
|
235
|
+
return this.dimensionSizes;
|
|
236
|
+
}
|
|
237
|
+
setDimensionOrder(dimensionOrder) {
|
|
238
|
+
this.dimensionSizes = dimensionOrder;
|
|
239
|
+
}
|
|
240
|
+
getOpType() {
|
|
241
|
+
if (this.op) {
|
|
242
|
+
return this.op.getType();
|
|
243
|
+
}
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
getType() {
|
|
247
|
+
return Type_2.CxxSizeTType.getInstance(Type_2.CxxTypeSigned.UNSIGNED, Type_2.CxxTypeBitWidth.UNKNOWN, Type_2.CxxStdTypeName.SIZE_T);
|
|
248
|
+
}
|
|
249
|
+
toString() {
|
|
250
|
+
if (this.op) {
|
|
251
|
+
return 'ArrayTypeTrait(' + this.op + this.dimensionSizes + ')';
|
|
252
|
+
}
|
|
253
|
+
return 'ArrayTypeTrait(' + this.dimensionSizes + ')';
|
|
254
|
+
}
|
|
255
|
+
inferType(arkMethod) {
|
|
256
|
+
if (this.op instanceof Ref_1.AbstractRef || this.op instanceof Expr_1.AbstractExpr) {
|
|
257
|
+
this.op.inferType(arkMethod);
|
|
258
|
+
}
|
|
259
|
+
return this;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
exports.ArkArrayTypeTraitExpr = ArkArrayTypeTraitExpr;
|
|
263
|
+
// typeid expression
|
|
264
|
+
class ArkTypeIdExpr extends Expr_1.AbstractExpr {
|
|
265
|
+
constructor(op) {
|
|
266
|
+
super();
|
|
267
|
+
this.op = op;
|
|
268
|
+
}
|
|
269
|
+
getOp() {
|
|
270
|
+
return this.op;
|
|
271
|
+
}
|
|
272
|
+
setOp(newOp) {
|
|
273
|
+
this.op = newOp;
|
|
274
|
+
}
|
|
275
|
+
getUses() {
|
|
276
|
+
let uses = [];
|
|
277
|
+
uses.push(this.op);
|
|
278
|
+
uses.push(...this.op.getUses());
|
|
279
|
+
return uses;
|
|
280
|
+
}
|
|
281
|
+
getType() {
|
|
282
|
+
return new Type_2.TypeInfo('type_info', this.op.getType());
|
|
283
|
+
}
|
|
284
|
+
toString() {
|
|
285
|
+
return 'typeid(' + this.op + ')';
|
|
286
|
+
}
|
|
287
|
+
inferType(arkMethod) {
|
|
288
|
+
if (this.op instanceof Ref_1.AbstractRef || this.op instanceof Expr_1.AbstractExpr) {
|
|
289
|
+
this.op.inferType(arkMethod);
|
|
290
|
+
}
|
|
291
|
+
return this;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
exports.ArkTypeIdExpr = ArkTypeIdExpr;
|
|
295
|
+
// noexcept expression
|
|
296
|
+
class ArkNoExpectExpr extends Expr_1.AbstractExpr {
|
|
297
|
+
constructor(op) {
|
|
298
|
+
super();
|
|
299
|
+
this.op = op;
|
|
300
|
+
}
|
|
301
|
+
getOp() {
|
|
302
|
+
return this.op;
|
|
303
|
+
}
|
|
304
|
+
setOp(newOp) {
|
|
305
|
+
this.op = newOp;
|
|
306
|
+
}
|
|
307
|
+
getUses() {
|
|
308
|
+
let uses = [];
|
|
309
|
+
uses.push(this.op);
|
|
310
|
+
uses.push(...this.op.getUses());
|
|
311
|
+
return uses;
|
|
312
|
+
}
|
|
313
|
+
getOpType() {
|
|
314
|
+
return this.op.getType();
|
|
315
|
+
}
|
|
316
|
+
getType() {
|
|
317
|
+
return Type_1.BooleanType.getInstance();
|
|
318
|
+
}
|
|
319
|
+
toString() {
|
|
320
|
+
return 'noexcept(' + this.op + ')';
|
|
321
|
+
}
|
|
322
|
+
inferType(arkMethod) {
|
|
323
|
+
if (this.op instanceof Ref_1.AbstractRef || this.op instanceof Expr_1.AbstractExpr) {
|
|
324
|
+
this.op.inferType(arkMethod);
|
|
325
|
+
}
|
|
326
|
+
return this;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
exports.ArkNoExpectExpr = ArkNoExpectExpr;
|
|
330
|
+
// cxx folder expression
|
|
331
|
+
class ArkCxxFolderExpr extends Expr_1.AbstractExpr {
|
|
332
|
+
constructor(arg, op) {
|
|
333
|
+
super();
|
|
334
|
+
this.arg = arg;
|
|
335
|
+
this.op = op;
|
|
336
|
+
}
|
|
337
|
+
getArg() {
|
|
338
|
+
return this.arg;
|
|
339
|
+
}
|
|
340
|
+
setArg(newArg) {
|
|
341
|
+
this.arg = newArg;
|
|
342
|
+
}
|
|
343
|
+
getUses() {
|
|
344
|
+
let uses = [];
|
|
345
|
+
uses.push(this.arg);
|
|
346
|
+
uses.push(...this.arg.getUses());
|
|
347
|
+
return uses;
|
|
348
|
+
}
|
|
349
|
+
getType() {
|
|
350
|
+
return this.arg.getType();
|
|
351
|
+
}
|
|
352
|
+
getOp() {
|
|
353
|
+
return this.op;
|
|
354
|
+
}
|
|
355
|
+
toString() {
|
|
356
|
+
return `CxxFolderExpr(` + this.arg + this.op + `...)`;
|
|
357
|
+
}
|
|
358
|
+
inferType(arkMethod) {
|
|
359
|
+
let arg = this.getArg();
|
|
360
|
+
if (arg instanceof Ref_1.AbstractRef || arg instanceof Expr_1.AbstractExpr) {
|
|
361
|
+
arg.inferType(arkMethod);
|
|
362
|
+
}
|
|
363
|
+
return this;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
exports.ArkCxxFolderExpr = ArkCxxFolderExpr;
|
|
367
|
+
class ArkCxxNormalBinOpExpr extends Expr_1.AbstractBinopExpr {
|
|
368
|
+
constructor(op1, op2, operator) {
|
|
369
|
+
super(op1, op2, operator);
|
|
370
|
+
}
|
|
371
|
+
getType() {
|
|
372
|
+
if (!this.type) {
|
|
373
|
+
this.setType();
|
|
374
|
+
}
|
|
375
|
+
return this.type;
|
|
376
|
+
}
|
|
377
|
+
setCxxType(type) {
|
|
378
|
+
this.type = type;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
exports.ArkCxxNormalBinOpExpr = ArkCxxNormalBinOpExpr;
|
|
382
|
+
// Declare class objects on the stack
|
|
383
|
+
class ArkAllocExpr extends Expr_1.AbstractExpr {
|
|
384
|
+
constructor(classType) {
|
|
385
|
+
super();
|
|
386
|
+
this.classType = classType;
|
|
387
|
+
}
|
|
388
|
+
getClassType() {
|
|
389
|
+
return this.classType;
|
|
390
|
+
}
|
|
391
|
+
getUses() {
|
|
392
|
+
return [];
|
|
393
|
+
}
|
|
394
|
+
getType() {
|
|
395
|
+
return this.classType;
|
|
396
|
+
}
|
|
397
|
+
toString() {
|
|
398
|
+
return 'alloc ' + this.classType;
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
*Inference type method
|
|
402
|
+
*@ param arkMethod - Ark method object, the context used for type inference
|
|
403
|
+
*@ returns the ArkNewExpr instance of the current object
|
|
404
|
+
*/
|
|
405
|
+
inferType(arkMethod) {
|
|
406
|
+
var _a, _b;
|
|
407
|
+
const classSignature = this.classType.getClassSignature();
|
|
408
|
+
if (classSignature.getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME) {
|
|
409
|
+
const className = classSignature.getClassName();
|
|
410
|
+
let type = (_a = ModelUtils_1.ModelUtils.findDeclaredLocal(new Local_1.Local(className), arkMethod, 1)) === null || _a === void 0 ? void 0 : _a.getType();
|
|
411
|
+
if (TypeInference_1.TypeInference.isUnclearType(type)) {
|
|
412
|
+
type = TypeInference_1.TypeInference.inferUnclearRefName(className, arkMethod.getDeclaringArkClass());
|
|
413
|
+
}
|
|
414
|
+
// If the type is an alias type, replace with the original type
|
|
415
|
+
if (type instanceof Type_1.AliasType) {
|
|
416
|
+
const originalType = TypeInference_1.TypeInference.replaceAliasType(type);
|
|
417
|
+
if (originalType instanceof Type_1.FunctionType) {
|
|
418
|
+
type = originalType.getMethodSignature().getMethodSubSignature().getReturnType();
|
|
419
|
+
}
|
|
420
|
+
else {
|
|
421
|
+
type = originalType;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
if (type && type instanceof Type_1.ClassType) {
|
|
425
|
+
const instanceType = (_b = this.constructorSignature(type, arkMethod)) !== null && _b !== void 0 ? _b : type;
|
|
426
|
+
this.classType.setClassSignature(instanceType.getClassSignature());
|
|
427
|
+
TypeInference_1.TypeInference.inferRealGenericTypes(this.classType.getRealGenericTypes(), arkMethod.getDeclaringArkClass());
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return this;
|
|
431
|
+
}
|
|
432
|
+
constructorSignature(type, arkMethod) {
|
|
433
|
+
var _a;
|
|
434
|
+
const classConstructor = arkMethod.getDeclaringArkFile().getScene().getClass(type.getClassSignature());
|
|
435
|
+
if ((classConstructor === null || classConstructor === void 0 ? void 0 : classConstructor.getCategory()) === ArkClass_1.ClassCategory.INTERFACE) {
|
|
436
|
+
const type = (_a = classConstructor.getMethodWithName('construct-signature')) === null || _a === void 0 ? void 0 : _a.getReturnType();
|
|
437
|
+
if (type) {
|
|
438
|
+
const returnType = TypeInference_1.TypeInference.replaceAliasType(type);
|
|
439
|
+
return returnType instanceof Type_1.ClassType ? returnType : undefined;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
return undefined;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
exports.ArkAllocExpr = ArkAllocExpr;
|
|
446
|
+
/**
|
|
447
|
+
* Aggregate expression to represent such cases :
|
|
448
|
+
* struct Point q = (struct Point){.x = 5, .y = 8, .name = 'c'};
|
|
449
|
+
* int* arr = (int[5]){1, 2, 3, 4, 5};
|
|
450
|
+
* the right value is {},its kind is CompoundLiteralExpr or InitListExpr
|
|
451
|
+
*/
|
|
452
|
+
class ArkAggregateExpr extends Expr_1.AbstractExpr {
|
|
453
|
+
constructor(elements, type) {
|
|
454
|
+
super();
|
|
455
|
+
this.elements = elements;
|
|
456
|
+
this.type = type;
|
|
457
|
+
}
|
|
458
|
+
getElements() {
|
|
459
|
+
return this.elements;
|
|
460
|
+
}
|
|
461
|
+
setType(type) {
|
|
462
|
+
this.type = type;
|
|
463
|
+
}
|
|
464
|
+
getUses() {
|
|
465
|
+
let uses = [];
|
|
466
|
+
for (const element of this.elements) {
|
|
467
|
+
uses.push(element);
|
|
468
|
+
uses.push(...element.getUses());
|
|
469
|
+
}
|
|
470
|
+
return uses;
|
|
471
|
+
}
|
|
472
|
+
getType() {
|
|
473
|
+
return this.type;
|
|
474
|
+
}
|
|
475
|
+
inferType(arkMethod) {
|
|
476
|
+
const trueType = TypeInference_1.TypeInference.inferUnclearedType(this.type, arkMethod.getDeclaringArkClass());
|
|
477
|
+
if (trueType) {
|
|
478
|
+
this.type = trueType;
|
|
479
|
+
}
|
|
480
|
+
return this;
|
|
481
|
+
}
|
|
482
|
+
toString() {
|
|
483
|
+
return `AggregateExpr(${this.elements})`;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
exports.ArkAggregateExpr = ArkAggregateExpr;
|
|
487
|
+
/**
|
|
488
|
+
* ArkDesignatedInitExpr is used to represent designated initializers in aggregate initialization expressions.
|
|
489
|
+
* It consists of an initializer value and a designator, which specifies the field or element to be initialized.
|
|
490
|
+
* For example:
|
|
491
|
+
* struct Point q = (struct Point){.x = 5, .y = 8, .name = 'c'};
|
|
492
|
+
* its kind is DesignatedInitExpr
|
|
493
|
+
*/
|
|
494
|
+
class ArkDesignatedInitExpr extends Expr_1.AbstractExpr {
|
|
495
|
+
constructor(init, designator) {
|
|
496
|
+
super();
|
|
497
|
+
this.init = init;
|
|
498
|
+
this.designator = designator;
|
|
499
|
+
}
|
|
500
|
+
getInit() {
|
|
501
|
+
return this.init;
|
|
502
|
+
}
|
|
503
|
+
getDesignator() {
|
|
504
|
+
return this.designator;
|
|
505
|
+
}
|
|
506
|
+
inferType(arkMethod) {
|
|
507
|
+
if (this.init instanceof Ref_1.AbstractRef || this.init instanceof Expr_1.AbstractExpr) {
|
|
508
|
+
this.init.inferType(arkMethod);
|
|
509
|
+
}
|
|
510
|
+
if (this.designator instanceof Ref_1.AbstractRef || this.designator instanceof Expr_1.AbstractExpr) {
|
|
511
|
+
this.designator.inferType(arkMethod);
|
|
512
|
+
}
|
|
513
|
+
return this;
|
|
514
|
+
}
|
|
515
|
+
getUses() {
|
|
516
|
+
let uses = [];
|
|
517
|
+
uses.push(this.init);
|
|
518
|
+
uses.push(this.designator);
|
|
519
|
+
uses.push(...this.init.getUses());
|
|
520
|
+
uses.push(...this.designator.getUses());
|
|
521
|
+
return uses;
|
|
522
|
+
}
|
|
523
|
+
getType() {
|
|
524
|
+
return this.init.getType();
|
|
525
|
+
}
|
|
526
|
+
toString() {
|
|
527
|
+
return this.init + ' = ' + this.designator;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
exports.ArkDesignatedInitExpr = ArkDesignatedInitExpr;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ArkInstanceFieldRef, ClosureFieldRef } from '../../../core/base/Ref';
|
|
2
|
+
import { Local } from '../../../core/base/Local';
|
|
3
|
+
import { FieldSignature } from '../../../core/model/ArkSignature';
|
|
4
|
+
import { Type } from '../../../core/base/Type';
|
|
5
|
+
/**
|
|
6
|
+
* C++ member access implementation, designed as a derived class because it needs to distinguish between p.f
|
|
7
|
+
* and p->f without intrusive modification to the original arkIR
|
|
8
|
+
*/
|
|
9
|
+
export declare class ArkCxxInstanceFieldRef extends ArkInstanceFieldRef {
|
|
10
|
+
private isArrow;
|
|
11
|
+
constructor(base: Local, isArrow: boolean, fieldSignature: FieldSignature);
|
|
12
|
+
isArrowAccess(): boolean;
|
|
13
|
+
toString(): string;
|
|
14
|
+
getType(): Type;
|
|
15
|
+
}
|
|
16
|
+
export declare enum CxxClosureCaptureType {
|
|
17
|
+
BY_VALUE = 0,
|
|
18
|
+
BY_REF = 1
|
|
19
|
+
}
|
|
20
|
+
export declare class CxxClosureFieldRef extends ClosureFieldRef {
|
|
21
|
+
private captureType;
|
|
22
|
+
constructor(base: Local, fieldName: string, type: Type, captureType: CxxClosureCaptureType);
|
|
23
|
+
getCaptureType(): CxxClosureCaptureType;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=Ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/base/Ref.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,OAAO,CAAU;gBAEb,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc;IAKlE,aAAa,IAAI,OAAO;IAIxB,QAAQ,IAAI,MAAM;IAIlB,OAAO,IAAI,IAAI;CAGzB;AAED,oBAAY,qBAAqB;IAC7B,QAAQ,IAAI;IACZ,MAAM,IAAI;CACb;AAED,qBAAa,kBAAmB,SAAQ,eAAe;IACnD,OAAO,CAAC,WAAW,CAAwB;gBAE/B,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB;IAKnF,cAAc,IAAI,qBAAqB;CAGjD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
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.CxxClosureFieldRef = exports.CxxClosureCaptureType = exports.ArkCxxInstanceFieldRef = void 0;
|
|
18
|
+
const Ref_1 = require("../../../core/base/Ref");
|
|
19
|
+
/**
|
|
20
|
+
* C++ member access implementation, designed as a derived class because it needs to distinguish between p.f
|
|
21
|
+
* and p->f without intrusive modification to the original arkIR
|
|
22
|
+
*/
|
|
23
|
+
class ArkCxxInstanceFieldRef extends Ref_1.ArkInstanceFieldRef {
|
|
24
|
+
constructor(base, isArrow, fieldSignature) {
|
|
25
|
+
super(base, fieldSignature);
|
|
26
|
+
this.isArrow = isArrow;
|
|
27
|
+
}
|
|
28
|
+
isArrowAccess() {
|
|
29
|
+
return this.isArrow;
|
|
30
|
+
}
|
|
31
|
+
toString() {
|
|
32
|
+
return this.getBase().toString() + (this.isArrow ? '->' : '.') + '<' + this.getFieldSignature() + '>';
|
|
33
|
+
}
|
|
34
|
+
getType() {
|
|
35
|
+
return this.getFieldSignature().getType();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.ArkCxxInstanceFieldRef = ArkCxxInstanceFieldRef;
|
|
39
|
+
var CxxClosureCaptureType;
|
|
40
|
+
(function (CxxClosureCaptureType) {
|
|
41
|
+
CxxClosureCaptureType[CxxClosureCaptureType["BY_VALUE"] = 0] = "BY_VALUE";
|
|
42
|
+
CxxClosureCaptureType[CxxClosureCaptureType["BY_REF"] = 1] = "BY_REF";
|
|
43
|
+
})(CxxClosureCaptureType = exports.CxxClosureCaptureType || (exports.CxxClosureCaptureType = {}));
|
|
44
|
+
class CxxClosureFieldRef extends Ref_1.ClosureFieldRef {
|
|
45
|
+
constructor(base, fieldName, type, captureType) {
|
|
46
|
+
super(base, fieldName, type);
|
|
47
|
+
this.captureType = captureType;
|
|
48
|
+
}
|
|
49
|
+
getCaptureType() {
|
|
50
|
+
return this.captureType;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.CxxClosureFieldRef = CxxClosureFieldRef;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BasicBlock } from '../../../core/graph/BasicBlock';
|
|
2
|
+
import { Trap } from '../../../core/base/Trap';
|
|
3
|
+
export declare class CxxTrap extends Trap {
|
|
4
|
+
private readonly cxxCatchBlocks;
|
|
5
|
+
constructor(tryBlocks: BasicBlock[], catchBlocks: BasicBlock[][]);
|
|
6
|
+
getCxxCatchBlocks(): BasicBlock[][];
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=Trap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Trap.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/base/Trap.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,qBAAa,OAAQ,SAAQ,IAAI;IAG7B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;gBAEpC,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;IAMzD,iBAAiB,IAAI,UAAU,EAAE,EAAE;CAG7C"}
|
|
@@ -0,0 +1,28 @@
|
|
|
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.CxxTrap = void 0;
|
|
18
|
+
const Trap_1 = require("../../../core/base/Trap");
|
|
19
|
+
class CxxTrap extends Trap_1.Trap {
|
|
20
|
+
constructor(tryBlocks, catchBlocks) {
|
|
21
|
+
super(tryBlocks, []);
|
|
22
|
+
this.cxxCatchBlocks = catchBlocks;
|
|
23
|
+
}
|
|
24
|
+
getCxxCatchBlocks() {
|
|
25
|
+
return this.cxxCatchBlocks;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.CxxTrap = CxxTrap;
|