From 3a680c137559345379f0daefb725fc2e5ce3c4ed Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 10 Dec 2005 20:50:59 +0000 Subject: [PATCH] Fixed SD2-597: No code completion after "new". git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@872 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../NRefactoryResolver/NRefactoryResolver.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs index d04b1dc120..cbdb0168bb 100644 --- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs +++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs @@ -118,9 +118,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver } expression = expression.TrimStart(); - if (expressionResult.Context.IsObjectCreation) { - expression = "new " + expression; - } return expression; } @@ -159,6 +156,21 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver if (expr == null) { return null; } + if (expressionResult.Context.IsObjectCreation) { + Expression tmp = expr; + while (tmp != null) { + if (tmp is IdentifierExpression) + return ResolveInternal(expr, ExpressionContext.Type); + if (tmp is FieldReferenceExpression) + tmp = (tmp as FieldReferenceExpression).TargetObject; + else + break; + } + expr = ParseExpression("new " + expression); + if (expr == null) { + return null; + } + } } if (expressionResult.Context == ExpressionContext.Attribute) {