diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs index 6d4f5ebe2a..b1d1eac5d1 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs @@ -320,6 +320,8 @@ namespace Grunwald.BooBinding.CodeCompletion methods.Add(ICSharpCode.SharpDevelop.Dom.Constructor.CreateDefault(trr.ResolvedClass)); } ResolveInvocation(methods, node.Arguments); + if (resolveResult != null) + resolveResult.ResolvedType = trr.ResolvedType; } else { ClearResult(); } diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs index 09d51a50d5..acb5959bbe 100644 --- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs +++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs @@ -325,8 +325,14 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver return CreateMemberResolveResult(Constructor.CreateDefault(c)); } } - IReturnType[] typeParameters = null; // TODO: get constructor type parameters - return CreateMemberResolveResult(typeVisitor.FindOverload(constructors, typeParameters, ((ObjectCreateExpression)expr).Parameters, null)); + IReturnType[] typeParameters = null; + if (type.TypeArguments != null) { + typeParameters = new IReturnType[type.TypeArguments.Count]; + type.TypeArguments.CopyTo(typeParameters, 0); + } + ResolveResult rr = CreateMemberResolveResult(typeVisitor.FindOverload(constructors, typeParameters, ((ObjectCreateExpression)expr).Parameters, null)); + rr.ResolvedType = type; + return rr; } return new ResolveResult(callingClass, callingMember, type); }