Skip to content

Conversation

@NTaylorMullen
Copy link

  • With the latest OmniSharp upgrade there were a few high profile changes:
    • Most DTO's are records now which makes them immutable. You'll see throughout the codebase that we now have to use with {...} to translate one type to another.
    • ServerCapabilities are expandable by default. This means we no longer need our ExtendableServerCapabilities type.
    • Getting client and server capabilities in each of our endpoints are now a single method call. This resulted in lots of deleted code.
    • O# upgraded its LSP version to 3.17 which means semantic tokens are no longer proposed. This resulted in a lot of warnings/obsolete bits getting removed. We now also have code action resolution as part of this upgrade so we could remove our old code action resolution endpoint (it's in VSCode now too).
    • The way the O# serializer gets construed now is different and extendable. Because of this we now have a primary method to add all of our converters to an O# serializer.
    • O# embraced the optional vs. required text document identifiers. This makes it super clear whenever we're expected to provided a document version or not. Probably one of my favorite changes in the upgrade.
    • A new dependency of System.Threading.Channels was introduced so we had to make sure that was included in our VS scenarios.
  • This changeset is in preparation for another O# release where we'll replace the O# request invoker to get some pretty massive perf wins!

Fixes dotnet/aspnetcore#35622

/cc @ToddGrun @jimmylewis

- With the latest OmniSharp upgrade there were a few high profile changes:
    - Most DTO's are records now which makes them immutable. You'll see throughout the codebase that we now have to use `with {...}` to translate one type to another.
    - `ServerCapabilities` are expandable by default. This means we no longer need our `ExtendableServerCapabilities` type.
    - Getting client and server capabilities in each of our endpoints are now a single method call. This resulted in lots of deleted code.
    - O# upgraded its LSP version to 3.17 which means semantic tokens are no longer proposed. This resulted in a lot of warnings/obsolete bits getting removed. We now also have code action resolution as part of this upgrade so we could remove our old code action resolution endpoint (it's in VSCode now too).
    - The way the O# serializer gets construed now is different and extendable. Because of this we now have a primary method to add all of our converters to an O# serializer.
    - O# embraced the optional vs. required text document identifiers. This makes it super clear whenever we're expected to provided a document version or not. Probably one of my favorite changes in the upgrade.
    - A new dependency of `System.Threading.Channels` was introduced so we had to make sure that was included in our VS scenarios.
- This changeset is in preparation for another O# release where we'll replace the [O# request invoker](OmniSharp/csharp-language-server-protocol#641) to get some pretty massive perf wins!

Fixes dotnet/aspnetcore#35622
Copy link
Member

@davidwengier davidwengier left a comment

Choose a reason for hiding this comment

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

LGTM

Out of curiosity, is this version of O# nullable annotated?

Copy link
Contributor

@ryanbrandenburg ryanbrandenburg left a comment

Choose a reason for hiding this comment

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

Looks good. Some small quibbles, but mostly want to be sure that we've run it through the paces in the experimental instance. If I recall last time there were some problems which didn't show in our tests, only in functional usage.

@NTaylorMullen
Copy link
Author

Out of curiosity, is this version of O# nullable annotated?

Yes!

- Set => Init
- Removal of semantic token legend endpoint
- Some refactoring in our serializer extensions
- Test fixups
@NTaylorMullen
Copy link
Author

🆙 📅

If all looks good i'll get in. @allisonchou looks like latest O# also has a linked editing range handler too 😄

image

@allisonchou
Copy link
Contributor

@NTaylorMullen perfect! Then I can get rid of the extra classes I added 😄

@NTaylorMullen NTaylorMullen added the auto-merge Squash merge once all PR checks are complete and reviewers have approved label Aug 24, 2021
@ghost
Copy link

ghost commented Aug 24, 2021

Hello @NTaylorMullen!

Because this pull request has the auto-merge label, I will be glad to assist with helping to merge this pull request once all check-in policies pass.

p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me (@msftbot) and give me an instruction to get started! Learn more here.

@ghost ghost merged commit 4bff29c into main Aug 24, 2021
@ghost ghost deleted the nimullen/35622 branch August 24, 2021 23:38
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto-merge Squash merge once all PR checks are complete and reviewers have approved

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update Omnisharp to latest

5 participants