Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/NRefactory.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@xamarin.com>2014-02-19 11:46:10 +0400
committerMike Krüger <mkrueger@xamarin.com>2014-02-19 11:46:28 +0400
commitbe4d1c0af84ad64f4f27981e20e5ba40c794d79c (patch)
treef963c1e0cf677f8a100690bd613df1cea94f8546 /ICSharpCode.NRefactory.CSharp.Refactoring
parentd20744e847326a7c379355a1a5f9ccb75a577a61 (diff)
Improved CS0618UsageOfObsoleteMemberIssue
Diffstat (limited to 'ICSharpCode.NRefactory.CSharp.Refactoring')
-rw-r--r--ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs83
1 files changed, 82 insertions, 1 deletions
diff --git a/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs b/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs
index 2edffb26..479d7daa 100644
--- a/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs
+++ b/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs
@@ -104,7 +104,88 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
base.VisitBinaryOperatorExpression(binaryOperatorExpression);
Check(ctx.Resolve(binaryOperatorExpression), binaryOperatorExpression.OperatorToken);
}
+
+ bool IsObsolete(EntityDeclaration entity)
+ {
+ foreach (var section in entity.Attributes) {
+ foreach (var attr in section.Attributes) {
+ var rr = ctx.Resolve(attr);
+ if (rr.Type.Name == "ObsoleteAttribute" && rr.Type.Namespace == "System")
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public override void VisitTypeDeclaration(TypeDeclaration typeDeclaration)
+ {
+ if (IsObsolete(typeDeclaration))
+ return;
+ base.VisitTypeDeclaration(typeDeclaration);
+ }
+
+ public override void VisitMethodDeclaration(MethodDeclaration methodDeclaration)
+ {
+ if (IsObsolete(methodDeclaration))
+ return;
+ base.VisitMethodDeclaration(methodDeclaration);
+ }
+
+ public override void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration)
+ {
+ if (IsObsolete(propertyDeclaration))
+ return;
+ base.VisitPropertyDeclaration(propertyDeclaration);
+ }
+
+ public override void VisitAccessor(Accessor accessor)
+ {
+ if (IsObsolete(accessor))
+ return;
+ base.VisitAccessor(accessor);
+ }
+
+ public override void VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration)
+ {
+ if (IsObsolete(indexerDeclaration))
+ return;
+ base.VisitIndexerDeclaration(indexerDeclaration);
+ }
+
+ public override void VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration)
+ {
+ if (IsObsolete(eventDeclaration))
+ return;
+ base.VisitCustomEventDeclaration(eventDeclaration);
+ }
+
+ public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
+ {
+ if (IsObsolete(fieldDeclaration))
+ return;
+ base.VisitFieldDeclaration(fieldDeclaration);
+ }
+
+ public override void VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration)
+ {
+ if (IsObsolete(constructorDeclaration))
+ return;
+ base.VisitConstructorDeclaration(constructorDeclaration);
+ }
+
+ public override void VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration)
+ {
+ if (IsObsolete(destructorDeclaration))
+ return;
+ base.VisitDestructorDeclaration(destructorDeclaration);
+ }
+
+ public override void VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration)
+ {
+ if (IsObsolete(operatorDeclaration))
+ return;
+ base.VisitOperatorDeclaration(operatorDeclaration);
+ }
}
}
}
-