提交 f6f22435 编写于 作者: M Manish Vasani

Bail out for ref locals for unused value assignment analyzer

We need points to analysis for properly analyzing unused assignments to ref locals, which is currently not supported.
Fixes #32855
上级 2bad76a6
......@@ -6040,6 +6040,45 @@ int M()
#endif
return x;
}
}", optionName);
}
[WorkItem(32855, "https://github.com/dotnet/roslyn/issues/32855")]
[Theory, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedValues)]
[InlineData(nameof(PreferDiscard))]
[InlineData(nameof(PreferUnusedLocal))]
public async Task RefLocalInitialization(string optionName)
{
await TestMissingInRegularAndScriptAsync(
@"class Test
{
int[] data = { 0 };
void Method()
{
ref int [|target|] = ref data[0];
target = 1;
}
}", optionName);
}
[WorkItem(32855, "https://github.com/dotnet/roslyn/issues/32855")]
[Theory, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedValues)]
[InlineData(nameof(PreferDiscard))]
[InlineData(nameof(PreferUnusedLocal))]
public async Task RefLocalAssignment(string optionName)
{
await TestMissingInRegularAndScriptAsync(
@"class Test
{
int[] data = { 0 };
int Method()
{
ref int target = ref data[0];
[|target|] = 1;
return data[0];
}
}", optionName);
}
}
......
......@@ -412,6 +412,8 @@ private void AnalyzeOperationBlockEnd(OperationBlockAnalysisContext context)
SymbolUsageResult resultFromFlowAnalysis,
out ImmutableDictionary<string, string> properties)
{
Debug.Assert(!(symbol is ILocalSymbol local) || !local.IsRef);
properties = null;
// Bail out in following cases:
......
......@@ -216,6 +216,13 @@ public override void VisitDeconstructionAssignment(IDeconstructionAssignmentOper
public override void VisitLocalReference(ILocalReferenceOperation operation)
{
if (operation.Local.IsRef)
{
// Bail out for ref locals.
// We need points to analysis for analyzing writes to ref locals, which is currently not supported.
return;
}
OnReferenceFound(operation.Local, operation);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册