diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj index 61c82c065f..ab3f64091e 100644 --- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj +++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj @@ -98,7 +98,7 @@ - + diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs index ff37a0c698..e9673ee5e5 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs @@ -52,7 +52,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE } public virtual CodeElements Parameters { - get { return new CodeParameters(method.Parameters); } + get { return new CodeParameters(method.ProjectContent, method.Parameters); } } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameter.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameter.cs index 8cc7370954..b571566266 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameter.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameter.cs @@ -8,10 +8,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE { public class CodeParameter : CodeElement { + IProjectContent projectContent; IParameter parameter; - public CodeParameter(IParameter parameter) + public CodeParameter(IProjectContent projectContent, IParameter parameter) { + this.projectContent = projectContent; this.parameter = parameter; } @@ -22,5 +24,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE public override string Name { get { return parameter.Name; } } + + public virtual CodeTypeRef2 Type { + get { return new CodeTypeRef2(projectContent, null, parameter.ReturnType); } + } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeMethodOrPropertyParameters.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameters.cs similarity index 72% rename from src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeMethodOrPropertyParameters.cs rename to src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameters.cs index 72a97e700a..97d7de2a22 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeMethodOrPropertyParameters.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameters.cs @@ -9,8 +9,11 @@ namespace ICSharpCode.PackageManagement.EnvDTE { public class CodeParameters : CodeElementsList { - public CodeParameters(IEnumerable parameters) + IProjectContent projectContent; + + public CodeParameters(IProjectContent projectContent, IEnumerable parameters) { + this.projectContent = projectContent; AddParameters(parameters); } @@ -23,7 +26,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE void AddParameters(IParameter parameter) { - AddCodeElement(new CodeParameter(parameter)); + AddCodeElement(new CodeParameter(projectContent, parameter)); } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty2.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty2.cs index 0f3ea681ee..30b4d41513 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty2.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty2.cs @@ -32,7 +32,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE } public CodeElements Parameters { - get { return new CodeParameters(Property.Parameters); } + get { return new CodeParameters(null, Property.Parameters); } } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs index 6b444cf164..226bd39341 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs @@ -54,6 +54,11 @@ namespace PackageManagement.Tests.EnvDTE helper.AddParameter(name); } + void AddParameterToMethod(string type, string name) + { + helper.AddParameter(type, name); + } + [Test] public void Access_PublicFunction_ReturnsPublic() { @@ -170,5 +175,27 @@ namespace PackageManagement.Tests.EnvDTE Assert.AreEqual("test", parameter.Name); } + + [Test] + public void Parameters_MethodHasOneStringParameter_ReturnsOneCodeParameterWithStringType() + { + AddParameterToMethod("System.String", "test"); + CreatePublicFunction("MyClass.MyMethod"); + + CodeParameter parameter = codeFunction.Parameters.FirstCodeParameterOrDefault(); + + Assert.AreEqual("System.String", parameter.Type.AsFullName); + } + + [Test] + public void Parameters_MethodHasOneStringParameter_CreatesCodeParameterWithProjectContent() + { + AddParameterToMethod("System.String", "test"); + CreatePublicFunction("MyClass.MyMethod"); + + CodeParameter parameter = codeFunction.Parameters.FirstCodeParameterOrDefault(); + + Assert.AreEqual("string", parameter.Type.AsString); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeParameterTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeParameterTests.cs index b4734167d9..5fd217f712 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeParameterTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeParameterTests.cs @@ -14,7 +14,7 @@ namespace PackageManagement.Tests.EnvDTE void CreateParameter() { - parameter = new CodeParameter(null); + parameter = new CodeParameter(null, null); } [Test] diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodOrPropertyHelper.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodOrPropertyHelper.cs index 68e00cdb3b..67fa616555 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodOrPropertyHelper.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodOrPropertyHelper.cs @@ -13,9 +13,20 @@ namespace PackageManagement.Tests.Helpers public List parameters = new List(); public void AddParameter(string name) + { + AddParameter("System.String", name); + } + + public void AddParameter(string type, string name) { IParameter parameter = MockRepository.GenerateStub(); parameter.Stub(p => p.Name).Return(name); + + var returnTypeHelper = new ReturnTypeHelper(); + returnTypeHelper.CreateReturnType("System.String"); + returnTypeHelper.AddDotNetName("System.String"); + parameter.ReturnType = returnTypeHelper.ReturnType; + parameters.Add(parameter); } }