Browse Source

Fixed initializer comma locations.

newNRvisualizers
Mike Krüger 15 years ago
parent
commit
618cb984d1
  1. 13
      ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs

13
ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs

@ -2488,8 +2488,6 @@ namespace ICSharpCode.NRefactory.CSharp
if (braceLocs != null) if (braceLocs != null)
init.AddChild (new CSharpTokenNode (Convert (braceLocs[0]), 1), ArrayInitializerExpression.Roles.LBrace); init.AddChild (new CSharpTokenNode (Convert (braceLocs[0]), 1), ArrayInitializerExpression.Roles.LBrace);
AddConvertCollectionOrObjectInitializers (init, minit); AddConvertCollectionOrObjectInitializers (init, minit);
if (braceLocs != null)
init.AddChild (new CSharpTokenNode (Convert (braceLocs[1]), 1), ArrayInitializerExpression.Roles.RBrace);
return init; return init;
} }
@ -2497,7 +2495,7 @@ namespace ICSharpCode.NRefactory.CSharp
{ {
var initLoc = LocationsBag.GetLocations (minit); var initLoc = LocationsBag.GetLocations (minit);
var commaLoc = LocationsBag.GetLocations (minit.Initializers); var commaLoc = LocationsBag.GetLocations (minit.Initializers);
int curComma = commaLoc != null ? commaLoc.Count - 1 : -1; int curComma = 0;
foreach (var expr in minit.Initializers) { foreach (var expr in minit.Initializers) {
var collectionInit = expr as CollectionElementInitializer; var collectionInit = expr as CollectionElementInitializer;
if (collectionInit != null) { if (collectionInit != null) {
@ -2512,17 +2510,13 @@ namespace ICSharpCode.NRefactory.CSharp
if (arg == null) if (arg == null)
continue; continue;
parent.AddChild ((ICSharpCode.NRefactory.CSharp.Expression)arg.Expr.Accept (this), ArrayInitializerExpression.Roles.Expression); parent.AddChild ((ICSharpCode.NRefactory.CSharp.Expression)arg.Expr.Accept (this), ArrayInitializerExpression.Roles.Expression);
if (curComma >= 0)
parent.AddChild (new CSharpTokenNode (Convert (commaLoc[curComma--]), 1), ArrayInitializerExpression.Roles.Comma);
} }
if (braceLocs != null) if (braceLocs != null)
parent.AddChild (new CSharpTokenNode (Convert (braceLocs [1]), 1), ArrayInitializerExpression.Roles.RBrace); parent.AddChild (new CSharpTokenNode (Convert (braceLocs [1]), 1), ArrayInitializerExpression.Roles.RBrace);
init.AddChild (parent, ArrayInitializerExpression.Roles.Expression); init.AddChild (parent, ArrayInitializerExpression.Roles.Expression);
continue; } else {
}
var eleInit = expr as ElementInitializer; var eleInit = expr as ElementInitializer;
if (eleInit != null) { if (eleInit != null) {
var nexpr = new NamedExpression (); var nexpr = new NamedExpression ();
@ -2542,6 +2536,9 @@ namespace ICSharpCode.NRefactory.CSharp
init.AddChild (nexpr, ArrayInitializerExpression.Roles.Expression); init.AddChild (nexpr, ArrayInitializerExpression.Roles.Expression);
} }
}
if (commaLoc != null && curComma < commaLoc.Count)
init.AddChild (new CSharpTokenNode (Convert (commaLoc [curComma++]), 1), ArrayInitializerExpression.Roles.Comma);
} }
if (initLoc != null) { if (initLoc != null) {

Loading…
Cancel
Save