Skip to content

replace usages of NormalizedFilePath with NormalizedUri wherever possible #4622

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

MangoIV
Copy link
Contributor

@MangoIV MangoIV commented Jun 8, 2025

This is useful for being to run haskell-language-server against URIs that are not file URIs.

I am not sure about all the places and there's one more change that I will probably have to do to run HLS over websocket.

@MangoIV MangoIV changed the title [feat] replace usages of NormalizedFilePath with NormalizedUri wherever possible [featURE] replace usages of NormalizedFilePath with NormalizedUri wherever possible Jun 8, 2025
@MangoIV
Copy link
Contributor Author

MangoIV commented Jun 12, 2025

oh no already three conflicts 😭

@MangoIV MangoIV force-pushed the mangoiv/uri branch 2 times, most recently from 5552c2f to 26c5db8 Compare July 15, 2025 20:38
Comment on lines -268 to +275
-- | Runs the action until it ends or until the given MVar is put.
-- | Runs the action until it ends or until the given MVar is put or the thread to fill the mvar is dropped, in which case the MVar will never be filled.
-- This happens when the thread that handles the shutdown notification dies. Ideally, this should not rely on the RTS detecting the blocked MVar
-- and instead *also* run the shutdown inf a finally block enclosing the handlers. In which case the BlockedIndefinitelyOnMVar Exception also wouldn't
-- be thrown.
-- Rethrows any exceptions.
untilMVar :: MonadUnliftIO m => MVar () -> m () -> m ()
untilMVar mvar io = void $
waitAnyCancel =<< traverse async [ io , readMVar mvar ]
untilMVar mvar io = race_ (readMVar mvar `catch` \BlockedIndefinitelyOnMVar -> pure ()) io
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this bit is interesting for a reviewer

@MangoIV MangoIV changed the title [featURE] replace usages of NormalizedFilePath with NormalizedUri wherever possible replace usages of NormalizedFilePath with NormalizedUri wherever possible Jul 15, 2025
MangoIV added 5 commits July 16, 2025 15:06
This is the right thing to do because othewise it is not possible to
create new ideStates in a single instance of the executable. This will
be useful if the hls executable is supposed to talk to multiple clients
and lives beyond a single client disconnecting.
Previously, when there was no shutdown message by a client and the
client disconnected, resulting in the handlers to be GC'd the race that
was supposed to free resources for the HieDB & co. would throw a hard
error talking about the MVar being unreachable. We would like to instead
finish gracefully because finishing the race as soon as the MVar was
GC'd is the right thing to do anyway.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant