Repository navigation
fix(scanner): same-dir C/C++/PHP includes resolve, Elixir symbol-level, 20-language conformance test - #202
Merged
Conversation
…red symbol-level; one conformance case per language normalizeImport turned every dotted, slash-free import into a path, so `#include "b.h"` and `require_once 'b.php'` became b/h and b/php and resolved to nothing. Only dots that do not introduce a known source extension are module separators now. Elixir aliases name modules, not files, so an empty Elixir graph was labelled complete. It joins the symbol-level set and reports partial with the same note as Java, Kotlin, Scala and C#. conformance_test.go builds the smallest two-file repository for each of the 20 detected languages and asserts the a->b edge and coverage status. A language added to extToLang without a case fails the suite. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NRaBgKRAZMX9hjbkkefA7T
staticcheck@latest cannot read export data from the newest toolchain, so every PR's Lint job failed on an environment mismatch unrelated to the change under review (#202, #203, #204 on 2026-10-11). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NRaBgKRAZMX9hjbkkefA7T
JordanCoin
added a commit
that referenced
this pull request
Oct 11, 2026
… not the first WRITE (#207) TestEventDetection and TestLineDelta failed on ubuntu-latest (PR #202, 2026-10-11) with "Expected 5 lines, got 0" and "Expected positive line delta, got -3" while passing on macOS. os.WriteFile opens with O_TRUNC; on Linux inotify reports the truncation as its own WRITE before the content lands. The daemon processes that first event immediately (0 lines, delta -3 on a 3-line file) and defers the real one through the debouncer, so a test that stopped at "any WRITE arrived" asserted on the truncated state. kqueue coalesces the two events, which is why macOS never saw it. waitForWriteEvent now takes the terminal condition and polls until the most recent WRITE for the path satisfies it, the same shape TestDebounce already uses. The daemon is unchanged: a transient 0-line WRITE followed by a debounced trailing event is accurate history. Not reproduced locally: 40 iterations with -race -cpu 1 on macOS and 15 iterations on Linux (golang:1.24 in Docker) all passed before the change; the split needs a loaded runner. After the change, 200 iterations with -race pass. Fixes #135 Claude-Session: https://claude.ai/code/session_01NRaBgKRAZMX9hjbkkefA7T Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
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.
What a probe of all 20 detected languages found
Built the smallest two-file repo per language (a imports b the idiomatic way) and ran
BuildFileGraph. Before this PR:#include "b.h"normalized tob/hrequire_once 'b.php'normalized tob/phpalias App.Bnames a module, not a fileSubdirectory includes (
#include "inc/b.h") already worked because the slash short-circuits the dot rule, which is why real C repos got some edges and nobody filed it.Changes
normalizeImport: the Python dots-to-slashes rule skips imports whose last dot introduces a known source extension. Regression cases forb.handb.php.symbolLevelImportLanguagesgains Elixir; an Elixir-only graph now reportspartialwith the module-import note instead ofcomplete.scanner/conformance_test.go: one inline fixture per language inextToLang, asserting edge and coverage status.TestConformanceCoversEveryDetectedLanguagefails if an extension is added without a case.go build ./... && go test ./... && gofmt -l .clean.🤖 Generated with Claude Code
https://claude.ai/code/session_01NRaBgKRAZMX9hjbkkefA7T