Browse Source

Fix SequencePointBuilder skipping moved member initializers

pull/3712/head
nikitalita 3 months ago committed by Siegfried Pammer
parent
commit
d81799bf2a
  1. 28
      ICSharpCode.Decompiler/CSharp/SequencePointBuilder.cs

28
ICSharpCode.Decompiler/CSharp/SequencePointBuilder.cs

@ -165,12 +165,28 @@ namespace ICSharpCode.Decompiler.CSharp @@ -165,12 +165,28 @@ namespace ICSharpCode.Decompiler.CSharp
}
}
public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
{
foreach (var variable in fieldDeclaration.Variables)
{
if (variable.Initializer is not null)
{
VisitAsSequencePoint(variable.Initializer);
}
}
base.VisitFieldDeclaration(fieldDeclaration);
}
public override void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration)
{
if (propertyDeclaration.ExpressionBody is not null)
{
VisitAsSequencePoint(propertyDeclaration.ExpressionBody);
}
else if (propertyDeclaration.Initializer is not null)
{
VisitAsSequencePoint(propertyDeclaration.Initializer);
}
else
{
base.VisitPropertyDeclaration(propertyDeclaration);
@ -204,6 +220,18 @@ namespace ICSharpCode.Decompiler.CSharp @@ -204,6 +220,18 @@ namespace ICSharpCode.Decompiler.CSharp
VisitAsSequencePoint(forStatement.EmbeddedStatement);
}
public override void VisitEventDeclaration(EventDeclaration eventDeclaration)
{
foreach (var variable in eventDeclaration.Variables)
{
if (variable.Initializer is not null)
{
VisitAsSequencePoint(variable.Initializer);
}
}
base.VisitEventDeclaration(eventDeclaration);
}
public override void VisitSwitchStatement(SwitchStatement switchStatement)
{
StartSequencePoint(switchStatement);

Loading…
Cancel
Save