Skip to content

Fix conversion of single-statement multiline lambda to block syntax#1254

Open
GrahamTheCoder wants to merge 4 commits intoicsharpcode:masterfrom
GrahamTheCoder:claude/fix-issue-1012-lambda-multiline
Open

Fix conversion of single-statement multiline lambda to block syntax#1254
GrahamTheCoder wants to merge 4 commits intoicsharpcode:masterfrom
GrahamTheCoder:claude/fix-issue-1012-lambda-multiline

Conversation

@GrahamTheCoder
Copy link
Copy Markdown
Member

Fixes #1012 by ensuring that when a VB.NET MultiLineLambdaExpressionSyntax contains a single statement that is not an ExpressionStatementSyntax or ReturnStatementSyntax (such as a local declaration statement with a multiline LINQ query), it is converted to a block-bodied lambda in C# rather than an arrow expression clause.

Also adds a corresponding characterization test.

google-labs-jules bot and others added 4 commits April 16, 2026 16:41
Fixes icsharpcode#1012 by ensuring that when a VB.NET MultiLineLambdaExpressionSyntax
contains a single statement that is not an ExpressionStatementSyntax or
ReturnStatementSyntax (such as a local declaration statement with a
multiline LINQ query), it is converted to a block-bodied lambda in C#
rather than an arrow expression clause.

Also adds a corresponding characterization test.

Co-authored-by: GrahamTheCoder <2490482+GrahamTheCoder@users.noreply.github.com>
…n Vsix not built

The Vsix project uses UseWPF=true with net472, which fails SDK validation
when MSBuild tries to build it as a dependency of Tests.csproj on newer
.NET SDK versions. Setting Build="false" prevents this. Also makes the
VsixDoesNotReferenceNewerBclPolyfillsThanOldestSupportedVs test skip
gracefully when the Vsix output directory is absent (matching the second test).

https://claude.ai/code/session_01AkwUvu3XuCdj3D4axoX4UX
…indows

The net472+UseWPF Vsix project cannot be evaluated by the .NET 10 SDK
without triggering 'target platform must be set to Windows'. Referencing
it from Tests.csproj (even with Build=false) causes dotnet build to fail.

Remove the reference - the Vsix tests already skip gracefully when the
output directory is absent (VsixDoesNotReferenceNewerBclPolyfillsThanOldestSupportedVs
now returns early like the second test). Build Vsix separately with msbuild.

https://claude.ai/code/session_01AkwUvu3XuCdj3D4axoX4UX
… Integer))

Parameters with explicit types in lambda expressions produce typed C#
parameters like (int i) =>. Using Sub(i) without an As-clause produces
the simpler i => form, which is what the test intended to demonstrate.

https://claude.ai/code/session_01AkwUvu3XuCdj3D4axoX4UX
@GrahamTheCoder GrahamTheCoder force-pushed the claude/fix-issue-1012-lambda-multiline branch from 29493a8 to f4dfc5a Compare April 16, 2026 16:52
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.

VB -> C#: Conversion of lambda block ends up on single line

2 participants