Browse Source

Fix generated code from T4MVC.tt

EnvDTE.CodeType from an external assembly was not returning any
members.
pull/375/head
Matt Ward 12 years ago
parent
commit
5e6013e4a8
  1. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs
  2. 24
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs

2
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs

@ -121,7 +121,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -121,7 +121,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
members = new CodeElementsList<CodeElement>();
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;

24
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs

@ -381,5 +381,29 @@ namespace PackageManagement.Tests.EnvDTE @@ -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<CodeFunction2>()
.First(member => member.Name == "GetAttribute")
.Type
.CodeType as CodeClass2;
List<CodeElement> 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"));
}
}
}

Loading…
Cancel
Save