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,253 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kotlin def/use harvester (#2195) — the Kotlin analogue of
|
|
3
|
+
* {@link import('./swift-harvest.js').SwiftHarvester} and the C-family / Go /
|
|
4
|
+
* Rust / Python harvesters. Like the Go / Python / Dart harvesters it harvests
|
|
5
|
+
* the per-function binding table ({@link BindingEntry}[]) plus
|
|
6
|
+
* {@link StatementFacts} (defs / uses / mayDefs) AND a taint
|
|
7
|
+
* {@link import('../types.js').SiteRecord} per call (callee path, receiver,
|
|
8
|
+
* per-arg occurrence entries, result defs, spread marker, and an `at` anchor)
|
|
9
|
+
* via the shared {@link CallSiteFactAccumulator} — the same site substrate the
|
|
10
|
+
* C-family / Go / TS / Python / Dart harvesters emit (#2227 follow-up).
|
|
11
|
+
*
|
|
12
|
+
* KOTLIN CALL SHAPE (verified by a real parse — see below). A call is a
|
|
13
|
+
* `call_expression` whose LAST child is a `call_suffix` (holding the
|
|
14
|
+
* `value_arguments` and/or a trailing `annotated_lambda`); the callee is the
|
|
15
|
+
* preceding expression — a bare `simple_identifier` (`foo()`) for a FREE call,
|
|
16
|
+
* or a `navigation_expression` (`obj.method` / `a?.b` via `navigation_suffix`)
|
|
17
|
+
* for a MEMBER call. A chained call `a.b.c()` nests `navigation_expression`s;
|
|
18
|
+
* the receiver is the chain ROOT binding. Kotlin constructor calls look like
|
|
19
|
+
* ordinary calls (no `new`), so every site is `kind: 'call'` (the CALLS query
|
|
20
|
+
* classifies a capitalized/known-type callee as `@reference.call.constructor`,
|
|
21
|
+
* but the harvester only needs callee + receiver + `at` right — `kind` is not
|
|
22
|
+
* joined). Named args (`name = value`) record the VALUE occurrence and drop the
|
|
23
|
+
* name (like Python / Dart).
|
|
24
|
+
*
|
|
25
|
+
* ANCHOR ALIGNMENT (plan KTD7 — load-bearing): a call site's `at` MUST be the
|
|
26
|
+
* SAME `[line (1-based), col (0-based)]` the Kotlin CALLS resolution keys its
|
|
27
|
+
* `atRange` on, because a downstream unit joins the two by EXACT position. The
|
|
28
|
+
* Kotlin scope query (query.ts) anchors `@reference.call.free` and
|
|
29
|
+
* `@reference.call.member` on the WHOLE `call_expression` node (the
|
|
30
|
+
* `@reference.name` simple_identifier and the `@reference.receiver` are SUB-tags,
|
|
31
|
+
* excluded from the anchor by `KNOWN_SUB_TAGS` + the broadest-span rule in
|
|
32
|
+
* `anchorCaptureFor`; `atRange: anchor.range` at scope-extractor.ts:1030). So for
|
|
33
|
+
* a free call `foo(x)`, a member call `obj.method(x)`, and a chained call
|
|
34
|
+
* `a.b.c(x)` alike, `at` is the start of the enclosing `call_expression` node —
|
|
35
|
+
* which, for a member/chained call, starts at the RECEIVER (`obj`/`a`), exactly
|
|
36
|
+
* where the CALLS anchor starts too. This is the Go/Python whole-call-node model,
|
|
37
|
+
* NOT the Dart callee-name model. The harvester's `visitCall` receives exactly
|
|
38
|
+
* the `call_expression` node and records `[node.startPosition.row + 1,
|
|
39
|
+
* node.startPosition.column]`.
|
|
40
|
+
*
|
|
41
|
+
* Runs in the parse worker next to the Kotlin CFG visitor. Output is the binding
|
|
42
|
+
* table the {@link import('../cfg-builder.js').CfgBuilder} stamps onto the CFG,
|
|
43
|
+
* plus the per-block def/use facts the reaching-defs / CDG solvers consume.
|
|
44
|
+
*
|
|
45
|
+
* Every node-type literal below was grammar-validated against the VENDORED
|
|
46
|
+
* tree-sitter-kotlin via the introspection probe before use (mandatory pre-step).
|
|
47
|
+
* The grammar is FIELD-LESS for the constructs harvested here (no
|
|
48
|
+
* `childForFieldName` fields on `parameter` / `property_declaration` /
|
|
49
|
+
* `for_statement` / etc.), so this harvester navigates by child TYPE and position.
|
|
50
|
+
* Kotlin shapes pre-empted (verified by a real parse):
|
|
51
|
+
* - functions: `function_declaration` (`fun` `simple_identifier`
|
|
52
|
+
* `function_value_parameters` `function_body`), `anonymous_function`
|
|
53
|
+
* (`fun function_value_parameters function_body`), `lambda_literal`
|
|
54
|
+
* (`{ lambda_parameters? -> statements }`).
|
|
55
|
+
* - parameters: `function_value_parameters` → `parameter`
|
|
56
|
+
* (`simple_identifier : user_type`). A lambda's params live in
|
|
57
|
+
* `lambda_parameters` → `variable_declaration` (each a `simple_identifier`,
|
|
58
|
+
* optionally `: user_type`).
|
|
59
|
+
* - `property_declaration` — `binding_pattern_kind` (`val`/`var`), then a
|
|
60
|
+
* `variable_declaration` (`simple_identifier`) OR a `multi_variable_declaration`
|
|
61
|
+
* (`( variable_declaration, … )` for `val (a, b) = p`), then `= value`.
|
|
62
|
+
* - `for_statement` — pattern is a `variable_declaration` / `multi_variable_declaration`
|
|
63
|
+
* after `(`; the iterated collection is the expression after `in`.
|
|
64
|
+
* - `catch_block` — `catch ( simple_identifier : user_type ) { statements }`; the
|
|
65
|
+
* bound error is the `simple_identifier`.
|
|
66
|
+
* - `when_subject` — `( expr )` or `( val variable_declaration = expr )`.
|
|
67
|
+
* - reads: `simple_identifier`, `navigation_expression` (`a.b` / `a?.b`),
|
|
68
|
+
* `call_expression`, `assignment` (`directly_assignable_expression` lvalue +
|
|
69
|
+
* operator + value), `elvis_expression` (`a ?: b`).
|
|
70
|
+
*
|
|
71
|
+
* TWO-PHASE, ORDER-INDEPENDENT (load-bearing — mirrors the Swift / Rust / Go
|
|
72
|
+
* harvesters): the CFG walk is NOT source-order (`do … while` builds the condition
|
|
73
|
+
* after the body), so resolving names against a scope stack populated *during* the
|
|
74
|
+
* walk would mis-resolve. Phase 1 pre-scans the whole function subtree once,
|
|
75
|
+
* declaring every bound name into ONE function table; phase 2 resolves defs/uses
|
|
76
|
+
* against that finished table from any walk order. Kotlin DOES have block scope +
|
|
77
|
+
* shadowing, but a single function table is the documented v1 simplification used
|
|
78
|
+
* by the Swift / Python / Rust harvesters — distinct shadowing redeclarations of
|
|
79
|
+
* the same name collapse onto one binding (an over-approximation that can falsely
|
|
80
|
+
* kill across a shadow, the sound direction for taint).
|
|
81
|
+
*
|
|
82
|
+
* v1 def-semantics scope:
|
|
83
|
+
* - `property_declaration` (`val`/`var PAT = …`) — each `simple_identifier` leaf
|
|
84
|
+
* of the `variable_declaration` / `multi_variable_declaration` is a def; the
|
|
85
|
+
* value is walked for uses.
|
|
86
|
+
* - `assignment` plain `=` — a plain-identifier lvalue is a def; a
|
|
87
|
+
* `navigation_expression` / subscript target (`this.x = …`, `a[i] = …`) is NOT
|
|
88
|
+
* a scalar def (its root is a use). A compound `+=`/`-=`/… target def-AND-uses
|
|
89
|
+
* the lvalue.
|
|
90
|
+
* - `for (x in xs)` — the loop pattern's leaves are defs, the collection a use.
|
|
91
|
+
* - a `when (val r = e)` subject binds `r`.
|
|
92
|
+
* - `catch_block`'s error identifier binds.
|
|
93
|
+
* - parameters (incl. lambda params) are `param`-kind defs.
|
|
94
|
+
* EXCLUDED, deliberately (TypeScript-CFA precedent): member / subscript writes
|
|
95
|
+
* (`obj.f = …`, `a[i] = …`) are NOT scalar defs — their root identifiers are uses
|
|
96
|
+
* only. Nested-function bodies (`lambda_literal`, nested `anonymous_function` /
|
|
97
|
+
* `function_declaration`) are opaque in BOTH directions.
|
|
98
|
+
*
|
|
99
|
+
* MAY-DEFS: a def inside a conditionally-evaluated subexpression — the right
|
|
100
|
+
* operand of `&&` / `||` short-circuit, the elvis (`?:`) right operand and a
|
|
101
|
+
* safe-call (`?.`) chain, and a `when`-entry case test — is a may-def (gen WITHOUT
|
|
102
|
+
* kill), so the not-taken path's prior def is not falsely killed.
|
|
103
|
+
*
|
|
104
|
+
* Identifiers with no in-function declaration (top-level functions, types,
|
|
105
|
+
* properties) resolve to a SYNTHETIC module-level binding (`name@module`), applied
|
|
106
|
+
* identically by def and use harvesting.
|
|
107
|
+
*
|
|
108
|
+
* NOTE: nothing serialized here may carry a field named `nodeId` — the durable
|
|
109
|
+
* parsedfile-store reviver dedups objects keyed on that field name.
|
|
110
|
+
*/
|
|
111
|
+
import type { SyntaxNode } from '../../utils/ast-helpers.js';
|
|
112
|
+
import type { BindingEntry, StatementFacts } from '../types.js';
|
|
113
|
+
export declare class KotlinHarvester {
|
|
114
|
+
private readonly fnNode;
|
|
115
|
+
private readonly bindings;
|
|
116
|
+
/** Single function-scope name → binding index (v1: no block scope). */
|
|
117
|
+
private readonly table;
|
|
118
|
+
private readonly synthetic;
|
|
119
|
+
private readonly fnId;
|
|
120
|
+
/** >0 while walking a conditionally-evaluated subexpression — defs become may-defs. */
|
|
121
|
+
private conditionalDepth;
|
|
122
|
+
/**
|
|
123
|
+
* `call_expression` node id → binding indices its single-target result is
|
|
124
|
+
* assigned to (`val x = f()` / `x = g()` ⇒ `[x]`). Populated just before the
|
|
125
|
+
* value walk reaches the call (see {@link registerResultDefs}) and consumed by
|
|
126
|
+
* {@link visitCall}. Mirrors the Go / Python / Dart harvesters' `resultDefTargets`.
|
|
127
|
+
*/
|
|
128
|
+
private readonly resultDefTargets;
|
|
129
|
+
constructor(fnNode: SyntaxNode);
|
|
130
|
+
/** The completed binding table — pass to `CfgBuilder.finish`. */
|
|
131
|
+
bindingTable(): readonly BindingEntry[];
|
|
132
|
+
/** The function/lambda body subtree to pre-scan (`statements` or `function_body`). */
|
|
133
|
+
private bodyOf;
|
|
134
|
+
private declare;
|
|
135
|
+
/** Declare every parameter binder of a fn / anonymous fn / lambda. */
|
|
136
|
+
private declareParams;
|
|
137
|
+
/** Declare the `simple_identifier` of a `variable_declaration`. */
|
|
138
|
+
private declareVariableDeclaration;
|
|
139
|
+
/**
|
|
140
|
+
* Pre-scan the function body once, declaring every bound name. Recurses into
|
|
141
|
+
* compound expressions but NOT into nested function/lambda bodies (opaque).
|
|
142
|
+
*/
|
|
143
|
+
private prescan;
|
|
144
|
+
/** Declare every binder of a `property_declaration`'s pattern (single or multi). */
|
|
145
|
+
private declarePropertyPattern;
|
|
146
|
+
/** Declare a `for` loop variable (`variable_declaration` / `multi_variable_declaration`). */
|
|
147
|
+
private declareForPattern;
|
|
148
|
+
/** Declare a `catch (e: T)` error name. */
|
|
149
|
+
private declareCatchParam;
|
|
150
|
+
/** Declare a `when (val r = e)` subject binding. */
|
|
151
|
+
private declareWhenSubject;
|
|
152
|
+
/** Def/use facts for one statement (or construct-header expression) node. */
|
|
153
|
+
facts(node: SyntaxNode): StatementFacts;
|
|
154
|
+
/** Facts for an expression whose WHOLE evaluation is conditional (case tests). */
|
|
155
|
+
factsConditional(node: SyntaxNode): StatementFacts;
|
|
156
|
+
/**
|
|
157
|
+
* Facts for a `for ( PAT in COLLECTION )` head: the loop pattern's leaves are
|
|
158
|
+
* defs, the iterated collection a use.
|
|
159
|
+
*/
|
|
160
|
+
forHeadFacts(stmt: SyntaxNode): StatementFacts;
|
|
161
|
+
/** Facts for a `when` subject: a `val r = e` binds `r` (def); the expr's uses. */
|
|
162
|
+
whenSubjectFacts(subject: SyntaxNode): StatementFacts;
|
|
163
|
+
/**
|
|
164
|
+
* Def-ONLY facts for a value-position binding carrier (`val x = <branch>`,
|
|
165
|
+
* #2205): just the bound name's def, attached to the continuation block the
|
|
166
|
+
* branch arms rejoin. The branch subject + arm-value USES are already harvested
|
|
167
|
+
* onto the branch's own blocks (visitWhen / visitIf), so this must not re-walk
|
|
168
|
+
* them — only the `variable_declaration` leaves are defs here.
|
|
169
|
+
*/
|
|
170
|
+
bindingDefFacts(stmt: SyntaxNode): StatementFacts | undefined;
|
|
171
|
+
/**
|
|
172
|
+
* Def-ONLY facts for a value-position assignment carrier (`x = when (k) {…}`,
|
|
173
|
+
* #2205): just the LHS target, attached to the continuation block the branch
|
|
174
|
+
* arms rejoin. The branch subject + arm-value USES are already harvested onto
|
|
175
|
+
* the branch's own blocks, so this must NOT re-walk the RHS — only a plain `=`
|
|
176
|
+
* to a simple-identifier lvalue defines (a member / index target is not a
|
|
177
|
+
* scalar def; a compound `+=` is not a value-branch carrier).
|
|
178
|
+
*/
|
|
179
|
+
assignmentDefFacts(node: SyntaxNode): StatementFacts | undefined;
|
|
180
|
+
/** ENTRY-block facts for the parameters (defs only). */
|
|
181
|
+
paramFacts(): StatementFacts | undefined;
|
|
182
|
+
/** Def fact for a `catch (e: T)` error name — prepend to the handler entry block. */
|
|
183
|
+
catchParamFacts(catchBlock: SyntaxNode): StatementFacts | undefined;
|
|
184
|
+
private resolve;
|
|
185
|
+
private def;
|
|
186
|
+
private use;
|
|
187
|
+
/** Run `fn` with defs demoted to may-defs (conditionally-evaluated context). */
|
|
188
|
+
private conditional;
|
|
189
|
+
/** Def the `simple_identifier` of a `variable_declaration`. */
|
|
190
|
+
private defVariableDeclaration;
|
|
191
|
+
/** Def every binder of a `for` loop pattern. */
|
|
192
|
+
private defForPattern;
|
|
193
|
+
/** The iterated collection of a `for_statement` — the named child after `in`. */
|
|
194
|
+
private forCollection;
|
|
195
|
+
/** Value-position walk: collect uses; route def positions to the pattern handler. */
|
|
196
|
+
private walkValue;
|
|
197
|
+
/** True iff `node` carries a `++` / `--` operator token (`x++` / `--x`). */
|
|
198
|
+
private isIncDec;
|
|
199
|
+
/** The `= value` expression of a `property_declaration` (the child after `=`). */
|
|
200
|
+
private propertyValue;
|
|
201
|
+
/** The assignment operator text (`=` / `+=` / …) of an `assignment`. */
|
|
202
|
+
private assignmentOperator;
|
|
203
|
+
/** The right-hand value of an `assignment` (the named child after the operator). */
|
|
204
|
+
private assignmentValue;
|
|
205
|
+
/** Strip a `directly_assignable_expression` wrapper around an lvalue. */
|
|
206
|
+
private unwrapAssignable;
|
|
207
|
+
/** Strip `parenthesized_expression` wrappers around a value (`(f())`). */
|
|
208
|
+
private unwrapValue;
|
|
209
|
+
/**
|
|
210
|
+
* When `value`'s root (after stripping parens) is a `call_expression`, remember
|
|
211
|
+
* that call site should carry `resultDefs` — the binding indices of `targets`
|
|
212
|
+
* (def-position identifiers). Consumed by {@link visitCall} once the value walk
|
|
213
|
+
* reaches the node. Single-target only (the caller restricts to a plain
|
|
214
|
+
* identifier binder); the blank target (`_`) binds nothing and is skipped.
|
|
215
|
+
*/
|
|
216
|
+
private registerResultDefs;
|
|
217
|
+
/**
|
|
218
|
+
* The callee node of a `call_expression` — the first named child that is NOT
|
|
219
|
+
* the trailing `call_suffix` (a bare `simple_identifier` for a free call, or a
|
|
220
|
+
* `navigation_expression` for a member/chained call).
|
|
221
|
+
*/
|
|
222
|
+
private calleeOf;
|
|
223
|
+
/**
|
|
224
|
+
* Explicit `call_expression` handler. Records a call site (callee path,
|
|
225
|
+
* receiver, per-arg occurrence entries, result defs, spread marker) while
|
|
226
|
+
* reproducing EXACTLY the uses the old default descent recorded (callee chain
|
|
227
|
+
* root + arguments). Kotlin has no `new` — every site is `kind: 'call'`.
|
|
228
|
+
*/
|
|
229
|
+
private visitCall;
|
|
230
|
+
/**
|
|
231
|
+
* Walk a `call_suffix`'s `value_arguments`, tagging each positional / named /
|
|
232
|
+
* spread argument's occurrence position. A trailing `annotated_lambda` is a
|
|
233
|
+
* nested function body — opaque (its `lambda_literal` is excluded by
|
|
234
|
+
* {@link NESTED_FUNCTION_TYPES}), so it is not an argument occurrence here.
|
|
235
|
+
*/
|
|
236
|
+
private walkArguments;
|
|
237
|
+
/**
|
|
238
|
+
* The value expression of a `value_argument` — for a named argument
|
|
239
|
+
* (`name = value`) the leading `simple_identifier` name is dropped (it is a
|
|
240
|
+
* parameter name, not a use), and only the value after `=` is returned; a
|
|
241
|
+
* positional argument's value is its sole non-comment named child.
|
|
242
|
+
*/
|
|
243
|
+
private argumentValue;
|
|
244
|
+
/**
|
|
245
|
+
* `navigation_expression` chain walk shared by value position and callee
|
|
246
|
+
* position. Records the chain-root identifier as a use (identical to the old
|
|
247
|
+
* default descent) plus at most ONE member-read site — the INNERMOST access —
|
|
248
|
+
* when the root is an identifier; `skipFinalRead` suppresses it when that
|
|
249
|
+
* access is the callee (carried by the dotted path instead). Mirrors the Go /
|
|
250
|
+
* Python harvesters' `walkChain`.
|
|
251
|
+
*/
|
|
252
|
+
private walkChain;
|
|
253
|
+
}
|