Skip to content

Commit 1c9b4d3

Browse files
For now, only attempt to simplify local symbol usages
1 parent f447f73 commit 1c9b4d3

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

ICSharpCode.CodeConverter/CSharp/MethodBodyExecutableStatementVisitor.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,9 @@ private async Task<bool> CanEvaluateMultipleTimesAsync(VBSyntax.ExpressionSyntax
627627
private async Task<bool> IsNeverMutatedAsync(VBSyntax.NameSyntax ns)
628628
{
629629
var allowedLocation = Location.Create(ns.SyntaxTree, TextSpan.FromBounds(ns.GetAncestor<VBSyntax.MethodBlockBaseSyntax>().SpanStart, ns.Span.End));
630-
return await CommonConversions.Document.Project.Solution.IsNeverWritten(_semanticModel.GetSymbolInfo(ns).Symbol, allowedLocation);
630+
var symbol = _semanticModel.GetSymbolInfo(ns).Symbol;
631+
//Perf optimization: Looking across the whole solution is expensive, so assume non-local symbols are written somewhere
632+
return symbol is ILocalSymbol && await CommonConversions.Document.Project.Solution.IsNeverWritten(symbol, allowedLocation);
631633
}
632634

633635
private CasePatternSwitchLabelSyntax WrapInCasePatternSwitchLabelSyntax(VBSyntax.SelectBlockSyntax node, ExpressionSyntax expression, bool treatAsBoolean = false)

0 commit comments

Comments
 (0)