diff --git a/src/VisualStudio/CSharp/Impl/CodeModel/CSharpCodeModelService.cs b/src/VisualStudio/CSharp/Impl/CodeModel/CSharpCodeModelService.cs index 569aae35b255affba723f239abaae0075c2c9d7d..87584ad33cac5ea2a1bb68b57690a42491b7fe73 100644 --- a/src/VisualStudio/CSharp/Impl/CodeModel/CSharpCodeModelService.cs +++ b/src/VisualStudio/CSharp/Impl/CodeModel/CSharpCodeModelService.cs @@ -324,6 +324,10 @@ public override IEnumerable GetAttributeNodes(SyntaxNode parent) { return GetAttributeNodes(parent.Parent); } + else if (parent is AccessorDeclarationSyntax) + { + return GetAttributeNodes(((AccessorDeclarationSyntax)parent).AttributeLists); + } return SpecializedCollections.EmptyEnumerable(); } diff --git a/src/VisualStudio/Core/Impl/CodeModel/InternalElements/CodeAccessorFunction.cs b/src/VisualStudio/Core/Impl/CodeModel/InternalElements/CodeAccessorFunction.cs index 94cdbe6cd6781e222c54b9373b99aa439cad3d0e..b85585399e602c5e0900f7f1826e59cce6695558 100644 --- a/src/VisualStudio/Core/Impl/CodeModel/InternalElements/CodeAccessorFunction.cs +++ b/src/VisualStudio/Core/Impl/CodeModel/InternalElements/CodeAccessorFunction.cs @@ -94,7 +94,10 @@ protected override string GetFullName() public EnvDTE.CodeElements Attributes { - get { return EmptyCollection.Create(this.State, this); } + get + { + return AttributeCollection.Create(this.State, this); + } } public EnvDTE.vsCMAccess Access diff --git a/src/VisualStudio/Core/Test/CodeModel/AbstractCodeFunctionTests.vb b/src/VisualStudio/Core/Test/CodeModel/AbstractCodeFunctionTests.vb index 13593f0849a084e5cea6b94e192cd7f84e04d505..d136943717653c96e526165874069bf36553e4d8 100644 --- a/src/VisualStudio/Core/Test/CodeModel/AbstractCodeFunctionTests.vb +++ b/src/VisualStudio/Core/Test/CodeModel/AbstractCodeFunctionTests.vb @@ -18,6 +18,10 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.CodeModel Return codeElement.Access End Function + Protected Overrides Function GetAttributes(codeElement As EnvDTE80.CodeFunction2) As EnvDTE.CodeElements + Return codeElement.Attributes + End Function + Protected Overrides Function GetComment(codeElement As EnvDTE80.CodeFunction2) As String Return codeElement.Comment End Function diff --git a/src/VisualStudio/Core/Test/CodeModel/CSharp/CodeFunctionTests.vb b/src/VisualStudio/Core/Test/CodeModel/CSharp/CodeFunctionTests.vb index 53b5e40e495e0ef765b1408d7980c0b7ce33d2b3..6b9d7e5f170dbbf04637ce140db7db0b115e8ea7 100644 --- a/src/VisualStudio/Core/Test/CodeModel/CSharp/CodeFunctionTests.vb +++ b/src/VisualStudio/Core/Test/CodeModel/CSharp/CodeFunctionTests.vb @@ -146,6 +146,67 @@ interface I #End Region +#Region "Attribute Tests" + + + Public Sub PropertyGetAttribute() + Dim code = + +public class Class1 +{ + public int Property1 + { + [Obsolete] + $$get + { + return 0; + } + } +} + + + TestAttributes(code, IsElement("Obsolete")) + End Sub + + + + Public Sub PropertySetAttribute() + Dim code = + +public class Class1 +{ + public int Property1 + { + [Obsolete] + $$set + { + } + } +} + + + TestAttributes(code, IsElement("Obsolete")) + End Sub + + + + Public Sub Attribute_1() + Dim code = + +class Class2 +{ + [Obsolete] + void $$F() + { + + } +} + + + TestAttributes(code, IsElement("Obsolete")) + End Sub +#End Region + #Region "CanOverride tests" diff --git a/src/VisualStudio/Core/Test/CodeModel/VisualBasic/CodeFunctionTests.vb b/src/VisualStudio/Core/Test/CodeModel/VisualBasic/CodeFunctionTests.vb index bed755987ba69c62521ec7c500cd607115d67174..f73b183f29d05859b04d28bf553c36dcac87f582 100644 --- a/src/VisualStudio/Core/Test/CodeModel/VisualBasic/CodeFunctionTests.vb +++ b/src/VisualStudio/Core/Test/CodeModel/VisualBasic/CodeFunctionTests.vb @@ -515,6 +515,60 @@ End Interface #End Region +#Region "Attribute Tests" + + + Public Sub PropertyGetAttribute() + Dim code = + +Public Class Class1 + Public Property Property1 As Integer + <Obsolete> + $$Get + Return 0 + End Get + End Property +End Class + + + TestAttributes(code, IsElement("Obsolete")) + End Sub + + + + Public Sub PropertySetAttribute() + Dim code = + +Public Class Class1 + Public Property Property1 As Integer + <Obsolete> + $$Set(value As Integer) + + End Set + End Property +End Class + + + TestAttributes(code, IsElement("Obsolete")) + End Sub + + + + Public Sub Attribute_1() + Dim code = + +Class Program + <Obsolete> + Sub F$$() + + End Sub +End Class + + + TestAttributes(code, IsElement("Obsolete")) + End Sub +#End Region + #Region "CanOverride tests"