Browse Source

Fixed output of NamedArgumentExpression within object initializers.

pull/124/head
Daniel Grunwald 14 years ago
parent
commit
950e4737fd
  1. 17
      NRefactory/ICSharpCode.NRefactory/CSharp/OutputVisitor/OutputVisitor.cs

17
NRefactory/ICSharpCode.NRefactory/CSharp/OutputVisitor/OutputVisitor.cs

@ -747,7 +747,12 @@ namespace ICSharpCode.NRefactory.CSharp
{ {
StartNode(namedArgumentExpression); StartNode(namedArgumentExpression);
WriteIdentifier(namedArgumentExpression.Identifier); WriteIdentifier(namedArgumentExpression.Identifier);
WriteToken(":", NamedArgumentExpression.Roles.Colon); if (namedArgumentExpression.Parent is ArrayInitializerExpression) {
Space();
WriteToken("=", NamedArgumentExpression.Roles.Assign);
} else {
WriteToken(":", NamedArgumentExpression.Roles.Colon);
}
Space(); Space();
namedArgumentExpression.Expression.AcceptVisitor(this, data); namedArgumentExpression.Expression.AcceptVisitor(this, data);
return EndNode(namedArgumentExpression); return EndNode(namedArgumentExpression);
@ -765,8 +770,14 @@ namespace ICSharpCode.NRefactory.CSharp
StartNode(objectCreateExpression); StartNode(objectCreateExpression);
WriteKeyword("new"); WriteKeyword("new");
objectCreateExpression.Type.AcceptVisitor(this, data); objectCreateExpression.Type.AcceptVisitor(this, data);
Space(policy.SpaceBeforeMethodCallParentheses); bool useParenthesis = objectCreateExpression.Arguments.Any() || objectCreateExpression.Initializer.IsNull;
WriteCommaSeparatedListInParenthesis(objectCreateExpression.Arguments, policy.SpaceWithinMethodCallParentheses); // also use parenthesis if there is an '(' token and this isn't an anonymous type
if (!objectCreateExpression.LParToken.IsNull && !objectCreateExpression.Type.IsNull)
useParenthesis = true;
if (useParenthesis) {
Space(policy.SpaceBeforeMethodCallParentheses);
WriteCommaSeparatedListInParenthesis(objectCreateExpression.Arguments, policy.SpaceWithinMethodCallParentheses);
}
objectCreateExpression.Initializer.AcceptVisitor(this, data); objectCreateExpression.Initializer.AcceptVisitor(this, data);
return EndNode(objectCreateExpression); return EndNode(objectCreateExpression);
} }

Loading…
Cancel
Save