Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Native diagnostic watching misses newly created SDK source files

Open
#466 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
1-2 days
Newbie friendliness
55/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Domain
backend, testing

Research direction

Start by tracing the native watcher’s Touched event through the host’s Changed handling and the SDK source membership reload path. Then read the real SDK/native-protocol lifecycle regression described in the issue and run it on Windows; done means the new file’s CS0101 diagnostic is reported after refresh and its prior result is retired when the file is removed.

Written by the indexing model from the issue text.

Description

Creating an implicit C# SDK source under a loaded solution can emit a native diagnostic refresh while the next successful workspace pull omits the file entirely.

Reproduced through the real Rust LSP host, published Roslyn/FCS sidecars and real SDK projects on Windows:

  1. Load the mixed solution and confirm existing closed-file compiler errors.
  2. Create Core/NativeAdded.cs without sending an editor watched-file notification.
  3. Independently build Core.csproj and confirm CS0103 in the new source.
  4. Observe the standard workspace/diagnostic/refresh and request workspace diagnostics.

Actual: zero reports for NativeAdded.cs, despite its real compiler error. Existing sources and the unsaved F# overlay remain correctly reported.
Expected: the next successful report includes the new SDK source and its CS0103, and removing the file explicitly retires its prior result.

The shared native watcher deliberately combines creation and modification into Touched. The host maps that to Changed, but previously reloaded SDK source membership only for explicit Created/Deleted events. Updating text for an unknown file cannot adopt its already-loaded owning project.

The real SDK/native-protocol lifecycle regression fails at the exact missing-report assertion before the fix. Compare touched source identities with current compiler metadata once per batch and reload when a source is unknown; existing source edits keep their ordinary update path.

Dominant language
TypeScript
Stars
168
Forks
9
Avg merge
2h 49m
Merged PRs (30d)
60

Getting set up

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Nimblesite/SharpLsp

All issues in Nimblesite/SharpLsp

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.