Repository navigation
fix(shotness): restore Kotlin and cross-language declaration tracking - #30
Merged
Merged
Conversation
…uages Fix BUG-kotlin-shotness-empty and BUG-shotness-language-names with declaration captures, full body spans, rooted query matching and explicit-name precedence. Add real-history CLI coverage, parser-valid fixtures and reproduction evidence.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
codefang run -a history/shotness --limit 200 --format text <repo>could return zero nodes for Kotlin repositories because declaration names were missing. The cross-language audit found naming, selection or body-span gaps in 15 additional mappings: Clojure, CMake, Common Lisp, Elixir, Elm, Fortran, GraphQL, Groovy, LaTeX, Make, PowerShell, Protocol Buffers, R, Rego and SQL.Capture declaration/container names and associate changes with full declaration spans. Root mapping queries at the current CST node and preserve explicit mapping names over raw grammar fields. Remove unreachable Common Lisp rules and document coverage and parser limits.
On the pinned public Spring Petclinic Kotlin history, Shotness changes from 0 to 14 nodes. On the same mixed-language fixture repository, the installed binary changes from 37 nodes/72 touches to the expected 71 nodes/141 touches. Every resulting name and per-entity count is checked.
Test matrix
--limit 200, body changes, qualification, macros, guards and anonymous values.make -o submodules lint,make -o submodules deadcode, formatting, build and install passed. Lint/deadcode repeated before committing.TMPDIR="$PWD/.tmp/shotness-doc-tests" make -o submodules test. The first run had six doctest linker SIGBUS failures under/tmp; those doctests and the entire workspace passed with disk-backed temporary files. The linker cause is unconfirmed; no checks were disabled.-o submodulesreuses the existing submodule checkout.Evidence: verification, mixed-language results, public Kotlin reproduction.
Link to FRD/BUG
Breaking changes
None to CLI flags or report schemas. Entity names and history counts are corrected for affected mappings.
Known limits remain documented in language coverage: old-style LaTeX
\defbody-only changes on later lines, Helm/RSTML filename routing, conventional Make/CMake filenames and Rustimplqualification. Representative fixtures do not establish every dialect or multi-clause definition. Shared capture semantics are covered by the full workspace suite. Rollback: revert this commit and rebuild deployed binaries/images.Before opening this PR
make test, with the temporary-file setting above)make lint)make deadcode)