diff --git a/ICSharpCode.Decompiler/IL/InstructionOutputExtensions.cs b/ICSharpCode.Decompiler/IL/InstructionOutputExtensions.cs index 1bc8681ca..d5a79cb1a 100644 --- a/ICSharpCode.Decompiler/IL/InstructionOutputExtensions.cs +++ b/ICSharpCode.Decompiler/IL/InstructionOutputExtensions.cs @@ -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 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}] "); + } } } diff --git a/ICSharpCode.Decompiler/IL/Instructions.cs b/ICSharpCode.Decompiler/IL/Instructions.cs index 2afb023df..cf68e4446 100644 --- a/ICSharpCode.Decompiler/IL/Instructions.cs +++ b/ICSharpCode.Decompiler/IL/Instructions.cs @@ -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 } 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 } 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 } 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 } 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 } 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 } 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 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 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 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 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 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 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 } 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 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 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 } 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 } 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 } 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 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 } 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 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 } 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 } 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 } 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 } 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 } 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 } 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 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 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 } 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 } 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 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 } 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 } 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 } 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 } public override void WriteTo(ITextOutput output, ILAstWritingOptions options) { + ILRange.WriteTo(output, options); output.Write(OpCode); output.Write('('); output.Write(')'); diff --git a/ICSharpCode.Decompiler/IL/Instructions.tt b/ICSharpCode.Decompiler/IL/Instructions.tt index 598763260..59c19a742 100644 --- a/ICSharpCode.Decompiler/IL/Instructions.tt +++ b/ICSharpCode.Decompiler/IL/Instructions.tt @@ -499,6 +499,7 @@ namespace ICSharpCode.Decompiler.IL public IEnumerable WriteToBody { get { + yield return "ILRange.WriteTo(output, options);"; foreach (string line in WriteOpCodePrefix) yield return line; yield return "output.Write(OpCode);"; diff --git a/ICSharpCode.Decompiler/IL/Instructions/BinaryNumericInstruction.cs b/ICSharpCode.Decompiler/IL/Instructions/BinaryNumericInstruction.cs index a1a037443..e409973ab 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/BinaryNumericInstruction.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/BinaryNumericInstruction.cs @@ -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) { diff --git a/ICSharpCode.Decompiler/IL/Instructions/Branch.cs b/ICSharpCode.Decompiler/IL/Instructions/Branch.cs index 7085ab6a1..6248f75f7 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/Branch.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/Branch.cs @@ -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); diff --git a/ICSharpCode.Decompiler/IL/Instructions/CallIndirect.cs b/ICSharpCode.Decompiler/IL/Instructions/CallIndirect.cs index 7b74939a2..a2380d5cf 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/CallIndirect.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/CallIndirect.cs @@ -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('('); diff --git a/ICSharpCode.Decompiler/IL/Instructions/CallInstruction.cs b/ICSharpCode.Decompiler/IL/Instructions/CallInstruction.cs index f846cb754..915ba74bc 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/CallInstruction.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/CallInstruction.cs @@ -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); diff --git a/ICSharpCode.Decompiler/IL/Instructions/Comp.cs b/ICSharpCode.Decompiler/IL/Instructions/Comp.cs index 371cc4723..b4de5e4c2 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/Comp.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/Comp.cs @@ -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); diff --git a/ICSharpCode.Decompiler/IL/Instructions/CompoundAssignmentInstruction.cs b/ICSharpCode.Decompiler/IL/Instructions/CompoundAssignmentInstruction.cs index 7d372c5cf..2b7f34e40 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/CompoundAssignmentInstruction.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/CompoundAssignmentInstruction.cs @@ -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) diff --git a/ICSharpCode.Decompiler/IL/Instructions/Conv.cs b/ICSharpCode.Decompiler/IL/Instructions/Conv.cs index 8ba33dec9..235170a07 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/Conv.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/Conv.cs @@ -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"); diff --git a/ICSharpCode.Decompiler/IL/Instructions/IfInstruction.cs b/ICSharpCode.Decompiler/IL/Instructions/IfInstruction.cs index 09ae5a87c..59845c679 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/IfInstruction.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/IfInstruction.cs @@ -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("); diff --git a/ICSharpCode.Decompiler/IL/Instructions/LdLen.cs b/ICSharpCode.Decompiler/IL/Instructions/LdLen.cs index b654624b0..82f65eb32 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/LdLen.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/LdLen.cs @@ -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); diff --git a/ICSharpCode.Decompiler/IL/Instructions/Leave.cs b/ICSharpCode.Decompiler/IL/Instructions/Leave.cs index 7bdabcc26..38e60cbe1 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/Leave.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/Leave.cs @@ -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(' '); diff --git a/ICSharpCode.Decompiler/IL/Instructions/LockInstruction.cs b/ICSharpCode.Decompiler/IL/Instructions/LockInstruction.cs index 36cd8380e..b38c399bc 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/LockInstruction.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/LockInstruction.cs @@ -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(") {"); diff --git a/ICSharpCode.Decompiler/IL/Instructions/MemoryInstructions.cs b/ICSharpCode.Decompiler/IL/Instructions/MemoryInstructions.cs index bc8236d05..533973dc0 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/MemoryInstructions.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/MemoryInstructions.cs @@ -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 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 { 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 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('('); diff --git a/ICSharpCode.Decompiler/IL/Instructions/NullCoalescingInstruction.cs b/ICSharpCode.Decompiler/IL/Instructions/NullCoalescingInstruction.cs index fd4385d1d..04606493a 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/NullCoalescingInstruction.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/NullCoalescingInstruction.cs @@ -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); diff --git a/ICSharpCode.Decompiler/IL/Instructions/SimpleInstruction.cs b/ICSharpCode.Decompiler/IL/Instructions/SimpleInstruction.cs index 18f5b6f6f..82657c6bb 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/SimpleInstruction.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/SimpleInstruction.cs @@ -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 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 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 public override void WriteTo(ITextOutput output, ILAstWritingOptions options) { + ILRange.WriteTo(output, options); output.Write(OpCode); if (!string.IsNullOrEmpty(Message)) { output.Write("(\""); diff --git a/ICSharpCode.Decompiler/IL/Instructions/StringToInt.cs b/ICSharpCode.Decompiler/IL/Instructions/StringToInt.cs index f804a3928..9ac94e591 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/StringToInt.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/StringToInt.cs @@ -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(", { "); diff --git a/ICSharpCode.Decompiler/IL/Instructions/SwitchInstruction.cs b/ICSharpCode.Decompiler/IL/Instructions/SwitchInstruction.cs index ae828983f..7cba520d6 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/SwitchInstruction.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/SwitchInstruction.cs @@ -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 public override void WriteTo(ITextOutput output, ILAstWritingOptions options) { + ILRange.WriteTo(output, options); output.WriteDefinition("case", this, isLocal: true); output.Write(' '); if (HasNullLabel) { diff --git a/ICSharpCode.Decompiler/IL/Instructions/TryInstruction.cs b/ICSharpCode.Decompiler/IL/Instructions/TryInstruction.cs index 033d1cba0..b53611c42 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/TryInstruction.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/TryInstruction.cs @@ -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 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 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 public override void WriteTo(ITextOutput output, ILAstWritingOptions options) { + ILRange.WriteTo(output, options); output.Write(".try "); TryBlock.WriteTo(output, options); output.Write(" fault "); diff --git a/ICSharpCode.Decompiler/IL/Instructions/UnaryInstruction.cs b/ICSharpCode.Decompiler/IL/Instructions/UnaryInstruction.cs index 52d489a0c..0773fc888 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/UnaryInstruction.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/UnaryInstruction.cs @@ -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"); diff --git a/ICSharpCode.Decompiler/IL/Instructions/UsingInstruction.cs b/ICSharpCode.Decompiler/IL/Instructions/UsingInstruction.cs index 795be5914..2a9e79ce3 100644 --- a/ICSharpCode.Decompiler/IL/Instructions/UsingInstruction.cs +++ b/ICSharpCode.Decompiler/IL/Instructions/UsingInstruction.cs @@ -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(" = ");