dotnet/roslyn
在 GitHub 查看VB.NET AnalyzeDataFlow incorrectly reports parameters as WrittenInside
Open
#68,286 创建于 2023年5月22日
Area-CompilersBughelp wanted
仓库指标
- Star
- (20,414 star)
- PR 合并指标
- (平均合并 6天 17小时) (30 天内合并 256 个 PR)
描述
Version Used: 4.6.0
Steps to Reproduce:
Use following source code to analyse
Public Sub Test(i As Integer)
Dim s = i.ToString()
End Sub
with following visitor
public override SyntaxNode VisitMethodBlock(MethodBlockSyntax node)
{
var first = node.Statements.First();
var last = node.Statements.Last();
var dataFlow = semanticModel.AnalyzeDataFlow(first, last);
Debug.Assert(dataFlow.WrittenInside.Length == 1);
return node;
}
Expected Behavior:
dataFlow.WrittenInside should not contain Parameter i As System.Int32, only Local s As System.String
Actual Behavior:
dataFlow.WrittenInside contains Parameter i As System.Int32.
Notes:
Equivalent code in C# is analysed as expected, the parameter is not part of the dataFlow.WrittenInside.
I suspect this line: https://github.com/dotnet/roslyn/blob/687921ffae8ad91a5464473cb1759fd463c345f2/src/Compilers/VisualBasic/Portable/Analysis/FlowAnalysis/DataFlowPass.vb#L1537