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) {