Browse Source

Implement Interval.WriteTo extension method on ILAst

pull/923/head
Siegfried Pammer 8 years ago
parent
commit
5fec6bd7f7
  1. 11
      ICSharpCode.Decompiler/IL/InstructionOutputExtensions.cs
  2. 37
      ICSharpCode.Decompiler/IL/Instructions.cs
  3. 1
      ICSharpCode.Decompiler/IL/Instructions.tt
  4. 1
      ICSharpCode.Decompiler/IL/Instructions/BinaryNumericInstruction.cs
  5. 1
      ICSharpCode.Decompiler/IL/Instructions/Branch.cs
  6. 1
      ICSharpCode.Decompiler/IL/Instructions/CallIndirect.cs
  7. 1
      ICSharpCode.Decompiler/IL/Instructions/CallInstruction.cs
  8. 1
      ICSharpCode.Decompiler/IL/Instructions/Comp.cs
  9. 1
      ICSharpCode.Decompiler/IL/Instructions/CompoundAssignmentInstruction.cs
  10. 1
      ICSharpCode.Decompiler/IL/Instructions/Conv.cs
  11. 1
      ICSharpCode.Decompiler/IL/Instructions/IfInstruction.cs
  12. 1
      ICSharpCode.Decompiler/IL/Instructions/LdLen.cs
  13. 1
      ICSharpCode.Decompiler/IL/Instructions/Leave.cs
  14. 1
      ICSharpCode.Decompiler/IL/Instructions/LockInstruction.cs
  15. 4
      ICSharpCode.Decompiler/IL/Instructions/MemoryInstructions.cs
  16. 1
      ICSharpCode.Decompiler/IL/Instructions/NullCoalescingInstruction.cs
  17. 4
      ICSharpCode.Decompiler/IL/Instructions/SimpleInstruction.cs
  18. 1
      ICSharpCode.Decompiler/IL/Instructions/StringToInt.cs
  19. 2
      ICSharpCode.Decompiler/IL/Instructions/SwitchInstruction.cs
  20. 4
      ICSharpCode.Decompiler/IL/Instructions/TryInstruction.cs
  21. 1
      ICSharpCode.Decompiler/IL/Instructions/UnaryInstruction.cs
  22. 1
      ICSharpCode.Decompiler/IL/Instructions/UsingInstruction.cs

11
ICSharpCode.Decompiler/IL/InstructionOutputExtensions.cs

@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
using ICSharpCode.Decompiler.Disassembler;
using ICSharpCode.Decompiler.TypeSystem;
using ICSharpCode.Decompiler.Util;
namespace ICSharpCode.Decompiler.IL
{
@ -50,5 +51,15 @@ namespace ICSharpCode.Decompiler.IL @@ -50,5 +51,15 @@ namespace ICSharpCode.Decompiler.IL
else
output.WriteReference(symbol.Name, symbol);
}
public static void WriteTo(this Interval interval, ITextOutput output, ILAstWritingOptions options)
{
if (!options.ShowILRanges)
return;
if (interval.IsEmpty)
output.Write("[empty] ");
else
output.Write($"[{interval.Start}..{interval.InclusiveEnd}] ");
}
}
}

37
ICSharpCode.Decompiler/IL/Instructions.cs

@ -297,6 +297,7 @@ namespace ICSharpCode.Decompiler.IL @@ -297,6 +297,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write('(');
this.argument.WriteTo(output, options);
@ -389,6 +390,7 @@ namespace ICSharpCode.Decompiler.IL @@ -389,6 +390,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write('(');
this.left.WriteTo(output, options);
@ -816,6 +818,7 @@ namespace ICSharpCode.Decompiler.IL @@ -816,6 +818,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
variable.WriteTo(output);
@ -2113,6 +2116,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2113,6 +2116,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
variable.WriteTo(output);
@ -2187,6 +2191,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2187,6 +2191,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
variable.WriteTo(output);
@ -2318,6 +2323,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2318,6 +2323,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
variable.WriteTo(output);
@ -2412,6 +2418,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2412,6 +2418,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write('(');
this.value.WriteTo(output, options);
@ -2505,6 +2512,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2505,6 +2512,7 @@ namespace ICSharpCode.Decompiler.IL
public override StackType ResultType { get { return StackType.O; } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, Value);
@ -2541,6 +2549,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2541,6 +2549,7 @@ namespace ICSharpCode.Decompiler.IL
public override StackType ResultType { get { return StackType.I4; } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, Value);
@ -2577,6 +2586,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2577,6 +2586,7 @@ namespace ICSharpCode.Decompiler.IL
public override StackType ResultType { get { return StackType.I8; } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, Value);
@ -2613,6 +2623,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2613,6 +2623,7 @@ namespace ICSharpCode.Decompiler.IL
public override StackType ResultType { get { return StackType.F; } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, Value);
@ -2649,6 +2660,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2649,6 +2660,7 @@ namespace ICSharpCode.Decompiler.IL
public override StackType ResultType { get { return StackType.O; } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, Value);
@ -2715,6 +2727,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2715,6 +2727,7 @@ namespace ICSharpCode.Decompiler.IL
public override StackType ResultType { get { return StackType.I; } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
method.WriteTo(output);
@ -2762,6 +2775,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2762,6 +2775,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
method.WriteTo(output);
@ -2803,6 +2817,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2803,6 +2817,7 @@ namespace ICSharpCode.Decompiler.IL
public override StackType ResultType { get { return StackType.O; } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
type.WriteTo(output);
@ -2841,6 +2856,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2841,6 +2856,7 @@ namespace ICSharpCode.Decompiler.IL
public override StackType ResultType { get { return StackType.O; } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
member.WriteTo(output);
@ -3009,6 +3025,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3009,6 +3025,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
if (IsVolatile)
output.Write("volatile.");
if (UnalignedPrefix > 0)
@ -3149,6 +3166,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3149,6 +3166,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
if (IsVolatile)
output.Write("volatile.");
if (UnalignedPrefix > 0)
@ -3254,6 +3272,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3254,6 +3272,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
field.WriteTo(output);
@ -3295,6 +3314,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3295,6 +3314,7 @@ namespace ICSharpCode.Decompiler.IL
public IField Field { get { return field; } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
field.WriteTo(output);
@ -3342,6 +3362,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3342,6 +3362,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
type.WriteTo(output);
@ -3383,6 +3404,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3383,6 +3404,7 @@ namespace ICSharpCode.Decompiler.IL
public override StackType ResultType { get { return StackType.O; } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
type.WriteTo(output);
@ -3485,6 +3507,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3485,6 +3507,7 @@ namespace ICSharpCode.Decompiler.IL
}
void OriginalWriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
if (IsVolatile)
output.Write("volatile.");
if (UnalignedPrefix > 0)
@ -3609,6 +3632,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3609,6 +3632,7 @@ namespace ICSharpCode.Decompiler.IL
}
void OriginalWriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
if (IsVolatile)
output.Write("volatile.");
if (UnalignedPrefix > 0)
@ -3665,6 +3689,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3665,6 +3689,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
type.WriteTo(output);
@ -3715,6 +3740,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3715,6 +3740,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
type.WriteTo(output);
@ -3765,6 +3791,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3765,6 +3791,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
type.WriteTo(output);
@ -3875,6 +3902,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3875,6 +3902,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
type.WriteTo(output);
@ -3920,6 +3948,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3920,6 +3948,7 @@ namespace ICSharpCode.Decompiler.IL
public override StackType ResultType { get { return type.GetStackType(); } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
type.WriteTo(output);
@ -4032,6 +4061,7 @@ namespace ICSharpCode.Decompiler.IL @@ -4032,6 +4061,7 @@ namespace ICSharpCode.Decompiler.IL
public override StackType ResultType { get { return StackType.I4; } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
type.WriteTo(output);
@ -4217,6 +4247,7 @@ namespace ICSharpCode.Decompiler.IL @@ -4217,6 +4247,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
if (IsReadOnly)
output.Write("readonly.");
output.Write(OpCode);
@ -4318,6 +4349,7 @@ namespace ICSharpCode.Decompiler.IL @@ -4318,6 +4349,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write('(');
this.array.WriteTo(output, options);
@ -4438,6 +4470,7 @@ namespace ICSharpCode.Decompiler.IL @@ -4438,6 +4470,7 @@ namespace ICSharpCode.Decompiler.IL
public override StackType ResultType { get { return StackType.O; } }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
type.WriteTo(output);
@ -4516,6 +4549,7 @@ namespace ICSharpCode.Decompiler.IL @@ -4516,6 +4549,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
type.WriteTo(output);
@ -4610,6 +4644,7 @@ namespace ICSharpCode.Decompiler.IL @@ -4610,6 +4644,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write('(');
this.value.WriteTo(output, options);
@ -4702,6 +4737,7 @@ namespace ICSharpCode.Decompiler.IL @@ -4702,6 +4737,7 @@ namespace ICSharpCode.Decompiler.IL
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write('(');
this.value.WriteTo(output, options);
@ -4763,6 +4799,7 @@ namespace ICSharpCode.Decompiler.IL.Patterns @@ -4763,6 +4799,7 @@ namespace ICSharpCode.Decompiler.IL.Patterns
}
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write('(');
output.Write(')');

1
ICSharpCode.Decompiler/IL/Instructions.tt

@ -499,6 +499,7 @@ namespace ICSharpCode.Decompiler.IL @@ -499,6 +499,7 @@ namespace ICSharpCode.Decompiler.IL
public IEnumerable<string> WriteToBody {
get {
yield return "ILRange.WriteTo(output, options);";
foreach (string line in WriteOpCodePrefix)
yield return line;
yield return "output.Write(OpCode);";

1
ICSharpCode.Decompiler/IL/Instructions/BinaryNumericInstruction.cs

@ -178,6 +178,7 @@ namespace ICSharpCode.Decompiler.IL @@ -178,6 +178,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write("." + GetOperatorName(Operator));
if (CheckForOverflow) {

1
ICSharpCode.Decompiler/IL/Instructions/Branch.cs

@ -113,6 +113,7 @@ namespace ICSharpCode.Decompiler.IL @@ -113,6 +113,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write(' ');
output.WriteReference(TargetLabel, (object)targetBlock ?? TargetILOffset, isLocal: true);

1
ICSharpCode.Decompiler/IL/Instructions/CallIndirect.cs

@ -91,6 +91,7 @@ namespace ICSharpCode.Decompiler.IL @@ -91,6 +91,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write("call.indirect ");
ReturnType.WriteTo(output);
output.Write('(');

1
ICSharpCode.Decompiler/IL/Instructions/CallInstruction.cs

@ -76,6 +76,7 @@ namespace ICSharpCode.Decompiler.IL @@ -76,6 +76,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
if (ConstrainedTo != null) {
output.Write("constrained[");
ConstrainedTo.WriteTo(output, ILNameSyntax.ShortTypeName);

1
ICSharpCode.Decompiler/IL/Instructions/Comp.cs

@ -175,6 +175,7 @@ namespace ICSharpCode.Decompiler.IL @@ -175,6 +175,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
if (options.UseLogicOperationSugar && MatchLogicNot(out var arg)) {
output.Write("logic.not(");
arg.WriteTo(output, options);

1
ICSharpCode.Decompiler/IL/Instructions/CompoundAssignmentInstruction.cs

@ -154,6 +154,7 @@ namespace ICSharpCode.Decompiler.IL @@ -154,6 +154,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write("." + GetOperatorName(Operator));
if (CompoundAssignmentType == CompoundAssignmentType.EvaluatesToNewValue)

1
ICSharpCode.Decompiler/IL/Instructions/Conv.cs

@ -260,6 +260,7 @@ namespace ICSharpCode.Decompiler.IL @@ -260,6 +260,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
if (CheckForOverflow) {
output.Write(".ovf");

1
ICSharpCode.Decompiler/IL/Instructions/IfInstruction.cs

@ -78,6 +78,7 @@ namespace ICSharpCode.Decompiler.IL @@ -78,6 +78,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
if (options.UseLogicOperationSugar) {
if (MatchLogicAnd(out var lhs, out var rhs)) {
output.Write("logic.and(");

1
ICSharpCode.Decompiler/IL/Instructions/LdLen.cs

@ -40,6 +40,7 @@ namespace ICSharpCode.Decompiler.IL @@ -40,6 +40,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write('.');
output.Write(resultType);

1
ICSharpCode.Decompiler/IL/Instructions/Leave.cs

@ -111,6 +111,7 @@ namespace ICSharpCode.Decompiler.IL @@ -111,6 +111,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
if (targetContainer != null) {
output.Write(' ');

1
ICSharpCode.Decompiler/IL/Instructions/LockInstruction.cs

@ -28,6 +28,7 @@ namespace ICSharpCode.Decompiler.IL @@ -28,6 +28,7 @@ namespace ICSharpCode.Decompiler.IL
{
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write("lock (");
OnExpression.WriteTo(output, options);
output.WriteLine(") {");

4
ICSharpCode.Decompiler/IL/Instructions/MemoryInstructions.cs

@ -41,6 +41,7 @@ namespace ICSharpCode.Decompiler.IL @@ -41,6 +41,7 @@ namespace ICSharpCode.Decompiler.IL
{
if (options.UseFieldSugar) {
if (this.MatchLdFld(out var target, out var field)) {
ILRange.WriteTo(output, options);
output.Write("ldfld ");
Disassembler.DisassemblerHelpers.WriteOperand(output, field);
output.Write('(');
@ -48,6 +49,7 @@ namespace ICSharpCode.Decompiler.IL @@ -48,6 +49,7 @@ namespace ICSharpCode.Decompiler.IL
output.Write(')');
return;
} else if (this.MatchLdsFld(out field)) {
ILRange.WriteTo(output, options);
output.Write("ldsfld ");
Disassembler.DisassemblerHelpers.WriteOperand(output, field);
return;
@ -63,6 +65,7 @@ namespace ICSharpCode.Decompiler.IL @@ -63,6 +65,7 @@ namespace ICSharpCode.Decompiler.IL
{
if (options.UseFieldSugar) {
if (this.MatchStFld(out var target, out var field, out var value)) {
ILRange.WriteTo(output, options);
output.Write("stfld ");
Disassembler.DisassemblerHelpers.WriteOperand(output, field);
output.Write('(');
@ -72,6 +75,7 @@ namespace ICSharpCode.Decompiler.IL @@ -72,6 +75,7 @@ namespace ICSharpCode.Decompiler.IL
output.Write(')');
return;
} else if (this.MatchStsFld(out field, out value)) {
ILRange.WriteTo(output, options);
output.Write("stsfld ");
Disassembler.DisassemblerHelpers.WriteOperand(output, field);
output.Write('(');

1
ICSharpCode.Decompiler/IL/Instructions/NullCoalescingInstruction.cs

@ -91,6 +91,7 @@ namespace ICSharpCode.Decompiler.IL @@ -91,6 +91,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
output.Write("(");
valueInst.WriteTo(output, options);

4
ICSharpCode.Decompiler/IL/Instructions/SimpleInstruction.cs

@ -26,6 +26,7 @@ namespace ICSharpCode.Decompiler.IL @@ -26,6 +26,7 @@ namespace ICSharpCode.Decompiler.IL
{
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
// the non-custom WriteTo would add useless parentheses
}
@ -37,6 +38,7 @@ namespace ICSharpCode.Decompiler.IL @@ -37,6 +38,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
if (!string.IsNullOrEmpty(Comment)) {
output.Write(" // " + Comment);
@ -60,6 +62,7 @@ namespace ICSharpCode.Decompiler.IL @@ -60,6 +62,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
if (!string.IsNullOrEmpty(Message)) {
output.Write("(\"");
@ -86,6 +89,7 @@ namespace ICSharpCode.Decompiler.IL @@ -86,6 +89,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
if (!string.IsNullOrEmpty(Message)) {
output.Write("(\"");

1
ICSharpCode.Decompiler/IL/Instructions/StringToInt.cs

@ -32,6 +32,7 @@ namespace ICSharpCode.Decompiler.IL @@ -32,6 +32,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write("string.to.int (");
Argument.WriteTo(output, options);
output.Write(", { ");

2
ICSharpCode.Decompiler/IL/Instructions/SwitchInstruction.cs

@ -76,6 +76,7 @@ namespace ICSharpCode.Decompiler.IL @@ -76,6 +76,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write("switch");
if (IsLifted)
output.Write(".lifted");
@ -180,6 +181,7 @@ namespace ICSharpCode.Decompiler.IL @@ -180,6 +181,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.WriteDefinition("case", this, isLocal: true);
output.Write(' ');
if (HasNullLabel) {

4
ICSharpCode.Decompiler/IL/Instructions/TryInstruction.cs

@ -67,6 +67,7 @@ namespace ICSharpCode.Decompiler.IL @@ -67,6 +67,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(".try ");
TryBlock.WriteTo(output, options);
foreach (var handler in Handlers) {
@ -161,6 +162,7 @@ namespace ICSharpCode.Decompiler.IL @@ -161,6 +162,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write("catch ");
if (variable != null) {
output.WriteDefinition(variable.Name, variable);
@ -202,6 +204,7 @@ namespace ICSharpCode.Decompiler.IL @@ -202,6 +204,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(".try ");
TryBlock.WriteTo(output, options);
output.Write(" finally ");
@ -297,6 +300,7 @@ namespace ICSharpCode.Decompiler.IL @@ -297,6 +300,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(".try ");
TryBlock.WriteTo(output, options);
output.Write(" fault ");

1
ICSharpCode.Decompiler/IL/Instructions/UnaryInstruction.cs

@ -51,6 +51,7 @@ namespace ICSharpCode.Decompiler.IL @@ -51,6 +51,7 @@ namespace ICSharpCode.Decompiler.IL
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write(OpCode);
if (IsLifted) {
output.Write(".lifted");

1
ICSharpCode.Decompiler/IL/Instructions/UsingInstruction.cs

@ -38,6 +38,7 @@ namespace ICSharpCode.Decompiler.IL @@ -38,6 +38,7 @@ namespace ICSharpCode.Decompiler.IL
{
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
{
ILRange.WriteTo(output, options);
output.Write("using (");
Variable.WriteTo(output);
output.Write(" = ");

Loading…
Cancel
Save