Browse Source

Escape compiler-generated names in tests

pull/728/head
Siegfried Pammer 10 years ago
parent
commit
bb544581c9
  1. 28
      ICSharpCode.Decompiler/Tests/Helpers/RemoveCompilerAttribute.cs
  2. 1
      ICSharpCode.Decompiler/Tests/Helpers/Tester.cs

28
ICSharpCode.Decompiler/Tests/Helpers/RemoveCompilerAttribute.cs

@ -34,4 +34,32 @@ namespace ICSharpCode.Decompiler.Tests.Helpers @@ -34,4 +34,32 @@ namespace ICSharpCode.Decompiler.Tests.Helpers
node.AcceptVisitor(this, null);
}
}
class EscapeGeneratedIdentifiers : DepthFirstAstVisitor<object, object>
{
bool IsValid(char ch)
{
if (char.IsLetterOrDigit(ch))
return true;
if (ch == '_')
return true;
return false;
}
string ReplaceInvalid(string s)
{
return string.Concat(s.Select(ch => IsValid(ch) ? ch.ToString() : string.Format("_{0:0000X}", (int)ch)));
}
public override object VisitIdentifier(Identifier identifier, object data)
{
identifier.Name = ReplaceInvalid(identifier.Name);
return null;
}
public void Run(AstNode node)
{
node.AcceptVisitor(this, null);
}
}
}

1
ICSharpCode.Decompiler/Tests/Helpers/Tester.cs

@ -67,6 +67,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers @@ -67,6 +67,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers
CSharpDecompiler decompiler = new CSharpDecompiler(typeSystem);
var syntaxTree = decompiler.DecompileWholeModuleAsSingleFile();
new Helpers.RemoveCompilerAttribute().Run(syntaxTree);
new Helpers.EscapeGeneratedIdentifiers().Run(syntaxTree);
StringWriter output = new StringWriter();
var visitor = new CSharpOutputVisitor(output, FormattingOptionsFactory.CreateSharpDevelop());

Loading…
Cancel
Save