From 5e6013e4a873a81b06db65a992c5597b090e2344 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sun, 16 Feb 2014 11:57:33 +0000 Subject: [PATCH] Fix generated code from T4MVC.tt EnvDTE.CodeType from an external assembly was not returning any members. --- .../Project/Src/EnvDTE/CodeType.cs | 2 +- .../Test/Src/EnvDTE/CodeClass2Tests.cs | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs index df21e1fb93..7c6b283192 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs @@ -121,7 +121,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE members = new CodeElementsList(); members.AddRange(typeDefinition.Members .Where(member => IsInFilter(member.Region)) - .Where(member => !member.Region.End.IsEmpty) + .Where(member => !member.Region.End.IsEmpty || !typeDefinition.ParentAssembly.IsMainAssembly) .Select(member => CreateMember(context, member))); } return members; diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs index 27e029846a..a37125c6d4 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs @@ -381,5 +381,29 @@ namespace PackageManagement.Tests.EnvDTE Assert.AreEqual("Obsolete", attribute.Name); } + + [Test] + public void Members_ClassIsSystemAttributeAsReturnTypeFromClassMethod_HasMembersForSystemAttribute() + { + CreateClass( + "using System;\r\n" + + "class MyClass {\r\n" + + " public Attribute GetAttribute() {\r\n" + + " return null;\r\n" + + " }\r\n" + + "}"); + CodeClass2 returnType = codeClass + .Members + .OfType() + .First(member => member.Name == "GetAttribute") + .Type + .CodeType as CodeClass2; + + List members = returnType.Members.ToList(); + + Assert.AreEqual("System.Attribute", returnType.FullName); + Assert.That(members.Count, Is.GreaterThan(0)); + Assert.IsTrue(members.Any(member => member.Name == "IsDefaultAttribute")); + } } }