Skip to content

Conversation

cston
Copy link
Contributor

@cston cston commented Apr 2, 2025

@ghost ghost added Area-Compilers untriaged Issues and PRs which have not yet been triaged by a lead labels Apr 2, 2025
@jaredpar jaredpar removed the untriaged Issues and PRs which have not yet been triaged by a lead label Apr 7, 2025
@jaredpar jaredpar added this to the Next milestone Apr 7, 2025
@cston cston changed the title Expression trees: optional arguments Expression trees: support optional arguments and named arguments in parameter order Apr 8, 2025
@cston cston marked this pull request as ready for review April 8, 2025 07:09
@cston cston requested a review from a team as a code owner April 8, 2025 07:09
@cston cston requested review from 333fred and AlekseyTs April 8, 2025 07:09
Error(ErrorCode.ERR_ExpressionTreeContainsNamedArgument, node);
}
else if (!argumentNamesOpt.IsDefaultOrEmpty &&
_compilation.IsFeatureEnabled(MessageID.IDS_FeatureExpressionOptionalAndNamedArguments) &&
Copy link
Contributor

@AlekseyTs AlekseyTs Apr 8, 2025

Choose a reason for hiding this comment

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

_compilation.IsFeatureEnabled(MessageID.IDS_FeatureExpressionOptionalAndNamedArguments) &&

I think this condition should be removed. It would be fine to assert it inside the if though #Closed

</data>
<data name="ERR_DefaultValueUsedWithAttributes" xml:space="preserve">
<value>Cannot specify default parameter value in conjunction with DefaultParameterAttribute or OptionalAttribute</value>
<value>Cannot specify default parameter value in conjunction with DefaultParameterValueAttribute or OptionalAttribute</value>
Copy link
Contributor

@AlekseyTs AlekseyTs Apr 8, 2025

Choose a reason for hiding this comment

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

DefaultParameterValueAttribute

Is this change related to the goal of the PR? #Closed

Copy link
Contributor

Choose a reason for hiding this comment

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

It looks like this change is unrelated. I think it should be removed from this PR.

public void MethodCallWithParams3()
[Theory]
[InlineData(LanguageVersion.CSharp13)]
[InlineData(LanguageVersionFacts.CSharpNext)]
Copy link
Contributor

@AlekseyTs AlekseyTs Apr 8, 2025

Choose a reason for hiding this comment

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

[InlineData(LanguageVersionFacts.CSharpNext)]

Language version tests should cover old version, the new (the specific upcoming) version and the preview version. #Closed

}
else
{
comp.VerifyDiagnostics();
Copy link
Contributor

@AlekseyTs AlekseyTs Apr 8, 2025

Choose a reason for hiding this comment

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

comp.VerifyDiagnostics();

How do we know that we can compile the program and that the behavior of the program is what we expect? #Closed

comp.VerifyDiagnostics(
// (10,41): error CS0853: An expression tree may not contain a named argument specification
// Expression<Func<int>> f = () => new List<int> { 1 } [index: 0];
Diagnostic(ErrorCode.ERR_ExpressionTreeContainsNamedArgument, "new List<int> { 1 } [index: 0]").WithLocation(10, 41));
Copy link
Contributor

@AlekseyTs AlekseyTs Apr 8, 2025

Choose a reason for hiding this comment

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

);

Formatting change creates an unnecessary noise in the diff. In other similar places too #Closed


[Fact]
public void CS0853ERR_ExpressionTreeContainsNamedArgument01()
[Theory]
Copy link
Contributor

@AlekseyTs AlekseyTs Apr 8, 2025

Choose a reason for hiding this comment

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

[Theory]

It looks like all comments mage in CodeGenExprLambdaTests are applicable to changes in this file too. #Closed

[Theory]
[CombinatorialData]
public void OptionalParameter_01(
[CombinatorialValues(LanguageVersion.CSharp13, LanguageVersionFacts.CSharpNext)] LanguageVersion languageVersion,
Copy link
Contributor

@AlekseyTs AlekseyTs Apr 8, 2025

Choose a reason for hiding this comment

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

LanguageVersionFacts.CSharpNext

Same comment about the set of covered versions #Closed

bool useExpression,
bool useCompilationReference)
{
string refKind = useIn ? "in" : "";
Copy link
Contributor

@AlekseyTs AlekseyTs Apr 8, 2025

Choose a reason for hiding this comment

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

useIn ? "in" : "";

Consider covering ref readonly as well #Closed

expectedOutput: """
0
null
S
Copy link
Contributor

@AlekseyTs AlekseyTs Apr 8, 2025

Choose a reason for hiding this comment

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

S

In addition to observing an execution result, I think we should assert the shape of the tree. A simple ToString output is better than nothing. #Closed

}
""";
var comp = CreateCompilation(source, parseOptions: TestOptions.Regular.WithLanguageVersion(languageVersion));
if (languageVersion == LanguageVersion.CSharp13)
Copy link
Contributor

@AlekseyTs AlekseyTs Apr 8, 2025

Choose a reason for hiding this comment

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

if (languageVersion == LanguageVersion.CSharp13)

Are two branches equivalent? #Closed

@AlekseyTs
Copy link
Contributor

AlekseyTs commented Apr 8, 2025

Done with review pass (commit 8) #Closed

{
public abstract class CSharpTestBase : CommonTestBase
{
public static readonly TheoryData<LanguageVersion> LanguageVersions13AndNewer = new([LanguageVersion.CSharp13, LanguageVersion.Preview, LanguageVersionFacts.CSharpNext]);
Copy link
Contributor

@AlekseyTs AlekseyTs Apr 9, 2025

Choose a reason for hiding this comment

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

new

Target typed new is not allowed under Compilers. #Closed

@AlekseyTs
Copy link
Contributor

AlekseyTs commented Apr 9, 2025

                    // (3,52): warning CS9200: A default value is specified for 'ref readonly' parameter 't', but 'ref readonly' should be used only for references. Consider declaring the parameter as 'in'.

Consider suppressing this warning with pragma in source and simplifying the test logic. #Closed


Refers to: src/Compilers/CSharp/Test/Emit3/Semantics/ExpressionOptionalAndNamedArgumentsTests.cs:111 in 17e91c5. [](commit_id = 17e91c5, deletion_comment = False)

@AlekseyTs
Copy link
Contributor

                    // (3,52): warning CS9200: A default value is specified for 'ref readonly' parameter 't', but 'ref readonly' should be used only for references. Consider declaring the parameter as 'in'.

This suggestion applies to other similar tests too.


In reply to: 2789725625


Refers to: src/Compilers/CSharp/Test/Emit3/Semantics/ExpressionOptionalAndNamedArgumentsTests.cs:111 in 8bca3da. [](commit_id = 8bca3da, deletion_comment = False)

@AlekseyTs
Copy link
Contributor

AlekseyTs commented Apr 9, 2025

                    // (8,44): warning CS9193: Argument 1 should be a variable because it is passed to a 'ref readonly' parameter

Similar suggestion to suppress this warning as well #Closed


Refers to: src/Compilers/CSharp/Test/Emit3/Semantics/ExpressionOptionalAndNamedArgumentsTests.cs:235 in 17e91c5. [](commit_id = 17e91c5, deletion_comment = False)

@AlekseyTs
Copy link
Contributor

AlekseyTs commented Apr 9, 2025

        string refKind = useIn ? "in" : "";

Is ref readonly allowed in this scenario? #Closed


Refers to: src/Compilers/CSharp/Test/Emit3/Semantics/ExpressionOptionalAndNamedArgumentsTests.cs:438 in 28d3bd6. [](commit_id = 28d3bd6, deletion_comment = False)

Copy link
Contributor

@AlekseyTs AlekseyTs left a comment

Choose a reason for hiding this comment

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

LGTM (commit 13)

@cston
Copy link
Contributor Author

cston commented Apr 9, 2025

                    // (8,44): warning CS9193: Argument 1 should be a variable because it is passed to a 'ref readonly' parameter

I'll leave the warning at the consumption side, so it's clear we're producing the expected warning for Expression.


In reply to: 2789740967


Refers to: src/Compilers/CSharp/Test/Emit3/Semantics/ExpressionOptionalAndNamedArgumentsTests.cs:235 in 17e91c5. [](commit_id = 17e91c5, deletion_comment = False)

@AlekseyTs
Copy link
Contributor

            // Expression does not support initializers with ref parameters at runtime.

Should we open an issue to block creation of such trees?


Refers to: src/Compilers/CSharp/Test/Emit3/Semantics/ExpressionOptionalAndNamedArgumentsTests.cs:442 in e158c8d. [](commit_id = e158c8d, deletion_comment = False)

Copy link
Contributor

@AlekseyTs AlekseyTs left a comment

Choose a reason for hiding this comment

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

LGTM (commit 14)

@cston cston requested a review from a team April 9, 2025 22:16
@cston
Copy link
Contributor Author

cston commented Apr 10, 2025

@dotnet/roslyn-compiler, @333fred, please review, thanks.

}

VisitCall(node.AddMethod, null, node.Arguments, default(ImmutableArray<RefKind>), default(ImmutableArray<string>), node.DefaultArguments, node);
VisitCall(node.AddMethod, null, node.Arguments, default(ImmutableArray<RefKind>), default(ImmutableArray<string>), default(ImmutableArray<int>), node.DefaultArguments, node);
Copy link
Member

Choose a reason for hiding this comment

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

Nit: could we use some named parameters here for clarity?

@cston cston merged commit e6d795f into dotnet:main Apr 10, 2025
24 checks passed
@cston cston deleted the expr-args branch April 10, 2025 21:47
333fred added a commit to 333fred/roslyn that referenced this pull request Apr 11, 2025
* upstream/main: (3562 commits)
  Update ignored directives public API (dotnet#77968)
  Expression trees: support optional arguments and named arguments in parameter order (dotnet#77972)
  Update resourceManagement.yml (dotnet#77948)
  Split query execution into compile and execute calls (dotnet#78081)
  Remove unused ISemanticSearchWorkspaceHost (dotnet#78083)
  Add back EA.Razor for servicing branches
  Remove EditorFeatures from OOP (dotnet#78069)
  Review feedback
  Fix nullability warnings
  Do not return metadata names for document symbols
  Improve detection of code whose updates may not have effect (dotnet#78009)
  Ensure LSP uses actual signature help trigger characters
  Update RoslynAnalyzer package projects with dependencies
  Simplify analyzer api
  Unseal LSP types (dotnet#78041)
  Compile just for NET
  Fix name
  Docs
  Move type
  Docs
  ...
333fred added a commit to 333fred/roslyn that referenced this pull request Apr 11, 2025
* upstream/main: (495 commits)
  Disable failing Test1 and Test5 lines (dotnet#78118)
  Update ignored directives public API (dotnet#77968)
  Expression trees: support optional arguments and named arguments in parameter order (dotnet#77972)
  Update resourceManagement.yml (dotnet#77948)
  Split query execution into compile and execute calls (dotnet#78081)
  Remove unused ISemanticSearchWorkspaceHost (dotnet#78083)
  Add back EA.Razor for servicing branches
  Remove EditorFeatures from OOP (dotnet#78069)
  Review feedback
  Fix nullability warnings
  Do not return metadata names for document symbols
  Improve detection of code whose updates may not have effect (dotnet#78009)
  Ensure LSP uses actual signature help trigger characters
  Update RoslynAnalyzer package projects with dependencies
  Simplify analyzer api
  Unseal LSP types (dotnet#78041)
  Compile just for NET
  Fix name
  Docs
  Move type
  ...
333fred added a commit that referenced this pull request Apr 12, 2025
* Addressing feedback

* Addressing PR feedback

* Addressing PR comments

* Remove workaround for dotnet/msbuild#10306

The VS SDK was fixed, so the problem shouldn't occur anymore.

* move to a workspace factory

* No need for solution

* Simplify handlers

* Add helper

* move more over

* move more over

* Add remove calls

* Move handlers over

* Move remote service over

* async lock

* async lock

* async lock

* More work

* Fixup

* Correct

* Move to immutable dictionary

* in progress

* in progress

* in progress

* in progress

* in progress

* in progress

* Simplify

* Serialize

* simplify

* simplify

* simplify

* in progress

* in progress

* Reset code

* Clelar

* renames

* Simplify

* rename

* No more null

* Simplify

* Exception throwing

* Extensions: update feature status (#77923)

* Add ignored directives feature status (#77965)

* Extensions: misc checks on receiver parameter and extension members (#77937)

* Add porject back in

* CHange how locking works

* Simplify

* Docs

* Add new message for getting registered method names

* IN progres

* in progress

* Simplify

* Simplify

* Handle exceptions

* Simplify

* Docs

* move method

* Simplify and regions

* Tweaks

* Docs

* Break into files

* Simplify exception handling

* Simplify

* Simplify

* Move

* Docs

* Simplify

* Simplify

* Share code

* Split into local and remote calls

* Add throw

* Add throw

* Simplify

* Simplify

* Simplify

* Simplify

* Simplify

* Simplify

* Simplify

* Simplify

* Simplify

* Simplify

* Simplify

* Simplify

* Avoid potential disposal exception during MEF shutdown (#77990)

Previously, if VS was shutdown before Workspace.EnsureEventListeners was invoked, we would cause an exception during MEF disposal. This would happen because our workspace disposal would attempt to get a service that hadn't already been cached, and thus would ask MEF to compose the item during MEF disposal (which doesn't work).

Instead, just cache the IWorkspaceEventListenerService for use during the dispose.

* Remove unused elements form PublishData.json (#77994)

Removing some elements that seem to be left over from how the publish tooling used to work

* Reduce main thread switches in VisualStudioProjectFactory.CreateAndAddToWorkspaceAsync (#77920)

* Reduce main thread switches in VisualStudioProjectFactory.CreateAndAddToWorkspaceAsync

This method is called once for each project in the solution during solution open, and each call was essentially switching to the main thread twice (once explicitly, once via call to _visualStudioWorkspaceImpl.RefreshProjectExistsUIContextForLanguageAsync). For my testing of opening Roslyn.sln, this removed over 600 main thread switches.

Instead:

1) Move the first main thread switch to just occur once in an initialization task. This task is joined when CreateAndAddToWorkspaceAsync is invoked to ensure that that initialization is completed.
2) Move the second main thread switch to instead move inside the callback from an ABWQ. The code being called needs the UI thread, but doesn't need to occur synchronously during the call to CreateAndAddToWorkspaceAsync.

* Explicitly releasE

* Cancellation is fine

* Reorder

* remove net

* docs

* docs

* remove exception handling

* Add public api

* lint

* Reduce main thread switches in VisualStudioProjectFactory.CreateAndAddToWorkspaceAsync (#77920) (#77998)

* Reduce main thread switches in VisualStudioProjectFactory.CreateAndAddToWorkspaceAsync

This method is called once for each project in the solution during solution open, and each call was essentially switching to the main thread twice (once explicitly, once via call to _visualStudioWorkspaceImpl.RefreshProjectExistsUIContextForLanguageAsync). For my testing of opening Roslyn.sln, this removed over 600 main thread switches.

Instead:

1) Move the first main thread switch to just occur once in an initialization task. This task is joined when CreateAndAddToWorkspaceAsync is invoked to ensure that that initialization is completed.
2) Move the second main thread switch to instead move inside the callback from an ABWQ. The code being called needs the UI thread, but doesn't need to occur synchronously during the call to CreateAndAddToWorkspaceAsync.

* make nested

* Simplify

* Simplify

* Simplify

* Simplify

* Simplify

* restore

* Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20250402.2 (#77982)

Microsoft.SourceBuild.Intermediate.source-build-reference-packages
 From Version 10.0.618101 -> To Version 10.0.620202

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>

* Allow null

* Simplify

* No VoidResult

* Make everything non-capturing

* 'nameof(T<>)' not supported yet.

* Update references

* Revert "Another attempt to move MiscellaneousFilesWorkspace to a bg thread (#77983)

This reverts commit 2e8fcbe.

* fix

* Exception work

* Update Roslyn.sln

* More exception work

* Add remote end

* Complete the exception handling work

* Add docs

* docs

* Add docs

* Rename type

* Rename type

* update publishdata

* Change SolutionState.ProjectStates from an ImmutableDictionary<ProjectId, ProjectState> to an ImmutableArray<ProjectState> (#77971)

* *** WIP. Definitely needs supporting speedometer numbers before being considered ***

Change SolutionState to keep/expose and ImmutableArray<ProjectState> instead of an IReadOnlyList<ProjectId>

By exposing the project states, there is a bunch of code that can be changed to enumerate over that collection rather than over the values of an ImmutableDictionary<ProjectId, ProjectState>. That enumeration is actually *very* expensive.

For example, during roslyn load, local etl traces indicates the following CPU usage enumerating this dictionary:

Under ComputeDocumentIdsWithFilePath: 2.6 seconds
Under GetFirstRelatedDocumentId: 1.1 seconds

There is a bit of a tradeoff associated with this change. The IReadOnlyList<ProjectId> could be reused very often, whereas there is much less opportunity for sharing ImmutableArray<ProjectState> when forking the solution state. I expect there to be more memory allocated in the speedometer runs, so I'd like to get a feel on how much worse that is before elevating this PR out of draft status.

Additionally, SolutionState had a CWT over a sorted version of this IReadOnlyList<ProjectId>. As mentioned earlier, the sharing of this data is quite a bit less common now that it's an ImmutableArray<ProjectState>. I locally measured the stopwatch time spent always sorting this data in ComputeChecksumsAsync and it was a total of 4 ms (averaged over two separate VS runs) when loading the roslyn sln.

The ImmutableDictionary is still present in SolutionState, but it was renamed to indicate that it's primarily useful as a lookup tool, and all references treating it as an enumeration mechanism were changed to instead use the ImmutableArray<ProjectState>.

* Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20250404.2 (#78008)

Microsoft.SourceBuild.Intermediate.source-build-reference-packages
 From Version 10.0.620202 -> To Version 10.0.620402

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>

* Fix VSTypeScript lsp tests

* localize servicehub service name

* Simplify workspace initialization in the LSP server

Right now we have the logic for which analyzers get added to a workspace
in Program.cs, which calls a special method that specifically
initializes the main host workspace. This refactors it so that could
be used to initialize any workspace, and removes any tricky ordering
problems that might happen by using cleaner MEF imports when we have
them.

* Update test

* Update dependencies from https://github.com/dotnet/arcade build 20250404.5

Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.XliffTasks
 From Version 9.0.0-beta.25164.2 -> To Version 9.0.0-beta.25204.5

* Update maintenance-packages versions (#78005)

* Update maintenance-packages versions

* Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20250404.2

Microsoft.SourceBuild.Intermediate.source-build-reference-packages
 From Version 10.0.620202 -> To Version 10.0.620402

* Address feedback

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>

* Fix EA layering for Razor.ExternalAccess (#77927)

Moves things to /Shared to ship in both MS.CA.EA.Razor and MS.CA.EA.Razor.Features

At some point we can rename MS.CA.EA.Razor to MS.CA.EA.Razor.EditorFeatures but I didn't bother with that in this PR
Shipping in both to not require dual insertion. We can fix this after a consuming change in Razor is inserted

* Delete

* Update PublishData.json after VS snap to rel/d17.14

* Handle nameof(indexer) in ref analysis (#78015)

* Make a couple of features non-experimental

* Ensure external access extensions package gets codebase

* Feedback

* Add extension message handler service teest

* Add extension message handler service test

* FIx

* Add testS

* In progress

* Test work

* Tests

* Add test

* More tests

* Add tests

* Add tests

* Add tests

* Add test

* Add test

* Add test

* Add test

* Add test

* Update comment

* Disable TransitiveVersioningPinning for RoslynAnalyzers.

* Remove dependency on EditorFeatures from lsp tests

* Remove dependency on EditorFeatures from codelens layer

* Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20250407.2

Microsoft.SourceBuild.Intermediate.source-build-reference-packages
 From Version 10.0.620402 -> To Version 10.0.620702

* Remove dependency on EditorFeatures from build tools

* Update dependency versions

* Extensions: ref safety analysis (#77967)

* Update PublishData.json after VS span to main

* In progress

* Fix crash in backing field nullability cycle scenario (#77993)

* More work

* Pass along when an extension was unloaded

* Add teset

* Add tests

* Docs

* Simplify

* Using alias

* Fix

* Add tests

* Add docs

* Update gladstone/roslyn api

* Simplify channels in SemanticSearch

* Semantic Search: Add support for async queries and FAR tool (#77906)

* Simplify further

* Simplify further

* Localize exception messages

* Docs

* Docs

* Docs

* named args

* named args

* Docs

* Move type

* Docs

* Fix name

* Compile just for NET

* Unseal LSP types (#78041)

* Simplify analyzer api

* Update RoslynAnalyzer package projects with dependencies

This will fix issues with transitive pinning during source builds.

* Ensure LSP uses actual signature help trigger characters

* Improve detection of code whose updates may not have effect (#78009)

* Do not return metadata names for document symbols

* Fix nullability warnings

* Review feedback

* Remove EditorFeatures from OOP (#78069)

* Add back EA.Razor for servicing branches

publishdata is pulled from main always.  this needs to be present even though the package no longer exists for servicing branches

* Remove unused ISemanticSearchWorkspaceHost (#78083)

* Split query execution into compile and execute calls (#78081)

* Update resourceManagement.yml (#77948)

* Expression trees: support optional arguments and named arguments in parameter order (#77972)

* Update ignored directives public API (#77968)

* Remove experiment

* Add Content token to IgnoredDirectiveTriviaSyntax

* Add Content token to ShebangDirectiveTriviaSyntax

* Fixup public API

* Fixup semantic search API list

* Fix CLI flag in error message

* Remove Update API

* Update SemanticSearch API list

---------

Co-authored-by: Matteo Prosperi <[email protected]>
Co-authored-by: Jason Malinowski <[email protected]>
Co-authored-by: Cyrus Najmabadi <[email protected]>
Co-authored-by: Cyrus Najmabadi <[email protected]>
Co-authored-by: Julien Couvreur <[email protected]>
Co-authored-by: Jan Jones <[email protected]>
Co-authored-by: Matteo Prosperi <[email protected]>
Co-authored-by: Todd Grunke <[email protected]>
Co-authored-by: Jared Parsons <[email protected]>
Co-authored-by: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: David Barbet <[email protected]>
Co-authored-by: Carlos Sánchez López <[email protected]>
Co-authored-by: Andrew Hall <[email protected]>
Co-authored-by: Charles Stoner <[email protected]>
Co-authored-by: Tomas Matousek <[email protected]>
Co-authored-by: Joey Robichaud <[email protected]>
Co-authored-by: Rikki Gibson <[email protected]>
Co-authored-by: Tomáš Matoušek <[email protected]>
333fred added a commit to 333fred/roslyn that referenced this pull request Apr 22, 2025
…ustom-awaiters

* upstream/features/runtime-async: (3563 commits)
  Disable failing Test1 and Test5 lines (dotnet#78118)
  Update ignored directives public API (dotnet#77968)
  Expression trees: support optional arguments and named arguments in parameter order (dotnet#77972)
  Update resourceManagement.yml (dotnet#77948)
  Split query execution into compile and execute calls (dotnet#78081)
  Remove unused ISemanticSearchWorkspaceHost (dotnet#78083)
  Add back EA.Razor for servicing branches
  Remove EditorFeatures from OOP (dotnet#78069)
  Review feedback
  Fix nullability warnings
  Do not return metadata names for document symbols
  Improve detection of code whose updates may not have effect (dotnet#78009)
  Ensure LSP uses actual signature help trigger characters
  Update RoslynAnalyzer package projects with dependencies
  Simplify analyzer api
  Unseal LSP types (dotnet#78041)
  Compile just for NET
  Fix name
  Docs
  Move type
  ...
@RikkiGibson RikkiGibson modified the milestones: Next, 18.0 P1 Aug 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants