gitnexus 1.6.8-rc.8 → 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 +23 -2
- package/dist/core/ingestion/languages/c-cpp.js +17 -5
- 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 +8 -1
- 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 +44 -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/clone-safety.d.ts +109 -0
- package/dist/core/ingestion/workers/clone-safety.js +465 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +23 -0
- package/dist/core/ingestion/workers/parse-worker.js +81 -53
- package/dist/core/ingestion/workers/post-result.d.ts +22 -0
- package/dist/core/ingestion/workers/post-result.js +87 -0
- package/dist/core/ingestion/workers/result-merge.d.ts +20 -0
- package/dist/core/ingestion/workers/result-merge.js +43 -0
- package/dist/core/ingestion/workers/worker-pool.d.ts +15 -40
- package/dist/core/ingestion/workers/worker-pool.js +43 -16
- 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-ipc.d.ts +58 -0
- package/dist/server/analyze-worker-ipc.js +16 -0
- package/dist/server/analyze-worker.d.ts +17 -1
- package/dist/server/analyze-worker.js +7 -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 +44 -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,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dart def/use harvester (#2195) — the Dart analogue of
|
|
3
|
+
* {@link import('./python-harvest.js').PythonHarvester} and the C-family
|
|
4
|
+
* harvesters. Like Python it harvests per-function binding tables
|
|
5
|
+
* ({@link BindingEntry}[]) plus {@link StatementFacts} (defs / uses / mayDefs)
|
|
6
|
+
* AND a taint {@link import('../types.js').SiteRecord} per call / `new` (callee
|
|
7
|
+
* path, receiver, per-arg occurrence entries, result defs, spread marker, and an
|
|
8
|
+
* `at` anchor) via the shared {@link CallSiteFactAccumulator} — the same site
|
|
9
|
+
* substrate the C-family / Go / TS / Python harvesters emit.
|
|
10
|
+
*
|
|
11
|
+
* DART HAS NO `call_expression` NODE (verified by a real parse — see below). A
|
|
12
|
+
* call is a FLAT SIBLING RUN under a container (`expression_statement`,
|
|
13
|
+
* `argument`, an `initialized_variable_definition`'s `value` field,
|
|
14
|
+
* `await_expression`, …): a chain HEAD (`identifier` / `this` / `super` / a
|
|
15
|
+
* parenthesized expr) immediately followed by one or more `selector` siblings.
|
|
16
|
+
* A `selector` whose inner is an `argument_part` is the CALL marker (the prefix
|
|
17
|
+
* up to it is the callee); a `selector` whose inner is an
|
|
18
|
+
* `unconditional_assignable_selector` / `conditional_assignable_selector`
|
|
19
|
+
* (`.name` / `?.name`) is a member access. So `foo(a, b)` parses as
|
|
20
|
+
* `identifier foo` + `selector (a, b)`; `obj.method(x)` as `identifier obj` +
|
|
21
|
+
* `selector .method` + `selector (x)`; `a.b.c()` as `a` + `.b` + `.c` + `()`.
|
|
22
|
+
* A `new Foo(…)` IS a single `new_expression` node (`type_identifier` +
|
|
23
|
+
* `arguments`) — the only `kind: 'new'` shape. An UpperCamelCase bare call
|
|
24
|
+
* `Foo(…)` is an IMPLICIT constructor by Dart convention but is structurally a
|
|
25
|
+
* free call (`identifier` + `selector(argument_part)`), so it stays
|
|
26
|
+
* `kind: 'call'` (matching the scope-extractor, which tags it
|
|
27
|
+
* `@reference.call.constructor` on the same callee identifier — see below).
|
|
28
|
+
*
|
|
29
|
+
* ANCHOR ALIGNMENT (plan KTD7 — load-bearing): a call site's `at` MUST be the
|
|
30
|
+
* SAME `[line (1-based), col (0-based)]` the Dart CALLS resolution keys its
|
|
31
|
+
* `atRange` on, because a downstream unit joins the two by EXACT position. Dart
|
|
32
|
+
* has no whole-call node, so the scope-extractor anchors the CALLS reference NOT
|
|
33
|
+
* on a call expression but on the callee NAME identifier
|
|
34
|
+
* (`captures.ts emitSelectorReference`):
|
|
35
|
+
* - a FREE / implicit-constructor call `foo(…)` / `Foo(…)` →
|
|
36
|
+
* `@reference.call.free` / `.constructor` anchored on the callee `identifier`
|
|
37
|
+
* (`prev`), so `at` = that identifier's start.
|
|
38
|
+
* - a MEMBER call `obj.method(…)` → `@reference.call.member` anchored on the
|
|
39
|
+
* method-name `identifier` (`nameId`, inside the `.method` selector), so
|
|
40
|
+
* `at` = the method-name identifier's start — NOT the receiver `obj`.
|
|
41
|
+
* (A `new_expression` is NOT captured for CALLS by the Dart scope-resolution
|
|
42
|
+
* today, so a `new` site's `at` simply finds no resolved id — graceful, never a
|
|
43
|
+
* mis-join. A cascade `a..m(…)` resolves as a FREE call on its method name.)
|
|
44
|
+
*
|
|
45
|
+
* Runs in the parse worker next to the Dart CFG visitor. Output is the binding
|
|
46
|
+
* table the {@link import('../cfg-builder.js').CfgBuilder} stamps onto the CFG,
|
|
47
|
+
* plus the per-block def/use facts the reaching-defs / CDG solvers consume.
|
|
48
|
+
*
|
|
49
|
+
* Every node-type literal below was grammar-validated against the VENDORED
|
|
50
|
+
* tree-sitter-dart via the introspection probe before use (mandatory pre-step —
|
|
51
|
+
* the grammar-literal CI gate maps `dart-harvest.ts → Dart` and fails on a wrong
|
|
52
|
+
* literal). Dart's grammar splits a function into SIBLING nodes — a
|
|
53
|
+
* `function_signature` / `method_signature` / getter/setter signature followed by
|
|
54
|
+
* a sibling `function_body` (the body, NOT a child of the signature) — so this
|
|
55
|
+
* harvester takes the `function_body` (or a closure's `function_expression`) as
|
|
56
|
+
* the function node and reaches the signature via the previous sibling.
|
|
57
|
+
*
|
|
58
|
+
* Dart shapes pre-empted (verified by a real parse):
|
|
59
|
+
* - parameters: `function_signature`/`method_signature`/`setter_signature` own a
|
|
60
|
+
* `formal_parameter_list` → `formal_parameter` (each `name:identifier`). A
|
|
61
|
+
* closure (`function_expression`) owns `parameters:formal_parameter_list`.
|
|
62
|
+
* - `local_variable_declaration` → `initialized_variable_definition`
|
|
63
|
+
* (`name:identifier` `= value`). The declaration kind keyword is `inferred_type`
|
|
64
|
+
* (`var`), `final_builtin` (`final`), a `type_identifier`/`void_type` (typed),
|
|
65
|
+
* or `late` (anon). A bare `var e;` with no initializer still binds the name.
|
|
66
|
+
* - `for_loop_parts` — C-style (`init:local_variable_declaration`,
|
|
67
|
+
* `condition:`, `update:`) OR for-in (`inferred_type`? `name:identifier` `in`
|
|
68
|
+
* `value:` — or a bare `identifier` `in` `value:` over an existing variable).
|
|
69
|
+
* - `catch_clause` → `catch_parameters` (`(e)` or `(e, st)` — both bound).
|
|
70
|
+
* - reads: `identifier`, `selector` (`.name` / `(...args)` member/call chain),
|
|
71
|
+
* `assignment_expression` (`left:assignable_expression` `operator:` `right:`),
|
|
72
|
+
* `if_null_expression` (`a ?? b`), `conditional_expression` (`c ? a : b`),
|
|
73
|
+
* logical `&&` / `||` (`logical_and_expression` / `logical_or_expression`).
|
|
74
|
+
*
|
|
75
|
+
* TWO-PHASE, ORDER-INDEPENDENT (load-bearing — mirrors the Kotlin / Swift / Rust
|
|
76
|
+
* harvesters): the CFG walk is NOT source-order (`do … while` builds the condition
|
|
77
|
+
* after the body), so resolving names against a scope stack populated *during* the
|
|
78
|
+
* walk would mis-resolve. Phase 1 pre-scans the whole function subtree once,
|
|
79
|
+
* declaring every bound name into ONE function table; phase 2 resolves defs/uses
|
|
80
|
+
* against that finished table from any walk order. Dart DOES have block scope +
|
|
81
|
+
* shadowing, but a single function table is the documented v1 simplification used
|
|
82
|
+
* by the Kotlin / Swift / Python / Rust harvesters — distinct shadowing
|
|
83
|
+
* redeclarations of the same name collapse onto one binding (an over-approximation
|
|
84
|
+
* that can falsely kill across a shadow, the sound direction for taint).
|
|
85
|
+
*
|
|
86
|
+
* v1 def-semantics scope:
|
|
87
|
+
* - `initialized_variable_definition` (`var`/`final`/typed `PAT = …`) — the
|
|
88
|
+
* `name:identifier` is a def; the value is walked for uses. A bare declaration
|
|
89
|
+
* with no initializer still binds the name (Dart locals are in scope from the
|
|
90
|
+
* declaration; an uninitialized read is a compile error, so binding is safe).
|
|
91
|
+
* - `assignment_expression` plain `=` — a plain-identifier lvalue is a def; a
|
|
92
|
+
* member / subscript target (`this.x = …`, `a[i] = …`) is NOT a scalar def
|
|
93
|
+
* (its root is a use). A compound `+=`/`-=`/… target def-AND-uses the lvalue.
|
|
94
|
+
* - `postfix_expression` / `prefix_expression` update (`i++` / `--i`) def-and-use.
|
|
95
|
+
* - `for (var e in xs)` — the loop pattern name is a def, the collection a use.
|
|
96
|
+
* - `catch (e, st)` — both error binders bind.
|
|
97
|
+
* - parameters (incl. closure params) are `param`-kind defs.
|
|
98
|
+
* EXCLUDED, deliberately (TypeScript-CFA precedent): member / subscript writes
|
|
99
|
+
* (`obj.f = …`, `a[i] = …`) are NOT scalar defs — their root identifiers are uses
|
|
100
|
+
* only. Nested-function bodies (`function_expression`) are opaque in BOTH directions.
|
|
101
|
+
*
|
|
102
|
+
* MAY-DEFS: a def inside a conditionally-evaluated subexpression — the right
|
|
103
|
+
* operand of `&&` / `||` short-circuit, the `??` right operand, a conditional
|
|
104
|
+
* (`? :`) arm, and a `switch`-expression / case-pattern test — is a may-def (gen
|
|
105
|
+
* WITHOUT kill), so the not-taken path's prior def is not falsely killed.
|
|
106
|
+
*
|
|
107
|
+
* Identifiers with no in-function declaration (top-level functions, types,
|
|
108
|
+
* fields) resolve to a SYNTHETIC module-level binding (`name@module`), applied
|
|
109
|
+
* identically by def and use harvesting.
|
|
110
|
+
*
|
|
111
|
+
* NOTE: nothing serialized here may carry a field named `nodeId` — the durable
|
|
112
|
+
* parsedfile-store reviver dedups objects keyed on that field name.
|
|
113
|
+
*/
|
|
114
|
+
import type { SyntaxNode } from '../../utils/ast-helpers.js';
|
|
115
|
+
import type { BindingEntry, StatementFacts } from '../types.js';
|
|
116
|
+
export declare class DartHarvester {
|
|
117
|
+
private readonly fnNode;
|
|
118
|
+
private readonly signature;
|
|
119
|
+
private readonly bindings;
|
|
120
|
+
/** Single function-scope name → binding index (v1: no block scope). */
|
|
121
|
+
private readonly table;
|
|
122
|
+
private readonly synthetic;
|
|
123
|
+
private readonly fnId;
|
|
124
|
+
/** >0 while walking a conditionally-evaluated subexpression — defs become may-defs. */
|
|
125
|
+
private conditionalDepth;
|
|
126
|
+
/**
|
|
127
|
+
* Chain-head / `new_expression` node id → binding indices its single-target
|
|
128
|
+
* result is assigned to (`var x = f()` / `x = g()` ⇒ `[x]`). Populated just
|
|
129
|
+
* before the value walk reaches the call (see {@link registerResultDefs}) and
|
|
130
|
+
* consumed by {@link visitChainCall} / {@link visitNew}. Mirrors the Python /
|
|
131
|
+
* Go harvesters' `resultDefTargets`.
|
|
132
|
+
*/
|
|
133
|
+
private readonly resultDefTargets;
|
|
134
|
+
/**
|
|
135
|
+
* @param fnNode The function-bearing node: a `function_body` (whose previous
|
|
136
|
+
* sibling is the signature carrying the params) or a `function_expression`
|
|
137
|
+
* (a closure, carrying its own `parameters`).
|
|
138
|
+
* @param signature The previous-sibling signature for a `function_body`, or
|
|
139
|
+
* undefined for a `function_expression` (which carries params directly).
|
|
140
|
+
*/
|
|
141
|
+
constructor(fnNode: SyntaxNode, signature: SyntaxNode | undefined);
|
|
142
|
+
/** The completed binding table — pass to `CfgBuilder.finish`. */
|
|
143
|
+
bindingTable(): readonly BindingEntry[];
|
|
144
|
+
/** The body subtree to pre-scan: a `function_body`'s `block`/expr, or a closure's body. */
|
|
145
|
+
private bodyOf;
|
|
146
|
+
/** The `formal_parameter_list` owning this function's params. */
|
|
147
|
+
private paramList;
|
|
148
|
+
/** Every `formal_parameter`'s bound name node. */
|
|
149
|
+
private paramNames;
|
|
150
|
+
private declare;
|
|
151
|
+
private declareParams;
|
|
152
|
+
/**
|
|
153
|
+
* Pre-scan the function body once, declaring every bound name. Recurses into
|
|
154
|
+
* compound expressions but NOT into nested function/closure bodies (opaque).
|
|
155
|
+
*/
|
|
156
|
+
private prescan;
|
|
157
|
+
/** Declare every name of an `initialized_variable_definition` (`var a = 1, b = 2`). */
|
|
158
|
+
private declareInitializedVar;
|
|
159
|
+
/**
|
|
160
|
+
* Declare a `for`'s loop variable: a C-style `init:local_variable_declaration`
|
|
161
|
+
* is handled by its own `initialized_variable_definition` recursion; a for-in
|
|
162
|
+
* binds the `name:identifier` after the optional `inferred_type`/type. A for-in
|
|
163
|
+
* over an existing variable (`for (e in xs)`) has no declaration — its bare
|
|
164
|
+
* `identifier` is a use (an assignment target), not a new binding.
|
|
165
|
+
*/
|
|
166
|
+
private declareForParts;
|
|
167
|
+
/** A `for_loop_parts` is for-in iff it has an `in` keyword child + a `value` field. */
|
|
168
|
+
private isForIn;
|
|
169
|
+
/** A for-in declares a fresh loop var iff a binder keyword/type precedes the name. */
|
|
170
|
+
private forInDeclares;
|
|
171
|
+
/** Declare a `catch (e[, st])` error name(s). */
|
|
172
|
+
private declareCatchParams;
|
|
173
|
+
/** Def/use facts for one statement (or construct-header expression) node. */
|
|
174
|
+
facts(node: SyntaxNode): StatementFacts;
|
|
175
|
+
/** Facts for an expression whose WHOLE evaluation is conditional (case tests). */
|
|
176
|
+
factsConditional(node: SyntaxNode): StatementFacts;
|
|
177
|
+
/**
|
|
178
|
+
* Def-ONLY facts for a value-position binding carrier (`var x = switch (…) {…}`,
|
|
179
|
+
* #2207): just the declared name(s)' def, attached to the continuation block the
|
|
180
|
+
* switch arms rejoin. The subject + arm-value USES are already harvested onto
|
|
181
|
+
* the branch's own blocks, so this must NOT re-walk the value — only each
|
|
182
|
+
* `initialized_variable_definition`'s `name` (and trailing binders) is a def.
|
|
183
|
+
*/
|
|
184
|
+
bindingDefFacts(stmt: SyntaxNode): StatementFacts | undefined;
|
|
185
|
+
/**
|
|
186
|
+
* Facts for a `for` head. For-in: the loop var name is a def, the collection a
|
|
187
|
+
* use. C-style: the init/condition/update sub-expressions are walked for
|
|
188
|
+
* defs/uses (the init `local_variable_declaration` defines, the condition reads,
|
|
189
|
+
* the update def-and-uses).
|
|
190
|
+
*/
|
|
191
|
+
forHeadFacts(parts: SyntaxNode | undefined): StatementFacts | undefined;
|
|
192
|
+
/** ENTRY-block facts for the parameters (defs only). */
|
|
193
|
+
paramFacts(): StatementFacts | undefined;
|
|
194
|
+
/** Def fact(s) for a `catch (e[, st])` — prepend to the handler entry block. */
|
|
195
|
+
catchParamFacts(catchParams: SyntaxNode | undefined): StatementFacts | undefined;
|
|
196
|
+
private resolve;
|
|
197
|
+
private def;
|
|
198
|
+
private use;
|
|
199
|
+
/** Run `fn` with defs demoted to may-defs (conditionally-evaluated context). */
|
|
200
|
+
private conditional;
|
|
201
|
+
/** Value-position walk: collect uses; route def positions to the pattern handler. */
|
|
202
|
+
private walkValue;
|
|
203
|
+
/**
|
|
204
|
+
* Walk a container's named children, coalescing each Dart postfix RUN — a
|
|
205
|
+
* chain HEAD immediately followed by one or more `selector` (and/or a
|
|
206
|
+
* `cascade_section`) siblings — into a single {@link walkRun} so a member /
|
|
207
|
+
* free call across the run is harvested as ONE call site. A child that does
|
|
208
|
+
* not start a run walks via {@link walkValue} as before.
|
|
209
|
+
*/
|
|
210
|
+
private walkChildren;
|
|
211
|
+
/** A postfix-run suffix node: a `.name`/`(args)` `selector` or a `..m()` cascade. */
|
|
212
|
+
private isSuffix;
|
|
213
|
+
/**
|
|
214
|
+
* Walk a binary / ternary expression whose operands are FLATTENED across the
|
|
215
|
+
* node's children (`a ?? g(x)` ⇒ children `a`, `??`, `g`, `selector`). The
|
|
216
|
+
* children before the FIRST boundary operator (`boundaries`) run
|
|
217
|
+
* unconditionally; everything after a boundary is conditionally evaluated (a
|
|
218
|
+
* may-def context). Each segment is grouped via {@link walkChildren} so a
|
|
219
|
+
* postfix call split across children (`g` + `selector`) is one site.
|
|
220
|
+
*/
|
|
221
|
+
private walkBinaryConditional;
|
|
222
|
+
/**
|
|
223
|
+
* Walk one postfix run `[head, suffix*]`. A lone node (no suffixes) is just a
|
|
224
|
+
* value walk. A run with suffixes is a Dart call/access chain: each `selector`
|
|
225
|
+
* whose inner is an `argument_part` is a call applied to the prefix; an
|
|
226
|
+
* assignable `.name`/`?.name` selector is a member access; a `cascade_section`
|
|
227
|
+
* with an `argument_part` is a free call on its method name.
|
|
228
|
+
*/
|
|
229
|
+
private walkRun;
|
|
230
|
+
/** The chain root binding node — an `identifier` head (not `this`/`super`/literal). */
|
|
231
|
+
private chainHead;
|
|
232
|
+
/** The bound name identifier of an assignable selector inner (`.name` ⇒ `name`). */
|
|
233
|
+
private selectorName;
|
|
234
|
+
/** Dotted callee path `root.a.b` (or undefined when the root is not an identifier). */
|
|
235
|
+
private calleePath;
|
|
236
|
+
/**
|
|
237
|
+
* The `at` anchor for a call `selector` at `run[i]`, byte-aligned with the
|
|
238
|
+
* Dart CALLS `atRange` (see file header): a FREE / implicit-constructor call
|
|
239
|
+
* (the call selector immediately follows the chain head) anchors on the head
|
|
240
|
+
* identifier; a MEMBER call anchors on the method-NAME identifier of the
|
|
241
|
+
* preceding `.method` selector.
|
|
242
|
+
*/
|
|
243
|
+
private callAnchor;
|
|
244
|
+
/**
|
|
245
|
+
* Open + populate a call site for a Dart postfix `prefix(args)` call. The
|
|
246
|
+
* callee NAME is a statement-level use (recorded as the chain root above, or
|
|
247
|
+
* here for a bare free call), NOT a value occurrence in any enclosing argument.
|
|
248
|
+
*/
|
|
249
|
+
private visitChainCall;
|
|
250
|
+
/** Index in `run` of the LAST call-marker selector (`selector(argument_part)`). */
|
|
251
|
+
private lastCallSelectorIndex;
|
|
252
|
+
/** A single `new Foo(args)` constructor site (`kind: 'new'`). */
|
|
253
|
+
private visitNew;
|
|
254
|
+
/** A cascade call `a..method(args)` — a FREE call on the method name. */
|
|
255
|
+
private visitCascade;
|
|
256
|
+
/** Walk a `selector → argument_part → arguments` for per-arg occurrences. */
|
|
257
|
+
private walkArguments;
|
|
258
|
+
/** Walk an `arguments` node, tagging each positional / named arg's occurrence position. */
|
|
259
|
+
private walkArgumentsNode;
|
|
260
|
+
/**
|
|
261
|
+
* Register result-defs for a single-target binding whose value RUN's terminal
|
|
262
|
+
* call / `new` should carry `[x]`: `var x = f()` / `var x = obj.m()` /
|
|
263
|
+
* `var x = new Foo()` / `x = g(y)`. Keyed so the run's call selector (whose
|
|
264
|
+
* `.parent` is the run's shared parent — the `initialized_variable_definition`
|
|
265
|
+
* or `assignment_expression`) AND a single `new_expression` run-node both hit.
|
|
266
|
+
*/
|
|
267
|
+
private registerRunResultDefs;
|
|
268
|
+
/** The `field`-tagged children of `node` (a Dart postfix run flattens here). */
|
|
269
|
+
private fieldRun;
|
|
270
|
+
/**
|
|
271
|
+
* The bare `identifier` of an `assignable_expression` lvalue WHEN it is a
|
|
272
|
+
* scalar target (`x = …`), or undefined when it is a member / subscript write
|
|
273
|
+
* (`obj.x = …`, `a[i] = …`) — those carry a trailing
|
|
274
|
+
* `unconditional_assignable_selector` / `conditional_assignable_selector` /
|
|
275
|
+
* `index_selector` and are NOT scalar defs (their root identifier is a use).
|
|
276
|
+
*/
|
|
277
|
+
private scalarAssignTarget;
|
|
278
|
+
}
|