diff options
author | Mike Krüger <mkrueger@xamarin.com> | 2014-02-19 11:46:10 +0400 |
---|---|---|
committer | Mike Krüger <mkrueger@xamarin.com> | 2014-02-19 11:46:28 +0400 |
commit | be4d1c0af84ad64f4f27981e20e5ba40c794d79c (patch) | |
tree | f963c1e0cf677f8a100690bd613df1cea94f8546 /ICSharpCode.NRefactory.CSharp.Refactoring | |
parent | d20744e847326a7c379355a1a5f9ccb75a577a61 (diff) |
Improved CS0618UsageOfObsoleteMemberIssue
Diffstat (limited to 'ICSharpCode.NRefactory.CSharp.Refactoring')
-rw-r--r-- | ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs | 83 |
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); + } } } } - |