Browse Source

Fix type names in ILAst debug output.

pull/873/merge
Daniel Grunwald 8 years ago
parent
commit
d0f1b60a04
  1. 5
      ICSharpCode.Decompiler/IL/InstructionOutputExtensions.cs
  2. 38
      ICSharpCode.Decompiler/IL/Instructions.cs
  3. 8
      ICSharpCode.Decompiler/IL/Instructions.tt

5
ICSharpCode.Decompiler/IL/InstructionOutputExtensions.cs

@ -40,11 +40,14 @@ namespace ICSharpCode.Decompiler.IL @@ -40,11 +40,14 @@ namespace ICSharpCode.Decompiler.IL
public static void WriteTo(this IType type, ITextOutput output, ILNameSyntax nameSyntax = ILNameSyntax.ShortTypeName)
{
output.WriteReference(type.ToString(), type);
output.WriteReference(type.ReflectionName, type);
}
public static void WriteTo(this ISymbol symbol, ITextOutput output)
{
if (symbol is IMethod method && method.IsConstructor)
output.WriteReference(method.DeclaringType?.Name + "." + method.Name, symbol);
else
output.WriteReference(symbol.Name, symbol);
}
}

38
ICSharpCode.Decompiler/IL/Instructions.cs

@ -2635,7 +2635,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2635,7 +2635,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, method);
method.WriteTo(output);
}
public override void AcceptVisitor(ILVisitor visitor)
{
@ -2682,7 +2682,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2682,7 +2682,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, method);
method.WriteTo(output);
output.Write('(');
Argument.WriteTo(output, options);
output.Write(')');
@ -2723,7 +2723,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2723,7 +2723,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
}
public override void AcceptVisitor(ILVisitor visitor)
{
@ -2761,7 +2761,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2761,7 +2761,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, member);
member.WriteTo(output);
}
public override void AcceptVisitor(ILVisitor visitor)
{
@ -2894,7 +2894,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2894,7 +2894,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, field);
field.WriteTo(output);
output.Write('(');
this.target.WriteTo(output, options);
output.Write(')');
@ -2935,7 +2935,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2935,7 +2935,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, field);
field.WriteTo(output);
}
public override void AcceptVisitor(ILVisitor visitor)
{
@ -2982,7 +2982,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2982,7 +2982,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
output.Write('(');
Argument.WriteTo(output, options);
output.Write(')');
@ -3023,7 +3023,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3023,7 +3023,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
output.Write('(');
Argument.WriteTo(output, options);
output.Write(')');
@ -3129,7 +3129,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3129,7 +3129,7 @@ namespace ICSharpCode.Decompiler.IL
output.Write("unaligned(" + UnalignedPrefix + ").");
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
output.Write('(');
this.target.WriteTo(output, options);
output.Write(')');
@ -3253,7 +3253,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3253,7 +3253,7 @@ namespace ICSharpCode.Decompiler.IL
output.Write("unaligned(" + UnalignedPrefix + ").");
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
output.Write('(');
this.target.WriteTo(output, options);
output.Write(", ");
@ -3305,7 +3305,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3305,7 +3305,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
output.Write('(');
Argument.WriteTo(output, options);
output.Write(')');
@ -3355,7 +3355,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3355,7 +3355,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
output.Write('(');
Argument.WriteTo(output, options);
output.Write(')');
@ -3405,7 +3405,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3405,7 +3405,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
output.Write('(');
Argument.WriteTo(output, options);
output.Write(')');
@ -3515,7 +3515,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3515,7 +3515,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
output.Write('(');
bool first = true;
foreach (var indices in Indices) {
@ -3560,7 +3560,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3560,7 +3560,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
}
public override void AcceptVisitor(ILVisitor visitor)
{
@ -3672,7 +3672,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3672,7 +3672,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
}
public override void AcceptVisitor(ILVisitor visitor)
{
@ -3859,7 +3859,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3859,7 +3859,7 @@ namespace ICSharpCode.Decompiler.IL
output.Write("readonly.");
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
output.Write('(');
this.array.WriteTo(output, options);
foreach (var indices in Indices) {
@ -3997,7 +3997,7 @@ namespace ICSharpCode.Decompiler.IL @@ -3997,7 +3997,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
output.Write('(');
Argument.WriteTo(output, options);
output.Write(')');
@ -4075,7 +4075,7 @@ namespace ICSharpCode.Decompiler.IL @@ -4075,7 +4075,7 @@ namespace ICSharpCode.Decompiler.IL
{
output.Write(OpCode);
output.Write(' ');
Disassembler.DisassemblerHelpers.WriteOperand(output, type);
type.WriteTo(output);
output.Write('(');
Argument.WriteTo(output, options);
output.Write(')');

8
ICSharpCode.Decompiler/IL/Instructions.tt

@ -913,7 +913,7 @@ protected override void Disconnected() @@ -913,7 +913,7 @@ protected override void Disconnected()
+ "public IField Field { get { return field; } }");
opCode.GenerateWriteTo = true;
opCode.WriteOperand.Add("output.Write(' ');");
opCode.WriteOperand.Add("Disassembler.DisassemblerHelpers.WriteOperand(output, field);");
opCode.WriteOperand.Add("field.WriteTo(output);");
opCode.Interfaces.Add("IInstructionWithFieldOperand");
};
@ -927,7 +927,7 @@ protected override void Disconnected() @@ -927,7 +927,7 @@ protected override void Disconnected()
+ "public IType Type { get { return type; } }");
opCode.GenerateWriteTo = true;
opCode.WriteOperand.Add("output.Write(' ');");
opCode.WriteOperand.Add("Disassembler.DisassemblerHelpers.WriteOperand(output, type);");
opCode.WriteOperand.Add("type.WriteTo(output);");
};
static Action<OpCode> HasMethodOperand = opCode => {
@ -940,7 +940,7 @@ protected override void Disconnected() @@ -940,7 +940,7 @@ protected override void Disconnected()
+ "public IMethod Method { get { return method; } }");
opCode.GenerateWriteTo = true;
opCode.WriteOperand.Add("output.Write(' ');");
opCode.WriteOperand.Add("Disassembler.DisassemblerHelpers.WriteOperand(output, method);");
opCode.WriteOperand.Add("method.WriteTo(output);");
opCode.Interfaces.Add("IInstructionWithMethodOperand");
};
@ -954,7 +954,7 @@ protected override void Disconnected() @@ -954,7 +954,7 @@ protected override void Disconnected()
+ "public IMember Member { get { return member; } }");
opCode.GenerateWriteTo = true;
opCode.WriteOperand.Add("output.Write(' ');");
opCode.WriteOperand.Add("Disassembler.DisassemblerHelpers.WriteOperand(output, member);");
opCode.WriteOperand.Add("member.WriteTo(output);");
};
// LoadConstant trait: the instruction loads a compile-time constant. Implies NoArguments.

Loading…
Cancel
Save