Skip to content

Commit

Permalink
Generate sequence points for expression-bodied properties and indexers
Browse files Browse the repository at this point in the history
  • Loading branch information
KirillOsenkov authored and siegfriedpammer committed Jul 2, 2023
1 parent 5f2b8e6 commit 7992d14
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 0 deletions.
24 changes: 24 additions & 0 deletions ICSharpCode.Decompiler/CSharp/SequencePointBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,30 @@ public override void VisitBlockStatement(BlockStatement blockStatement)
}
}

public override void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration)
{
if (!propertyDeclaration.ExpressionBody.IsNull)
{
VisitAsSequencePoint(propertyDeclaration.ExpressionBody);
}
else
{
base.VisitPropertyDeclaration(propertyDeclaration);
}
}

public override void VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration)
{
if (!indexerDeclaration.ExpressionBody.IsNull)
{
VisitAsSequencePoint(indexerDeclaration.ExpressionBody);
}
else
{
base.VisitIndexerDeclaration(indexerDeclaration);
}
}

public override void VisitForStatement(ForStatement forStatement)
{
// Every element of a for-statement is its own sequence point.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ void SimplifyPropertyDeclaration(PropertyDeclaration propertyDeclaration)
return;
propertyDeclaration.Modifiers |= propertyDeclaration.Getter.Modifiers;
propertyDeclaration.ExpressionBody = m.Get<Expression>("expression").Single().Detach();
propertyDeclaration.CopyAnnotationsFrom(propertyDeclaration.Getter);
propertyDeclaration.Getter.Remove();
}

Expand All @@ -230,6 +231,7 @@ void SimplifyIndexerDeclaration(IndexerDeclaration indexerDeclaration)
return;
indexerDeclaration.Modifiers |= indexerDeclaration.Getter.Modifiers;
indexerDeclaration.ExpressionBody = m.Get<Expression>("expression").Single().Detach();
indexerDeclaration.CopyAnnotationsFrom(indexerDeclaration.Getter);
indexerDeclaration.Getter.Remove();
}
}
Expand Down
24 changes: 24 additions & 0 deletions ICSharpCode.Decompiler/DebugInfo/DebugInfoGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,30 @@ public override void VisitAnonymousMethodExpression(AnonymousMethodExpression an
HandleMethod(anonymousMethodExpression);
}

public override void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration)
{
if (!propertyDeclaration.ExpressionBody.IsNull)
{
HandleMethod(propertyDeclaration.ExpressionBody, propertyDeclaration.Annotation<ILFunction>());
}
else
{
base.VisitPropertyDeclaration(propertyDeclaration);
}
}

public override void VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration)
{
if (!indexerDeclaration.ExpressionBody.IsNull)
{
HandleMethod(indexerDeclaration.ExpressionBody, indexerDeclaration.Annotation<ILFunction>());
}
else
{
base.VisitIndexerDeclaration(indexerDeclaration);
}
}

public override void VisitQueryFromClause(QueryFromClause queryFromClause)
{
if (queryFromClause.Parent.FirstChild != queryFromClause)
Expand Down

0 comments on commit 7992d14

Please sign in to comment.