From d81799bf2adbba5b06b83d8cf57f6bdc573a588c Mon Sep 17 00:00:00 2001 From: nikitalita <69168929+nikitalita@users.noreply.github.com> Date: Tue, 14 Apr 2026 00:08:21 -0700 Subject: [PATCH] Fix SequencePointBuilder skipping moved member initializers --- .../CSharp/SequencePointBuilder.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ICSharpCode.Decompiler/CSharp/SequencePointBuilder.cs b/ICSharpCode.Decompiler/CSharp/SequencePointBuilder.cs index cda185d56..2ec65743a 100644 --- a/ICSharpCode.Decompiler/CSharp/SequencePointBuilder.cs +++ b/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) { 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 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);