Skip to content
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

Fix simplify lambda expression with unrelated assignment in other method #71324

Merged
merged 2 commits into from
Dec 18, 2023

Conversation

CyrusNajmabadi
Copy link
Member

Fixes #71300

@CyrusNajmabadi CyrusNajmabadi requested a review from a team as a code owner December 18, 2023 18:46
@dotnet-issue-labeler dotnet-issue-labeler bot added Area-IDE untriaged Issues and PRs which have not yet been triaged by a lead labels Dec 18, 2023
var outermostBody = invokedExpression.AncestorsAndSelf().LastOrDefault(
n => n is BlockSyntax or ArrowExpressionClauseSyntax or AnonymousFunctionExpressionSyntax or GlobalStatementSyntax);
if (outermostBody is null or GlobalStatementSyntax)
outermostBody = syntaxTree.GetRoot(cancellationToken);
Copy link
Member Author

Choose a reason for hiding this comment

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

the prior walk always hit the compilation unit. which meant that we were always checking everything (Even unrelated code). now we keep walking up, and only go to the compilation unit if we were in a global statement.

@CyrusNajmabadi CyrusNajmabadi merged commit 40d6b5c into dotnet:main Dec 18, 2023
28 checks passed
@ghost ghost added this to the Next milestone Dec 18, 2023
@CyrusNajmabadi CyrusNajmabadi deleted the simplifyLambdaAssignment branch December 18, 2023 22:20
var outermostBody = invokedExpression.AncestorsAndSelf().Last(
n => n is BlockSyntax or ArrowExpressionClauseSyntax or AnonymousFunctionExpressionSyntax or CompilationUnitSyntax);
var outermostBody = invokedExpression.AncestorsAndSelf().LastOrDefault(
n => n is BlockSyntax or ArrowExpressionClauseSyntax or AnonymousFunctionExpressionSyntax or GlobalStatementSyntax);
Copy link
Member

@sharwell sharwell Dec 19, 2023

Choose a reason for hiding this comment

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

Do we need to consider field or property initializers here?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-IDE untriaged Issues and PRs which have not yet been triaged by a lead
Projects
None yet
Development

Successfully merging this pull request may close these issues.

IDE0200 is not reported in .NET 8 but works in .NET 7 for injected dependencies
4 participants