gitnexus 1.6.8-rc.9 → 1.6.8
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.md +3 -3
- package/dist/_shared/graph/types.d.ts +31 -1
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/language-detection.d.ts.map +1 -1
- package/dist/_shared/language-detection.js +11 -1
- package/dist/_shared/language-detection.js.map +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.js +6 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -1
- package/dist/_shared/scope-resolution/parsed-file.d.ts +21 -0
- package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +6 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +31 -1
- package/dist/cli/ai-context.js +18 -16
- package/dist/cli/analyze-config.js +11 -0
- package/dist/cli/analyze.d.ts +14 -0
- package/dist/cli/analyze.js +98 -0
- package/dist/cli/embedding-dims.d.ts +33 -0
- package/dist/cli/embedding-dims.js +39 -0
- package/dist/cli/eval-server.d.ts +8 -0
- package/dist/cli/eval-server.js +242 -2
- package/dist/cli/help-i18n.js +19 -0
- package/dist/cli/i18n/en.d.ts +15 -1
- package/dist/cli/i18n/en.js +15 -1
- package/dist/cli/i18n/resources.d.ts +29 -1
- package/dist/cli/i18n/zh-CN.d.ts +14 -0
- package/dist/cli/i18n/zh-CN.js +15 -1
- package/dist/cli/index.js +89 -1
- package/dist/cli/mcp.d.ts +6 -1
- package/dist/cli/mcp.js +26 -1
- package/dist/cli/optional-grammars.d.ts +6 -8
- package/dist/cli/optional-grammars.js +8 -11
- package/dist/cli/setup.d.ts +3 -1
- package/dist/cli/setup.js +67 -17
- package/dist/cli/skill-gen.js +2 -1
- package/dist/cli/tool.d.ts +19 -1
- package/dist/cli/tool.js +96 -3
- package/dist/core/embeddings/hf-env.d.ts +0 -66
- package/dist/core/embeddings/http-client.d.ts +7 -0
- package/dist/core/embeddings/http-client.js +5 -3
- package/dist/core/embeddings/server-mapping.d.ts +1 -1
- package/dist/core/embeddings/server-mapping.js +7 -3
- package/dist/core/graph/import-cycles.d.ts +10 -0
- package/dist/core/graph/import-cycles.js +103 -0
- package/dist/core/group/cross-impact.d.ts +2 -1
- package/dist/core/group/cross-impact.js +5 -1
- package/dist/core/group/extractors/grpc-patterns/proto.js +10 -6
- package/dist/core/group/extractors/http-patterns/kotlin.js +7 -7
- package/dist/core/group/extractors/http-route-extractor.d.ts +24 -0
- package/dist/core/group/extractors/http-route-extractor.js +22 -4
- package/dist/core/group/extractors/include-extractor.js +22 -13
- package/dist/core/group/sync.d.ts +27 -1
- package/dist/core/group/sync.js +0 -0
- package/dist/core/incremental/subgraph-extract.js +18 -1
- package/dist/core/ingestion/cfg/cfg-builder.d.ts +114 -0
- package/dist/core/ingestion/cfg/cfg-builder.js +196 -0
- package/dist/core/ingestion/cfg/collect.d.ts +51 -0
- package/dist/core/ingestion/cfg/collect.js +77 -0
- package/dist/core/ingestion/cfg/control-dependence.d.ts +58 -0
- package/dist/core/ingestion/cfg/control-dependence.js +182 -0
- package/dist/core/ingestion/cfg/control-flow-context.d.ts +106 -0
- package/dist/core/ingestion/cfg/control-flow-context.js +124 -0
- package/dist/core/ingestion/cfg/emit.d.ts +293 -0
- package/dist/core/ingestion/cfg/emit.js +646 -0
- package/dist/core/ingestion/cfg/post-dominators.d.ts +79 -0
- package/dist/core/ingestion/cfg/post-dominators.js +176 -0
- package/dist/core/ingestion/cfg/reaching-def-reason-codec.d.ts +106 -0
- package/dist/core/ingestion/cfg/reaching-def-reason-codec.js +133 -0
- package/dist/core/ingestion/cfg/reaching-defs-graph.d.ts +18 -0
- package/dist/core/ingestion/cfg/reaching-defs-graph.js +312 -0
- package/dist/core/ingestion/cfg/reaching-defs.d.ts +162 -0
- package/dist/core/ingestion/cfg/reaching-defs.js +785 -0
- package/dist/core/ingestion/cfg/synthetic-escape.d.ts +124 -0
- package/dist/core/ingestion/cfg/synthetic-escape.js +300 -0
- package/dist/core/ingestion/cfg/traversal-result.d.ts +20 -0
- package/dist/core/ingestion/cfg/traversal-result.js +2 -0
- package/dist/core/ingestion/cfg/types.d.ts +274 -0
- package/dist/core/ingestion/cfg/types.js +13 -0
- package/dist/core/ingestion/cfg/visitors/c-cpp-harvest.d.ts +111 -0
- package/dist/core/ingestion/cfg/visitors/c-cpp-harvest.js +541 -0
- package/dist/core/ingestion/cfg/visitors/c-cpp.d.ts +74 -0
- package/dist/core/ingestion/cfg/visitors/c-cpp.js +584 -0
- package/dist/core/ingestion/cfg/visitors/call-site-harvest.d.ts +195 -0
- package/dist/core/ingestion/cfg/visitors/call-site-harvest.js +350 -0
- package/dist/core/ingestion/cfg/visitors/csharp-harvest.d.ts +124 -0
- package/dist/core/ingestion/cfg/visitors/csharp-harvest.js +589 -0
- package/dist/core/ingestion/cfg/visitors/csharp.d.ts +87 -0
- package/dist/core/ingestion/cfg/visitors/csharp.js +867 -0
- package/dist/core/ingestion/cfg/visitors/dart-harvest.d.ts +278 -0
- package/dist/core/ingestion/cfg/visitors/dart-harvest.js +870 -0
- package/dist/core/ingestion/cfg/visitors/dart.d.ts +119 -0
- package/dist/core/ingestion/cfg/visitors/dart.js +836 -0
- package/dist/core/ingestion/cfg/visitors/go-harvest.d.ts +160 -0
- package/dist/core/ingestion/cfg/visitors/go-harvest.js +621 -0
- package/dist/core/ingestion/cfg/visitors/go.d.ts +108 -0
- package/dist/core/ingestion/cfg/visitors/go.js +638 -0
- package/dist/core/ingestion/cfg/visitors/java-harvest.d.ts +108 -0
- package/dist/core/ingestion/cfg/visitors/java-harvest.js +513 -0
- package/dist/core/ingestion/cfg/visitors/java.d.ts +101 -0
- package/dist/core/ingestion/cfg/visitors/java.js +812 -0
- package/dist/core/ingestion/cfg/visitors/kotlin-harvest.d.ts +253 -0
- package/dist/core/ingestion/cfg/visitors/kotlin-harvest.js +719 -0
- package/dist/core/ingestion/cfg/visitors/kotlin.d.ts +121 -0
- package/dist/core/ingestion/cfg/visitors/kotlin.js +809 -0
- package/dist/core/ingestion/cfg/visitors/php-harvest.d.ts +172 -0
- package/dist/core/ingestion/cfg/visitors/php-harvest.js +626 -0
- package/dist/core/ingestion/cfg/visitors/php.d.ts +96 -0
- package/dist/core/ingestion/cfg/visitors/php.js +721 -0
- package/dist/core/ingestion/cfg/visitors/python-harvest.d.ts +212 -0
- package/dist/core/ingestion/cfg/visitors/python-harvest.js +739 -0
- package/dist/core/ingestion/cfg/visitors/python.d.ts +103 -0
- package/dist/core/ingestion/cfg/visitors/python.js +558 -0
- package/dist/core/ingestion/cfg/visitors/ruby-harvest.d.ts +223 -0
- package/dist/core/ingestion/cfg/visitors/ruby-harvest.js +587 -0
- package/dist/core/ingestion/cfg/visitors/ruby.d.ts +112 -0
- package/dist/core/ingestion/cfg/visitors/ruby.js +756 -0
- package/dist/core/ingestion/cfg/visitors/rust-harvest.d.ts +324 -0
- package/dist/core/ingestion/cfg/visitors/rust-harvest.js +873 -0
- package/dist/core/ingestion/cfg/visitors/rust.d.ts +95 -0
- package/dist/core/ingestion/cfg/visitors/rust.js +558 -0
- package/dist/core/ingestion/cfg/visitors/scope-tree-harvest.d.ts +87 -0
- package/dist/core/ingestion/cfg/visitors/scope-tree-harvest.js +116 -0
- package/dist/core/ingestion/cfg/visitors/swift-harvest.d.ts +255 -0
- package/dist/core/ingestion/cfg/visitors/swift-harvest.js +679 -0
- package/dist/core/ingestion/cfg/visitors/swift.d.ts +116 -0
- package/dist/core/ingestion/cfg/visitors/swift.js +787 -0
- package/dist/core/ingestion/cfg/visitors/typescript-harvest.d.ts +149 -0
- package/dist/core/ingestion/cfg/visitors/typescript-harvest.js +1056 -0
- package/dist/core/ingestion/cfg/visitors/typescript.d.ts +66 -0
- package/dist/core/ingestion/cfg/visitors/typescript.js +583 -0
- package/dist/core/ingestion/import-resolvers/utils.js +2 -0
- package/dist/core/ingestion/language-provider.d.ts +11 -0
- package/dist/core/ingestion/languages/c-cpp.js +6 -1
- package/dist/core/ingestion/languages/cobol.js +4 -0
- package/dist/core/ingestion/languages/cpp/arity-metadata.js +41 -2
- package/dist/core/ingestion/languages/cpp/captures.js +50 -1
- package/dist/core/ingestion/languages/cpp/conversion-rank.d.ts +2 -0
- package/dist/core/ingestion/languages/cpp/conversion-rank.js +89 -0
- package/dist/core/ingestion/languages/cpp/header-scan.d.ts +1 -1
- package/dist/core/ingestion/languages/cpp/header-scan.js +2 -2
- package/dist/core/ingestion/languages/cpp/inline-namespaces.js +7 -2
- package/dist/core/ingestion/languages/cpp/member-lookup.js +2 -1
- package/dist/core/ingestion/languages/cpp/query.js +23 -0
- package/dist/core/ingestion/languages/cpp/scope-resolver.js +2 -1
- package/dist/core/ingestion/languages/csharp.js +2 -0
- package/dist/core/ingestion/languages/dart.js +2 -0
- package/dist/core/ingestion/languages/go.js +2 -0
- package/dist/core/ingestion/languages/java.js +3 -0
- package/dist/core/ingestion/languages/kotlin/query.js +3 -2
- package/dist/core/ingestion/languages/kotlin.js +3 -0
- package/dist/core/ingestion/languages/php.js +2 -0
- package/dist/core/ingestion/languages/python.js +2 -0
- package/dist/core/ingestion/languages/ruby.js +2 -0
- package/dist/core/ingestion/languages/rust.js +2 -0
- package/dist/core/ingestion/languages/swift.js +2 -0
- package/dist/core/ingestion/languages/typescript.js +5 -0
- package/dist/core/ingestion/languages/vue.js +6 -0
- package/dist/core/ingestion/method-extractors/configs/c-cpp.js +6 -13
- package/dist/core/ingestion/method-extractors/generic.js +1 -0
- package/dist/core/ingestion/method-types.d.ts +2 -0
- package/dist/core/ingestion/model/symbol-table.d.ts +1 -0
- package/dist/core/ingestion/model/symbol-table.js +1 -0
- package/dist/core/ingestion/mro-processor.js +109 -0
- package/dist/core/ingestion/parsing-processor.js +23 -0
- package/dist/core/ingestion/pipeline-phases/call-summaries.d.ts +26 -0
- package/dist/core/ingestion/pipeline-phases/call-summaries.js +46 -0
- package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
- package/dist/core/ingestion/pipeline-phases/index.js +2 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +0 -21
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +18 -1
- package/dist/core/ingestion/pipeline-phases/routes.d.ts +10 -0
- package/dist/core/ingestion/pipeline-phases/routes.js +30 -1
- package/dist/core/ingestion/pipeline-phases/taint-summaries.d.ts +30 -0
- package/dist/core/ingestion/pipeline-phases/taint-summaries.js +81 -0
- package/dist/core/ingestion/pipeline.d.ts +92 -10
- package/dist/core/ingestion/pipeline.js +11 -2
- package/dist/core/ingestion/scope-extractor.js +12 -2
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +9 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.d.ts +75 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +67 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -2
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +14 -2
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +6 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +13 -1
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +9 -1
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +28 -2
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.d.ts +4 -0
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.js +9 -0
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +6 -1
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +174 -40
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +24 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +276 -190
- package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +43 -3
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +75 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +349 -1
- package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +1 -1
- package/dist/core/ingestion/taint/call-summary-codec.d.ts +75 -0
- package/dist/core/ingestion/taint/call-summary-codec.js +128 -0
- package/dist/core/ingestion/taint/call-summary-emit.d.ts +43 -0
- package/dist/core/ingestion/taint/call-summary-emit.js +70 -0
- package/dist/core/ingestion/taint/call-summary-harvest.d.ts +77 -0
- package/dist/core/ingestion/taint/call-summary-harvest.js +179 -0
- package/dist/core/ingestion/taint/call-summary-model.d.ts +47 -0
- package/dist/core/ingestion/taint/call-summary-model.js +25 -0
- package/dist/core/ingestion/taint/emit.d.ts +125 -0
- package/dist/core/ingestion/taint/emit.js +208 -0
- package/dist/core/ingestion/taint/interproc-emit.d.ts +50 -0
- package/dist/core/ingestion/taint/interproc-emit.js +88 -0
- package/dist/core/ingestion/taint/interproc-solver.d.ts +110 -0
- package/dist/core/ingestion/taint/interproc-solver.js +312 -0
- package/dist/core/ingestion/taint/match.d.ts +153 -0
- package/dist/core/ingestion/taint/match.js +278 -0
- package/dist/core/ingestion/taint/path-codec.d.ts +134 -0
- package/dist/core/ingestion/taint/path-codec.js +190 -0
- package/dist/core/ingestion/taint/propagate.d.ts +216 -0
- package/dist/core/ingestion/taint/propagate.js +659 -0
- package/dist/core/ingestion/taint/site-safety.d.ts +29 -0
- package/dist/core/ingestion/taint/site-safety.js +98 -0
- package/dist/core/ingestion/taint/source-sink-config.d.ts +107 -23
- package/dist/core/ingestion/taint/source-sink-config.js +35 -12
- package/dist/core/ingestion/taint/source-sink-registry.d.ts +6 -4
- package/dist/core/ingestion/taint/source-sink-registry.js +6 -4
- package/dist/core/ingestion/taint/summary-harvest-driver.d.ts +80 -0
- package/dist/core/ingestion/taint/summary-harvest-driver.js +179 -0
- package/dist/core/ingestion/taint/summary-harvest.d.ts +89 -0
- package/dist/core/ingestion/taint/summary-harvest.js +537 -0
- package/dist/core/ingestion/taint/summary-model.d.ts +200 -0
- package/dist/core/ingestion/taint/summary-model.js +86 -0
- package/dist/core/ingestion/taint/typescript-model.d.ts +38 -0
- package/dist/core/ingestion/taint/typescript-model.js +102 -0
- package/dist/core/ingestion/type-extractors/c-cpp.js +21 -0
- package/dist/core/ingestion/utils/env.d.ts +7 -0
- package/dist/core/ingestion/utils/env.js +12 -0
- package/dist/core/ingestion/utils/method-props.js +1 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +13 -0
- package/dist/core/ingestion/workers/parse-worker.js +76 -17
- package/dist/core/ingestion/workers/worker-pool.d.ts +9 -40
- package/dist/core/ingestion/workers/worker-pool.js +15 -2
- package/dist/core/lbug/csv-generator.d.ts +51 -3
- package/dist/core/lbug/csv-generator.js +369 -255
- package/dist/core/lbug/lbug-adapter.d.ts +58 -18
- package/dist/core/lbug/lbug-adapter.js +346 -84
- package/dist/core/lbug/lbug-config.d.ts +19 -0
- package/dist/core/lbug/lbug-config.js +29 -0
- package/dist/core/lbug/pdg-emit-sink.d.ts +127 -0
- package/dist/core/lbug/pdg-emit-sink.js +358 -0
- package/dist/core/lbug/pool-adapter.d.ts +35 -0
- package/dist/core/lbug/pool-adapter.js +90 -1
- package/dist/core/lbug/rel-pair-routing.d.ts +54 -0
- package/dist/core/lbug/rel-pair-routing.js +140 -0
- package/dist/core/lbug/schema.d.ts +2 -2
- package/dist/core/lbug/schema.js +3 -0
- package/dist/core/logger.d.ts +0 -5
- package/dist/core/run-analyze.d.ts +96 -0
- package/dist/core/run-analyze.js +207 -3
- package/dist/core/tree-sitter/parser-loader.js +5 -4
- package/dist/core/tree-sitter/safe-parse.d.ts +0 -5
- package/dist/core/tree-sitter/vendored-grammars.d.ts +39 -0
- package/dist/core/tree-sitter/vendored-grammars.js +57 -0
- package/dist/core/wiki/generator.js +3 -1
- package/dist/core/wiki/graph-queries.d.ts +6 -0
- package/dist/core/wiki/graph-queries.js +9 -1
- package/dist/mcp/http-transport.d.ts +134 -0
- package/dist/mcp/http-transport.js +503 -0
- package/dist/mcp/local/local-backend.d.ts +110 -24
- package/dist/mcp/local/local-backend.js +1225 -19
- package/dist/mcp/local/pdg-impact.d.ts +384 -0
- package/dist/mcp/local/pdg-impact.js +1972 -0
- package/dist/mcp/resources.js +13 -1
- package/dist/mcp/tools.d.ts +12 -0
- package/dist/mcp/tools.js +214 -7
- package/dist/server/analyze-launch.d.ts +29 -0
- package/dist/server/analyze-launch.js +137 -0
- package/dist/server/analyze-upload.d.ts +33 -0
- package/dist/server/analyze-upload.js +123 -0
- package/dist/server/analyze-worker.d.ts +17 -1
- package/dist/server/api.d.ts +17 -0
- package/dist/server/api.js +132 -168
- package/dist/server/git-clone.d.ts +43 -2
- package/dist/server/git-clone.js +211 -16
- package/dist/server/mcp-http.d.ts +5 -6
- package/dist/server/mcp-http.js +9 -82
- package/dist/server/middleware.d.ts +40 -0
- package/dist/server/middleware.js +92 -0
- package/dist/server/private-ip.d.ts +1 -0
- package/dist/server/private-ip.js +15 -0
- package/dist/server/upload-ingest.d.ts +56 -0
- package/dist/server/upload-ingest.js +276 -0
- package/dist/server/upload-paths.d.ts +37 -0
- package/dist/server/upload-paths.js +57 -0
- package/dist/server/upload-sweep.d.ts +20 -0
- package/dist/server/upload-sweep.js +57 -0
- package/dist/storage/git.js +5 -8
- package/dist/storage/parse-cache.d.ts +22 -1
- package/dist/storage/parse-cache.js +41 -10
- package/dist/storage/repo-manager.d.ts +121 -10
- package/dist/storage/repo-manager.js +43 -5
- package/dist/types/pipeline.d.ts +9 -0
- package/hooks/antigravity/gitnexus-antigravity-hook.cjs +110 -10
- package/hooks/claude/gitnexus-hook.cjs +110 -13
- package/hooks/claude/hook-db-lock-probe.cjs +513 -26
- package/package.json +8 -2
- package/scripts/assert-publish-grammar-coverage.cjs +31 -0
- package/scripts/build-tree-sitter-grammars.cjs +16 -10
- package/scripts/cross-platform-tests.ts +1 -0
- package/skills/gitnexus-debugging.md +16 -4
- package/skills/gitnexus-exploring.md +3 -3
- package/skills/gitnexus-guide.md +33 -0
- package/skills/gitnexus-pdg-query.md +89 -0
- package/skills/gitnexus-refactoring.md +1 -1
- package/skills/gitnexus-taint-analysis.md +178 -0
- package/vendor/tree-sitter-c/package.json +1 -1
- package/vendor/tree-sitter-dart/package.json +1 -1
- package/vendor/tree-sitter-kotlin/package.json +1 -1
- package/vendor/tree-sitter-proto/package.json +1 -1
- package/vendor/tree-sitter-swift/package.json +1 -1
- package/web/assets/{agent-CKPMqImC.js → agent-D3Xd7zZE.js} +123 -123
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-DxJw65fT.js +1 -0
- package/web/assets/architectureDiagram-UL44E2DR-ChH9xW-N.js +36 -0
- package/web/assets/{blockDiagram-7IZFK4PR-B4niSLvR.js → blockDiagram-7IZFK4PR-BkWhpzWB.js} +1 -1
- package/web/assets/{c4Diagram-Y2BXMSZH-DIzEXalR.js → c4Diagram-Y2BXMSZH-DtBvpzWD.js} +1 -1
- package/web/assets/{chunk-3SSMPTDK-BzGeeheI.js → chunk-3SSMPTDK-B4_etUhr.js} +2 -2
- package/web/assets/{chunk-5IMINLNL-CnTLsXIV.js → chunk-5IMINLNL-DOdTeQri.js} +1 -1
- package/web/assets/{chunk-5VCL7Z4A-w1BCx98Z.js → chunk-5VCL7Z4A-CQ-2dYWj.js} +1 -1
- package/web/assets/chunk-6764PJDD-DpIS7hxD.js +1 -0
- package/web/assets/{chunk-67TQ5CYL-CChC2cAv.js → chunk-67TQ5CYL-4sNPJU1q.js} +3 -3
- package/web/assets/{chunk-7W6UQGC5-CgFyfZ6k.js → chunk-7W6UQGC5-KyEG0HQg.js} +1 -1
- package/web/assets/{chunk-AZZRMDJM-5E9ARdDQ.js → chunk-AZZRMDJM-y-xJBuMz.js} +1 -1
- package/web/assets/{chunk-INKRHTLW-ELpfuk9h.js → chunk-INKRHTLW-Nu4ri9P-.js} +1 -1
- package/web/assets/{chunk-JQRUD6KW-Dcq_Qnyy.js → chunk-JQRUD6KW-Dbva2Z17.js} +1 -1
- package/web/assets/{chunk-KGFNY3KK-W-VR57xb.js → chunk-KGFNY3KK-JGMJvKCK.js} +1 -1
- package/web/assets/chunk-KGYTTC2M-CWC_c3H9.js +161 -0
- package/web/assets/{chunk-KNLZD3CH-BuZBOcso.js → chunk-KNLZD3CH-BGlP6X9R.js} +1 -1
- package/web/assets/{chunk-KRXBNO2N-DH2NPM7I.js → chunk-KRXBNO2N-BW5o0KUN.js} +1 -1
- package/web/assets/{chunk-LCXTWHL2-Dfmux4m1.js → chunk-LCXTWHL2-zoomRtWX.js} +1 -1
- package/web/assets/{chunk-LII3EMHJ-3X33tCpU.js → chunk-LII3EMHJ-D-jm-dLa.js} +1 -1
- package/web/assets/{chunk-QA3QBVWF-D5Ha3GgB.js → chunk-QA3QBVWF-BgRW3SXd.js} +1 -1
- package/web/assets/{chunk-RG4AUYOV-CAkzcoRj.js → chunk-RG4AUYOV-DD0B2N2B.js} +1 -1
- package/web/assets/{chunk-T2UQINTJ-kGYG7ppP.js → chunk-T2UQINTJ-DSBqkzH7.js} +1 -1
- package/web/assets/chunk-T5OCTHI4-DdZvN-9i.js +1 -0
- package/web/assets/{chunk-UY5QBCOK-Du-c56gs.js → chunk-UY5QBCOK-DyF0vyGd.js} +1 -1
- package/web/assets/{chunk-W44A43WB-lrCpuupA.js → chunk-W44A43WB-JqMLIpR0.js} +1 -1
- package/web/assets/{chunk-ZXARS5L4-CSZRiyOf.js → chunk-ZXARS5L4-CxN8oiwI.js} +1 -1
- package/web/assets/classDiagram-KGZ6W3CR-DJm9BgF-.js +1 -0
- package/web/assets/classDiagram-v2-72OJOZXJ-DJm9BgF-.js +1 -0
- package/web/assets/{context-builder-_HS0v2ma.js → context-builder-BHiFUA8O.js} +10 -2
- package/web/assets/{cose-bilkent-UX7MHV2Q-BHv2bbtl.js → cose-bilkent-UX7MHV2Q-D71wNYRJ.js} +1 -1
- package/web/assets/dagre-ND4H6XIP-BIkxmhcu.js +4 -0
- package/web/assets/diagram-3NCE3AQN-BTa6iH0T.js +43 -0
- package/web/assets/diagram-GF46GFSD-DZDV0vBj.js +24 -0
- package/web/assets/{diagram-HNR7UZ2L-fUWreZzx.js → diagram-HNR7UZ2L-DFCfd5LI.js} +2 -2
- package/web/assets/diagram-QXG6HAR7-BzM--Jj0.js +24 -0
- package/web/assets/diagram-WEQXMOUZ-DFFwz0k4.js +10 -0
- package/web/assets/{erDiagram-L5TCEMPS-QN2eEP1e.js → erDiagram-L5TCEMPS-CfHMJJqo.js} +1 -1
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-BQm9QzEa.js +1 -0
- package/web/assets/{flowDiagram-H6V6AXG4-CXbXImlN.js → flowDiagram-H6V6AXG4-Be805QiJ.js} +3 -3
- package/web/assets/{ganttDiagram-JCBTUEKG-BHQssTz6.js → ganttDiagram-JCBTUEKG-D3iL2Aet.js} +1 -1
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-Cr_Bm2Nb.js +1 -0
- package/web/assets/gitGraphDiagram-S2ZK5IYY-CPIDgxGm.js +106 -0
- package/web/assets/index-BvYev1UJ.js +635 -0
- package/web/assets/index-_lgn7hs5.css +2 -0
- package/web/assets/info-J43DQDTF-KCYPFFUO-Cs4p2oyk.js +1 -0
- package/web/assets/infoDiagram-3YFTVSEB-Y7BKSoke.js +2 -0
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-6LKOvBfp.js → ishikawaDiagram-BNXS4ZKH-CT4SHFuI.js} +1 -1
- package/web/assets/{journeyDiagram-M6C3CM3L-DNPYCpvq.js → journeyDiagram-M6C3CM3L-CvArszLo.js} +1 -1
- package/web/assets/{kanban-definition-75IXJCU3-DgDi9oJT.js → kanban-definition-75IXJCU3-C6yDxr7N.js} +3 -3
- package/web/assets/{katex-K3KEBU37-CrVLz8l7.js → katex-K3KEBU37-CTc5BslQ.js} +1 -1
- package/web/assets/{mindmap-definition-2TDM6QVE-CwR5sBB-.js → mindmap-definition-2TDM6QVE-BOc2WEne.js} +1 -1
- package/web/assets/packet-YPE3B663-LP52Z2RK-CKCrztD2.js +1 -0
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-BB7pHqoD.js +1 -0
- package/web/assets/{pieDiagram-CU6KROY3-By8g6f6B.js → pieDiagram-CU6KROY3-Cvc0f_Pd.js} +1 -1
- package/web/assets/{quadrantDiagram-VICAPDV7-bAm6Hi_5.js → quadrantDiagram-VICAPDV7-yXSZ2lLz.js} +1 -1
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DhoTOcuK.js +1 -0
- package/web/assets/{requirementDiagram-JXO7QTGE-7oDcJ1_J.js → requirementDiagram-JXO7QTGE-BRcZvHs4.js} +1 -1
- package/web/assets/{sankeyDiagram-URQDO5SZ-LFJz53u5.js → sankeyDiagram-URQDO5SZ-1qEjlFIB.js} +1 -1
- package/web/assets/{sequenceDiagram-VS2MUI6T-FySeKCUy.js → sequenceDiagram-VS2MUI6T-PcSCuvrB.js} +3 -3
- package/web/assets/stateDiagram-7D4R322I-D6qYSV1E.js +1 -0
- package/web/assets/stateDiagram-v2-36443NZ5-Bg-ImOSX.js +1 -0
- package/web/assets/{timeline-definition-O6YCAMPW-Ds2CnVZK.js → timeline-definition-O6YCAMPW-QWkh01xw.js} +1 -1
- package/web/assets/treeView-BLDUP644-QA4HXRO3-ODehyGKL.js +1 -0
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-BfpgC-7o.js +1 -0
- package/web/assets/{vennDiagram-MWXL3ELB-DUIEwXWp.js → vennDiagram-MWXL3ELB-ak4DfwuM.js} +3 -3
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-CNeL6VHE.js +1 -0
- package/web/assets/{wardleyDiagram-CUQ6CDDI-DEiFPQih.js → wardleyDiagram-CUQ6CDDI-CTzR4Loq.js} +1 -1
- package/web/assets/{xychartDiagram-N2JHSOCM-BUbayhST.js → xychartDiagram-N2JHSOCM-DA1BEaQz.js} +1 -1
- package/web/index.html +13 -15
- package/scripts/materialize-vendor-grammars.cjs +0 -97
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BETj2x4g.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-D1EXI0zA.js +0 -36
- package/web/assets/chunk-2T2R6R2M-n6s9JZqv.js +0 -4
- package/web/assets/chunk-2UTLFMKG-CMBB1TMN.js +0 -1
- package/web/assets/chunk-4R4BOZG6-mKhL59ul.js +0 -159
- package/web/assets/chunk-6764PJDD-ChwMM2z4.js +0 -1
- package/web/assets/chunk-7J6CGLKN-DT-b53FT.js +0 -10
- package/web/assets/chunk-C62D2QBJ-CDAWj26E.js +0 -1
- package/web/assets/chunk-CEXFNPSA-D68Tk6ls.js +0 -1
- package/web/assets/chunk-CilyBKbf.js +0 -1
- package/web/assets/chunk-J5EP6P6S-DxWW0yvu.js +0 -1
- package/web/assets/chunk-KGYTTC2M-C6PHeuay.js +0 -1
- package/web/assets/chunk-RERM46MO-DQNbXtfw.js +0 -1
- package/web/assets/chunk-RKZBBQEN-BmTPLSyv.js +0 -1
- package/web/assets/chunk-RLI5ZMPA-DExu2DOK.js +0 -1
- package/web/assets/chunk-T5OCTHI4--9wWpVws.js +0 -1
- package/web/assets/chunk-UP6H54XL-DsKdC6jC.js +0 -1
- package/web/assets/chunk-UXSXWOXI-DR81EqLr.js +0 -1
- package/web/assets/classDiagram-KGZ6W3CR-Bv93af_b.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-CLfEqHUa.js +0 -1
- package/web/assets/dagre-ND4H6XIP-DsIr9MOv.js +0 -4
- package/web/assets/diagram-3NCE3AQN-BqAtKUpW.js +0 -43
- package/web/assets/diagram-GF46GFSD-CaBG6n6o.js +0 -24
- package/web/assets/diagram-QXG6HAR7-CZ-O3rcV.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-P4lSL4GH.js +0 -10
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-B3myHUst.js +0 -1
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DF3rtf4A.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-CCwVLT__.js +0 -106
- package/web/assets/index-BKWA-m7o.css +0 -2
- package/web/assets/index-CG6q8eTs.js +0 -626
- package/web/assets/info-J43DQDTF-KCYPFFUO-R4XV_akJ.js +0 -1
- package/web/assets/infoDiagram-3YFTVSEB-DmLICZx1.js +0 -2
- package/web/assets/packet-YPE3B663-LP52Z2RK-CgQPdNZa.js +0 -1
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-BzWOwc_c.js +0 -1
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-B7KG0FN7.js +0 -1
- package/web/assets/stateDiagram-7D4R322I-CB2nABwH.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-COBGd2RL.js +0 -1
- package/web/assets/treeView-BLDUP644-QA4HXRO3-CRSxEwLO.js +0 -1
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-a0PfKoVn.js +0 -1
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-BKQ6e5mC.js +0 -1
- /package/web/assets/{chunk-AQ6EADP3-CCFje6lL.js → chunk-AQ6EADP3-CZhslHi-.js} +0 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Python def/use harvester — the Python analogue of
|
|
3
|
+
* {@link import('./typescript-harvest.js').TsHarvester} and the C-family
|
|
4
|
+
* harvesters ({@link import('./go-harvest.js').GoHarvester} et al.). Python is
|
|
5
|
+
* the most structurally divergent CFG target (indentation blocks, no braces,
|
|
6
|
+
* comprehensions, `with`, `try/except/else/finally`, `match/case`), so this
|
|
7
|
+
* harvester exercises the shared reaching-defs / CDG substrate against a grammar
|
|
8
|
+
* with none of the brace-family assumptions.
|
|
9
|
+
*
|
|
10
|
+
* Runs in the parse worker next to the Python CFG visitor, extracting
|
|
11
|
+
* per-statement variable definition/use facts that ride the side channel for the
|
|
12
|
+
* reaching-defs / CDG solvers. Output is the per-function binding table
|
|
13
|
+
* ({@link BindingEntry}[]) plus {@link StatementFacts} the visitor attaches to
|
|
14
|
+
* blocks as it walks. Each `call` ALSO records a taint {@link SiteRecord} (callee
|
|
15
|
+
* path, receiver, per-arg occurrence entries, result defs, spread marker, and an
|
|
16
|
+
* `at` anchor) via the shared {@link CallSiteFactAccumulator} — the same site
|
|
17
|
+
* substrate the C-family / Go / TS harvesters emit. Python has NO `new`
|
|
18
|
+
* expression (constructors are plain `call`s), so every site is `kind: 'call'`.
|
|
19
|
+
* The `at` anchor is the `call` node's start position, byte-aligned with the
|
|
20
|
+
* `@reference.call.*` CALLS-edge anchor (which also captures the whole `call`
|
|
21
|
+
* node), so the downstream resolved-callee-id join lands by exact position.
|
|
22
|
+
*
|
|
23
|
+
* Every node type and field literal below was grammar-validated against
|
|
24
|
+
* tree-sitter-python (0.23.x) via the introspection probe before use (mandatory
|
|
25
|
+
* pre-step). Python shapes pre-empted (verified by a real parse):
|
|
26
|
+
* - functions: `function_definition` (fields `name`/`parameters`/`body`; async
|
|
27
|
+
* is the SAME node with an `async` token child) and `lambda` (fields
|
|
28
|
+
* `parameters`=`lambda_parameters`, `body`).
|
|
29
|
+
* - parameters: bare `identifier`, `default_parameter` (fields `name`/`value`),
|
|
30
|
+
* `typed_parameter` (no `name` field — the binder is a named child:
|
|
31
|
+
* `identifier` / `list_splat_pattern` / `dictionary_splat_pattern`),
|
|
32
|
+
* `typed_default_parameter` (fields `name`/`type`/`value`),
|
|
33
|
+
* `list_splat_pattern` (`*args`), `dictionary_splat_pattern` (`**kwargs`).
|
|
34
|
+
* - assignment targets: `assignment` (fields `left`/`right`/optional `type`;
|
|
35
|
+
* LHS may be `identifier`, `pattern_list`, `tuple_pattern`, `list_pattern`,
|
|
36
|
+
* `attribute`, or `subscript`), `augmented_assignment` (fields
|
|
37
|
+
* `left`/`operator`/`right` — read+write), `named_expression` walrus (fields
|
|
38
|
+
* `name`/`value`).
|
|
39
|
+
* - unpacking patterns: `pattern_list` / `tuple_pattern` / `list_pattern`
|
|
40
|
+
* nest `identifier` and `list_splat_pattern` (`*rest`) targets.
|
|
41
|
+
* - binders: `for_statement` (fields `left`/`right`), `for_in_clause`
|
|
42
|
+
* (comprehension binder, fields `left`/`right`), `with_item` (field `value`
|
|
43
|
+
* = `as_pattern` whose `alias`=`as_pattern_target`, or a bare expression),
|
|
44
|
+
* `except_clause` / `except_group_clause` (`as_pattern` → `as_pattern_target`),
|
|
45
|
+
* `global_statement` / `nonlocal_statement` (identifier children).
|
|
46
|
+
* - reads: `attribute` (fields `object`/`attribute`), `subscript` (fields
|
|
47
|
+
* `value`/`subscript`), `call` (fields `function`/`arguments`),
|
|
48
|
+
* `boolean_operator` (fields `left`/`operator`/`right`),
|
|
49
|
+
* `conditional_expression` (ternary: consequent / condition / alternative in
|
|
50
|
+
* source order), `parenthesized_expression`.
|
|
51
|
+
*
|
|
52
|
+
* TWO-PHASE, ORDER-INDEPENDENT (load-bearing — mirrors the TS / Go harvesters):
|
|
53
|
+
* the CFG walk is NOT source-order, so resolving names against a scope stack
|
|
54
|
+
* populated *during* the walk would mis-resolve. Phase 1 pre-scans the whole
|
|
55
|
+
* function subtree once, declaring every in-function name (Python's def-on-first-
|
|
56
|
+
* assignment scoping has a SINGLE function scope — there is no block scope, so
|
|
57
|
+
* the whole function body shares one table). Phase 2 resolves defs/uses against
|
|
58
|
+
* that finished table from any walk order.
|
|
59
|
+
*
|
|
60
|
+
* Python scope model (deliberately simplified, documented): Python binds names
|
|
61
|
+
* at FUNCTION scope on first assignment anywhere in the body (no block scope).
|
|
62
|
+
* We therefore declare all assignment / for / with / except / walrus /
|
|
63
|
+
* comprehension targets and parameters into the single function table.
|
|
64
|
+
* `global x` / `nonlocal x` names are recorded as SYNTHETIC module-level
|
|
65
|
+
* bindings (`name@module`) so their writes/reads share one binding with the
|
|
66
|
+
* outer scope rather than minting a confusing function-local. Comprehension
|
|
67
|
+
* targets technically have their OWN scope in Py3 (a leaked `i` after `[i for
|
|
68
|
+
* i in xs]` does NOT exist), but we declare them in the function table anyway —
|
|
69
|
+
* a documented over-approximation that keeps the comprehension target a real
|
|
70
|
+
* def (the plan's explicit ask) without modeling nested comprehension scopes.
|
|
71
|
+
*
|
|
72
|
+
* v1 def-semantics scope:
|
|
73
|
+
* - `assignment` plain `=` — each identifier target in the (possibly nested)
|
|
74
|
+
* LHS pattern is a def; a `*rest` splat target is a def; an `attribute` /
|
|
75
|
+
* `subscript` target is NOT a scalar def (its root identifier is a use).
|
|
76
|
+
* - `augmented_assignment` (`x += 1`) — def AND use the lvalue.
|
|
77
|
+
* - `named_expression` walrus (`(n := f())`) — `n` is a def.
|
|
78
|
+
* - `for_statement` / `for_in_clause` `left` — loop/comprehension targets are
|
|
79
|
+
* defs; `right` is a use.
|
|
80
|
+
* - `with_item` `as` alias (`with cm as fh`) — `fh` is a def.
|
|
81
|
+
* - `except ... as e` — `e` is a `catch`-kind def (matters to the taint pass).
|
|
82
|
+
* - parameters (incl. defaults, `*args`, `**kwargs`, typed) — `param`-kind defs.
|
|
83
|
+
* EXCLUDED, deliberately (TypeScript-CFA precedent): attribute / subscript
|
|
84
|
+
* writes (`obj.f = …`, `arr[i] = …`) are NOT scalar defs — their root
|
|
85
|
+
* identifiers are uses only. Nested function (`function_definition` / `lambda`)
|
|
86
|
+
* bodies are opaque in BOTH directions (reads of and writes to captured outer
|
|
87
|
+
* variables are invisible — callback flows are later-pass territory).
|
|
88
|
+
*
|
|
89
|
+
* MAY-DEFS: a def inside a conditionally-evaluated subexpression is a may-def
|
|
90
|
+
* (gen WITHOUT kill), so the not-taken path's prior def is not falsely killed.
|
|
91
|
+
* Python's conditional-def shapes: a walrus in the right operand of `or` / `and`
|
|
92
|
+
* short-circuit (`a or (x := b)`), a walrus in either non-test arm of a ternary
|
|
93
|
+
* (`(a := p) if c else (b := q)`), and a `case`-clause guard / pattern test.
|
|
94
|
+
*
|
|
95
|
+
* NOTE: nothing serialized here may carry a field named `nodeId` — the durable
|
|
96
|
+
* parsedfile-store reviver dedups objects keyed on that field name.
|
|
97
|
+
*/
|
|
98
|
+
import type { SyntaxNode } from '../../utils/ast-helpers.js';
|
|
99
|
+
import type { BindingEntry, StatementFacts } from '../types.js';
|
|
100
|
+
export declare class PythonHarvester {
|
|
101
|
+
private readonly fnNode;
|
|
102
|
+
private readonly bindings;
|
|
103
|
+
/** Single function-scope name → binding index (Python has no block scope). */
|
|
104
|
+
private readonly table;
|
|
105
|
+
private readonly synthetic;
|
|
106
|
+
/** Names declared `global`/`nonlocal` — resolve to the synthetic module binding. */
|
|
107
|
+
private readonly globalNames;
|
|
108
|
+
private readonly fnId;
|
|
109
|
+
/** >0 while walking a conditionally-evaluated subexpression — defs become may-defs. */
|
|
110
|
+
private conditionalDepth;
|
|
111
|
+
/**
|
|
112
|
+
* `call` node id → binding indices its single-target result is assigned to
|
|
113
|
+
* (`x = f()` ⇒ `[x]`). Populated just before the value walk reaches the call
|
|
114
|
+
* (see {@link registerResultDefs}) and consumed by {@link visitCall}. Mirrors
|
|
115
|
+
* the Go harvester's `resultDefTargets`.
|
|
116
|
+
*/
|
|
117
|
+
private readonly resultDefTargets;
|
|
118
|
+
constructor(fnNode: SyntaxNode);
|
|
119
|
+
/** The completed binding table — pass to `CfgBuilder.finish`. */
|
|
120
|
+
bindingTable(): readonly BindingEntry[];
|
|
121
|
+
/** The function/lambda body node (a `block` for `def`, an expression for `lambda`). */
|
|
122
|
+
private bodyOf;
|
|
123
|
+
private declare;
|
|
124
|
+
/** Declare every parameter binder (incl. defaults, typed, `*args`, `**kwargs`). */
|
|
125
|
+
private declareParams;
|
|
126
|
+
/** Declare the binder identifier(s) of one parameter node. */
|
|
127
|
+
private declareParam;
|
|
128
|
+
/** Declare a binder that may be an identifier or a `*`/`**` splat pattern. */
|
|
129
|
+
private declareParamBinder;
|
|
130
|
+
/**
|
|
131
|
+
* Pre-scan the function body once, declaring every in-function name. Recurses
|
|
132
|
+
* into compound statements but NOT into nested `function_definition` / `lambda`
|
|
133
|
+
* bodies (opaque). `global`/`nonlocal` are processed FIRST in a sibling sweep
|
|
134
|
+
* so a later assignment to a global name does not mint a function-local.
|
|
135
|
+
*/
|
|
136
|
+
private prescan;
|
|
137
|
+
/** Declare identifier/splat leaves of an assignment / loop target pattern. */
|
|
138
|
+
private declareTargets;
|
|
139
|
+
/** `with EXPR as TARGET` — declare the alias target(s). */
|
|
140
|
+
private declareWithItem;
|
|
141
|
+
/** `except E as e` — declare `e`. */
|
|
142
|
+
private declareExceptAlias;
|
|
143
|
+
/** The `as_pattern_target` child of an `as_pattern` (when no `alias` field). */
|
|
144
|
+
private asPatternTarget;
|
|
145
|
+
/** Declare an `as_pattern_target` (or its identifier child) as a binding. */
|
|
146
|
+
private declareAsTarget;
|
|
147
|
+
/** Def/use facts for one statement (or construct-header expression) node. */
|
|
148
|
+
facts(node: SyntaxNode): StatementFacts;
|
|
149
|
+
/** Facts for an expression whose WHOLE evaluation is conditional (case tests). */
|
|
150
|
+
factsConditional(node: SyntaxNode): StatementFacts;
|
|
151
|
+
/**
|
|
152
|
+
* Facts for a `for TARGET in ITER` / `for_in_clause` head: the loop target(s)
|
|
153
|
+
* are defs, the iterated expression is a use.
|
|
154
|
+
*/
|
|
155
|
+
loopHeadFacts(headNode: SyntaxNode): StatementFacts;
|
|
156
|
+
/** Facts for a `with_item`: the `as` alias is a def, the value an use. */
|
|
157
|
+
withItemFacts(item: SyntaxNode): StatementFacts;
|
|
158
|
+
/** Facts for an `except E as e:` header: `e` is a def, `E` a use. */
|
|
159
|
+
exceptHeadFacts(clause: SyntaxNode): StatementFacts;
|
|
160
|
+
/** ENTRY-block facts for the parameters (defs only — incl. default-value uses). */
|
|
161
|
+
paramFacts(): StatementFacts | undefined;
|
|
162
|
+
/** Def the binder(s) of one parameter node and use any default-value expr. */
|
|
163
|
+
private defParam;
|
|
164
|
+
private defParamBinder;
|
|
165
|
+
private resolve;
|
|
166
|
+
private def;
|
|
167
|
+
private use;
|
|
168
|
+
/** Run `fn` with defs demoted to may-defs (conditionally-evaluated context). */
|
|
169
|
+
private conditional;
|
|
170
|
+
/**
|
|
171
|
+
* Def each identifier/splat leaf of an assignment / loop target pattern; route
|
|
172
|
+
* attribute / subscript targets to the value walk (root identifier is a use).
|
|
173
|
+
*/
|
|
174
|
+
private defTargets;
|
|
175
|
+
/** Def an `as_pattern_target` (or its identifier child). */
|
|
176
|
+
private defAsTarget;
|
|
177
|
+
/** Value-position walk: collect uses; route def positions to the target handler. */
|
|
178
|
+
private walkValue;
|
|
179
|
+
/**
|
|
180
|
+
* A comprehension (`[body for t in src if g]`): each `for_in_clause` target is
|
|
181
|
+
* a def, its source a use; the `body` and any `if_clause` are uses. Kept INLINE
|
|
182
|
+
* (no separate CFG blocks) per the plan — the target binding is harvested so it
|
|
183
|
+
* is a real def. The `for_in_clause` source is walked in the ENCLOSING context
|
|
184
|
+
* (it reads outer names), the body/filter after the targets are bound.
|
|
185
|
+
*/
|
|
186
|
+
private walkComprehension;
|
|
187
|
+
/**
|
|
188
|
+
* When `value`'s root (after stripping parens) is a `call`, remember that
|
|
189
|
+
* call site should carry `resultDefs` — the binding indices of `targets`
|
|
190
|
+
* (def-position identifiers). Consumed by {@link visitCall} once the value
|
|
191
|
+
* walk reaches the node. Single-target only (the caller restricts to a plain
|
|
192
|
+
* identifier LHS); the blank identifier (`_`) binds nothing and is skipped.
|
|
193
|
+
*/
|
|
194
|
+
private registerResultDefs;
|
|
195
|
+
/** Strip `parenthesized_expression` wrappers around a value (`(f())`). */
|
|
196
|
+
private unwrapValue;
|
|
197
|
+
/**
|
|
198
|
+
* Explicit `call` handler. Records a call site (callee path, receiver, per-arg
|
|
199
|
+
* occurrence entries, result defs, spread marker) while reproducing EXACTLY
|
|
200
|
+
* the uses the old default descent recorded (callee chain root + arguments).
|
|
201
|
+
* Python has no `new` — every site is `kind: 'call'`.
|
|
202
|
+
*/
|
|
203
|
+
private visitCall;
|
|
204
|
+
/**
|
|
205
|
+
* `attribute` chain walk shared by value position and callee position. Records
|
|
206
|
+
* the chain-root identifier as a use (identical to the old default descent)
|
|
207
|
+
* plus at most ONE member-read site — the INNERMOST access — when the root is
|
|
208
|
+
* an identifier; `skipFinalRead` suppresses it when that access is the callee
|
|
209
|
+
* (carried by the dotted path instead). Mirrors the Go harvester's `walkChain`.
|
|
210
|
+
*/
|
|
211
|
+
private walkChain;
|
|
212
|
+
}
|