public override object Visit(NewAnonymousType newAnonymousType) { var result = new AnonymousTypeCreateExpression(); var location = LocationsBag.GetLocations(newAnonymousType); result.AddChild(new CSharpTokenNode(Convert(newAnonymousType.Location), ObjectCreateExpression.NewKeywordRole), ObjectCreateExpression.NewKeywordRole); if (location != null) result.AddChild(new CSharpTokenNode(Convert(location [0]), Roles.LBrace), Roles.LBrace); if (newAnonymousType.Parameters != null) { foreach (var par in newAnonymousType.Parameters) { if (par == null) continue; var parLocation = LocationsBag.GetLocations(par); if (parLocation == null) { if (par.Expr != null) result.AddChild((Expression)par.Expr.Accept(this), Roles.Expression); } else { var namedExpression = new NamedExpression(); namedExpression.AddChild(Identifier.Create(par.Name, Convert(par.Location)), Roles.Identifier); namedExpression.AddChild(new CSharpTokenNode(Convert(parLocation [0]), Roles.Assign), Roles.Assign); if (par.Expr != null) namedExpression.AddChild((Expression)par.Expr.Accept(this), Roles.Expression); result.AddChild(namedExpression, Roles.Expression); } } } if (location != null && location.Count > 1) result.AddChild(new CSharpTokenNode(Convert(location [1]), Roles.RBrace), Roles.RBrace); return result; }
public override object Visit (NewAnonymousType newAnonymousType) { var result = new AnonymousTypeCreateExpression (); if (newAnonymousType.Parameters == null) return result; foreach (var par in newAnonymousType.Parameters) { var location = LocationsBag.GetLocations (par); if (location == null) { if (par.Expr != null) result.AddChild ((Expression)par.Expr.Accept (this), AnonymousTypeCreateExpression.Roles.Expression); } else { var namedExpression = new NamedExpression (); namedExpression.AddChild (Identifier.Create (par.Name, Convert (par.Location)), AnonymousTypeCreateExpression.Roles.Identifier); namedExpression.AddChild (new CSharpTokenNode (Convert (location[0]), 1), AnonymousTypeCreateExpression.Roles.Assign); if (par.Expr != null) namedExpression.AddChild ((Expression)par.Expr.Accept (this), AnonymousTypeCreateExpression.Roles.Expression); result.AddChild (namedExpression, AnonymousTypeCreateExpression.Roles.Expression); } } return result; }