/ICSharpCode.Decompiler/Tests/Helpers/RemoveCompilerAttribute.cs
http://github.com/icsharpcode/ILSpy · C# · 38 lines · 35 code · 3 blank · 0 comment · 19 complexity · bdd856e97b636839c633784765fd8d48 MD5 · raw file
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using ICSharpCode.Decompiler.Ast.Transforms;
- using ICSharpCode.NRefactory.CSharp;
- namespace ICSharpCode.Decompiler.Tests.Helpers
- {
- class RemoveCompilerAttribute : DepthFirstAstVisitor<object, object>, IAstTransform
- {
- public override object VisitAttribute(NRefactory.CSharp.Attribute attribute, object data)
- {
- var section = (AttributeSection)attribute.Parent;
- SimpleType type = attribute.Type as SimpleType;
- if (section.AttributeTarget == "assembly" &&
- (type.Identifier == "CompilationRelaxations" || type.Identifier == "RuntimeCompatibility" || type.Identifier == "SecurityPermission" || type.Identifier == "AssemblyVersion" || type.Identifier == "Debuggable"))
- {
- attribute.Remove();
- if (section.Attributes.Count == 0)
- section.Remove();
- }
- if (section.AttributeTarget == "module" && type.Identifier == "UnverifiableCode")
- {
- attribute.Remove();
- if (section.Attributes.Count == 0)
- section.Remove();
- }
- return null;
- }
- public void Run(AstNode node)
- {
- node.AcceptVisitor(this, null);
- }
- }
- }