Browse Source

Fixed ignored unit test.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
d6d1f08492
  1. 14
      ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs
  2. 4
      ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs
  3. 2
      ICSharpCode.NRefactory.Tests/CSharp/Resolver/ObjectCreationTests.cs

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

@ -2699,7 +2699,14 @@ namespace ICSharpCode.NRefactory.CSharp
if (minit == null) if (minit == null)
return null; return null;
var init = new ArrayInitializerExpression (); 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); AddConvertCollectionOrObjectInitializers (init, minit);
if (braceLocs != null && braceLocs.Count > 1)
init.AddChild (new CSharpTokenNode (Convert (braceLocs [1])), ArrayInitializerExpression.Roles.RBrace);
return init; return init;
} }
@ -2715,9 +2722,7 @@ namespace ICSharpCode.NRefactory.CSharp
if (collectionInit != null) { if (collectionInit != null) {
var parent = new ArrayInitializerExpression (); var parent = new ArrayInitializerExpression ();
var braceLocs = LocationsBag.GetLocations (expr); parent.AddChild (new CSharpTokenNode (Convert (expr.Location)), ArrayInitializerExpression.Roles.LBrace);
if (braceLocs != null)
parent.AddChild (new CSharpTokenNode (Convert (braceLocs [0])), 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;
@ -2726,8 +2731,9 @@ namespace ICSharpCode.NRefactory.CSharp
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);
} }
var braceLocs = LocationsBag.GetLocations (expr);
if (braceLocs != null) 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); init.AddChild (parent, ArrayInitializerExpression.Roles.Expression);
} else { } else {

4
ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs

@ -6350,8 +6350,10 @@ void case_445()
{ {
if (yyVals[-1+yyTop] == null) if (yyVals[-1+yyTop] == null)
yyVal = null; yyVal = null;
else else {
yyVal = new CollectionElementInitializer ((List<Expression>)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); yyVal = new CollectionElementInitializer ((List<Expression>)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop]));
lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); // properly patched upstream
}
} }
void case_446() void case_446()

2
ICSharpCode.NRefactory.Tests/CSharp/Resolver/ObjectCreationTests.cs

@ -173,7 +173,7 @@ class B {
Assert.AreEqual("Point.X", result.Member.FullName); Assert.AreEqual("Point.X", result.Member.FullName);
} }
[Test, Ignore("Parser returns incorrect positions")] [Test]
public void CollectionInitializerTest() public void CollectionInitializerTest()
{ {
string program = @"using System.Collections.Generic; string program = @"using System.Collections.Generic;

Loading…
Cancel
Save