Browse Source

Fixed initializer comma locations.

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

23
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) {
@ -2505,31 +2503,27 @@ namespace ICSharpCode.NRefactory.CSharp
var braceLocs = LocationsBag.GetLocations (expr); var braceLocs = LocationsBag.GetLocations (expr);
if (braceLocs != null) if (braceLocs != null)
parent.AddChild (new CSharpTokenNode (Convert (braceLocs[0]), 1), ArrayInitializerExpression.Roles.LBrace); parent.AddChild (new CSharpTokenNode (Convert (braceLocs [0]), 1), ArrayInitializerExpression.Roles.LBrace);
for (int i = 0; i < collectionInit.Arguments.Count; i++) { for (int i = 0; i < collectionInit.Arguments.Count; i++) {
var arg = collectionInit.Arguments[i] as CollectionElementInitializer.ElementInitializerArgument; var arg = collectionInit.Arguments [i] as CollectionElementInitializer.ElementInitializerArgument;
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 ();
nexpr.AddChild (Identifier.Create (eleInit.Name, Convert(eleInit.Location)), NamedArgumentExpression.Roles.Identifier); nexpr.AddChild (Identifier.Create (eleInit.Name, Convert (eleInit.Location)), NamedArgumentExpression.Roles.Identifier);
var assignLoc = LocationsBag.GetLocations (eleInit); var assignLoc = LocationsBag.GetLocations (eleInit);
if (assignLoc != null) if (assignLoc != null)
nexpr.AddChild (new CSharpTokenNode (Convert (assignLoc[0]), 1), NamedArgumentExpression.Roles.Assign); nexpr.AddChild (new CSharpTokenNode (Convert (assignLoc [0]), 1), NamedArgumentExpression.Roles.Assign);
if (eleInit.Source != null) { if (eleInit.Source != null) {
if (eleInit.Source is CollectionOrObjectInitializers) { if (eleInit.Source is CollectionOrObjectInitializers) {
var arrInit = new ArrayInitializerExpression (); var arrInit = new ArrayInitializerExpression ();
@ -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