diff --git a/ICSharpCode.Decompiler/CSharp/OutputVisitor/CSharpOutputVisitor.cs b/ICSharpCode.Decompiler/CSharp/OutputVisitor/CSharpOutputVisitor.cs index aa903e71f..05364d24f 100644 --- a/ICSharpCode.Decompiler/CSharp/OutputVisitor/CSharpOutputVisitor.cs +++ b/ICSharpCode.Decompiler/CSharp/OutputVisitor/CSharpOutputVisitor.cs @@ -999,13 +999,13 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor { StartNode(interpolation); - writer.WriteToken(Roles.LBrace, "{"); + writer.WriteToken(Interpolation.LBrace, "{"); interpolation.Expression.AcceptVisitor(this); if (interpolation.Suffix != null) { writer.WriteToken(Roles.Colon, ":"); writer.WritePrimitiveValue("", interpolation.Suffix); } - writer.WriteToken(Roles.RBrace, "}"); + writer.WriteToken(Interpolation.RBrace, "}"); EndNode(interpolation); } diff --git a/ICSharpCode.Decompiler/CSharp/Syntax/Expressions/InterpolatedStringExpression.cs b/ICSharpCode.Decompiler/CSharp/Syntax/Expressions/InterpolatedStringExpression.cs index d2c555524..4da978a63 100644 --- a/ICSharpCode.Decompiler/CSharp/Syntax/Expressions/InterpolatedStringExpression.cs +++ b/ICSharpCode.Decompiler/CSharp/Syntax/Expressions/InterpolatedStringExpression.cs @@ -86,8 +86,11 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax /// public class Interpolation : InterpolatedStringContent { + public static readonly TokenRole LBrace = new TokenRole("{"); + public static readonly TokenRole RBrace = new TokenRole("}"); + public CSharpTokenNode LBraceToken { - get { return GetChildByRole(Roles.LBrace); } + get { return GetChildByRole(LBrace); } } public Expression Expression { @@ -98,7 +101,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax public string Suffix { get; } public CSharpTokenNode RBraceToken { - get { return GetChildByRole(Roles.RBrace); } + get { return GetChildByRole(RBrace); } } public Interpolation() diff --git a/ICSharpCode.Decompiler/Output/TextTokenWriter.cs b/ICSharpCode.Decompiler/Output/TextTokenWriter.cs index 9c68e71b4..97416deb3 100644 --- a/ICSharpCode.Decompiler/Output/TextTokenWriter.cs +++ b/ICSharpCode.Decompiler/Output/TextTokenWriter.cs @@ -214,6 +214,10 @@ namespace ICSharpCode.Decompiler { switch (token) { case "{": + if (role != Roles.LBrace) { + output.Write("{"); + break; + } if (braceLevelWithinType >= 0 || nodeStack.Peek() is TypeDeclaration) braceLevelWithinType++; if (nodeStack.OfType().Count() <= 1 || FoldBraces) { @@ -223,6 +227,7 @@ namespace ICSharpCode.Decompiler break; case "}": output.Write('}'); + if (role != Roles.RBrace) break; if (nodeStack.OfType().Count() <= 1 || FoldBraces) output.MarkFoldEnd(); if (braceLevelWithinType >= 0)