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
} }
} }
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) public override void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration)
{ {
if (propertyDeclaration.ExpressionBody is not null) if (propertyDeclaration.ExpressionBody is not null)
{ {
VisitAsSequencePoint(propertyDeclaration.ExpressionBody); VisitAsSequencePoint(propertyDeclaration.ExpressionBody);
} }
else if (propertyDeclaration.Initializer is not null)
{
VisitAsSequencePoint(propertyDeclaration.Initializer);
}
else else
{ {
base.VisitPropertyDeclaration(propertyDeclaration); base.VisitPropertyDeclaration(propertyDeclaration);
@ -204,6 +220,18 @@ namespace ICSharpCode.Decompiler.CSharp
VisitAsSequencePoint(forStatement.EmbeddedStatement); 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) public override void VisitSwitchStatement(SwitchStatement switchStatement)
{ {
StartSequencePoint(switchStatement); StartSequencePoint(switchStatement);

Loading…
Cancel
Save