From 0f2cd67515dbef2a9600382c407a625fecf5e7c6 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sun, 31 Aug 2014 20:19:25 +0200 Subject: [PATCH] Add message text to CS0618UsageOfObsoleteMemberIssue --- .../CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs b/src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs index 479d7daa0c..3c01155028 100644 --- a/src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs +++ b/src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs @@ -72,7 +72,11 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring var attr = member.Attributes.FirstOrDefault(a => a.AttributeType.Name == "ObsoleteAttribute" && a.AttributeType.Namespace == "System"); if (attr == null) return; - AddIssue(new CodeIssue(nodeToMark, string.Format(ctx.TranslateString("'{0}' is obsolete"), member.FullName))); + var message = attr.PositionalArguments.SingleOrDefault(arg => !arg.IsError && arg.ConstantValue is string); + if (message != null) + AddIssue(new CodeIssue(nodeToMark, string.Format(ctx.TranslateString("'{0}' is obsolete: '{1}'"), member.FullName, message.ConstantValue))); + else + AddIssue(new CodeIssue(nodeToMark, string.Format(ctx.TranslateString("'{0}' is obsolete"), member.FullName))); } public override void VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression) @@ -109,7 +113,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring { foreach (var section in entity.Attributes) { foreach (var attr in section.Attributes) { - var rr = ctx.Resolve(attr); + var rr = ctx.Resolve(attr); if (rr.Type.Name == "ObsoleteAttribute" && rr.Type.Namespace == "System") return true; }