From d6d1f08492233eec8901bdd57f286c68adab5249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Fri, 9 Mar 2012 10:33:09 +0100 Subject: [PATCH] Fixed ignored unit test. --- .../Parser/CSharpParser.cs | 16 +++++++++++----- .../Parser/mcs/cs-parser.cs | 4 +++- .../CSharp/Resolver/ObjectCreationTests.cs | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs b/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs index 910657ebcf..0199c8343d 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs @@ -2699,7 +2699,14 @@ namespace ICSharpCode.NRefactory.CSharp if (minit == null) return null; var init = new ArrayInitializerExpression (); + var braceLocs = LocationsBag.GetLocations (minit); + if (braceLocs != null) + init.AddChild (new CSharpTokenNode (Convert (braceLocs [0])), ArrayInitializerExpression.Roles.LBrace); + AddConvertCollectionOrObjectInitializers (init, minit); + if (braceLocs != null && braceLocs.Count > 1) + init.AddChild (new CSharpTokenNode (Convert (braceLocs [1])), ArrayInitializerExpression.Roles.RBrace); + return init; } @@ -2715,10 +2722,8 @@ namespace ICSharpCode.NRefactory.CSharp if (collectionInit != null) { var parent = new ArrayInitializerExpression (); - var braceLocs = LocationsBag.GetLocations (expr); - if (braceLocs != null) - parent.AddChild (new CSharpTokenNode (Convert (braceLocs [0])), ArrayInitializerExpression.Roles.LBrace); - + parent.AddChild (new CSharpTokenNode (Convert (expr.Location)), ArrayInitializerExpression.Roles.LBrace); + for (int i = 0; i < collectionInit.Arguments.Count; i++) { var arg = collectionInit.Arguments [i] as CollectionElementInitializer.ElementInitializerArgument; if (arg == null) @@ -2726,8 +2731,9 @@ namespace ICSharpCode.NRefactory.CSharp parent.AddChild ((ICSharpCode.NRefactory.CSharp.Expression)arg.Expr.Accept (this), ArrayInitializerExpression.Roles.Expression); } + var braceLocs = LocationsBag.GetLocations (expr); if (braceLocs != null) - parent.AddChild (new CSharpTokenNode (Convert (braceLocs [1])), ArrayInitializerExpression.Roles.RBrace); + parent.AddChild (new CSharpTokenNode (Convert (braceLocs [0])), ArrayInitializerExpression.Roles.RBrace); init.AddChild (parent, ArrayInitializerExpression.Roles.Expression); } else { diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs index 40ad7226c6..cac280879d 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs @@ -6350,8 +6350,10 @@ void case_445() { if (yyVals[-1+yyTop] == null) yyVal = null; - else + else { yyVal = new CollectionElementInitializer ((List)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); + lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); // properly patched upstream + } } void case_446() diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ObjectCreationTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ObjectCreationTests.cs index 0a5c9449d0..a9fd37d1c4 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ObjectCreationTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ObjectCreationTests.cs @@ -173,7 +173,7 @@ class B { Assert.AreEqual("Point.X", result.Member.FullName); } - [Test, Ignore("Parser returns incorrect positions")] + [Test] public void CollectionInitializerTest() { string program = @"using System.Collections.Generic;