Browse Source

Fixed array create expression tests.

newNRvisualizers
Mike Krüger 15 years ago
parent
commit
02fe3e32e5
  1. 15
      ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/ArrayCreateExpressionTests.cs
  2. 3
      ICSharpCode.NRefactory/CSharp/OutputVisitor/OutputVisitor.cs
  3. 6
      ICSharpCode.NRefactory/CSharp/Parser/CSharpParser.cs

15
ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/ArrayCreateExpressionTests.cs

@ -57,6 +57,9 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression @@ -57,6 +57,9 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression
"new int[] { 1 }",
new ArrayCreateExpression {
Type = new PrimitiveType("int"),
AdditionalArraySpecifiers = {
new ArraySpecifier(0)
},
Initializer = new ArrayInitializerExpression {
Elements = { new PrimitiveExpression(1) }
}
@ -70,7 +73,7 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression @@ -70,7 +73,7 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression
"new int[,] { { 1 } }",
new ArrayCreateExpression {
Type = new PrimitiveType("int"),
Arguments = { new EmptyExpression(), new EmptyExpression() }, // TODO: can we improve the AST for this?
AdditionalArraySpecifiers = { new ArraySpecifier (2) },
Initializer = new ArrayInitializerExpression {
Elements = {
new ArrayInitializerExpression {
@ -87,6 +90,9 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression @@ -87,6 +90,9 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression
ParseUtilCSharp.AssertExpression(
"new[] { 1, 10, 100, 1000 }",
new ArrayCreateExpression {
AdditionalArraySpecifiers = {
new ArraySpecifier(0)
},
Initializer = new ArrayInitializerExpression {
Elements = {
new PrimitiveExpression(1),
@ -103,7 +109,9 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression @@ -103,7 +109,9 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression
ParseUtilCSharp.AssertExpression(
"new [,] { { 1, 10 }, { 100, 1000 } }",
new ArrayCreateExpression {
Arguments = { new EmptyExpression(), new EmptyExpression() }, // TODO: can we improve the AST for this?
AdditionalArraySpecifiers = {
new ArraySpecifier(2),
},
Initializer = new ArrayInitializerExpression {
Elements = {
new ArrayInitializerExpression {
@ -128,6 +136,9 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression @@ -128,6 +136,9 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression
ParseUtilCSharp.AssertExpression(
"new [] { a = 10 }",
new ArrayCreateExpression {
AdditionalArraySpecifiers = {
new ArraySpecifier(0)
},
Initializer = new ArrayInitializerExpression {
Elements = {
new AssignmentExpression(new IdentifierExpression("a"), new PrimitiveExpression(10))

3
ICSharpCode.NRefactory/CSharp/OutputVisitor/OutputVisitor.cs

@ -551,7 +551,8 @@ namespace ICSharpCode.NRefactory.CSharp @@ -551,7 +551,8 @@ namespace ICSharpCode.NRefactory.CSharp
StartNode (arrayCreateExpression);
WriteKeyword ("new");
arrayCreateExpression.Type.AcceptVisitor (this, data);
WriteCommaSeparatedListInBrackets (arrayCreateExpression.Arguments);
if (arrayCreateExpression.Arguments.Count > 0)
WriteCommaSeparatedListInBrackets (arrayCreateExpression.Arguments);
foreach (var specifier in arrayCreateExpression.AdditionalArraySpecifiers)
specifier.AcceptVisitor (this, data);
arrayCreateExpression.Initializer.AcceptVisitor (this, data);

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

@ -2432,7 +2432,11 @@ namespace ICSharpCode.NRefactory.CSharp @@ -2432,7 +2432,11 @@ namespace ICSharpCode.NRefactory.CSharp
result.AddChild (ConvertToType (arrayCreationExpression.NewType), ArrayCreateExpression.Roles.Type);
if (location != null)
result.AddChild (new CSharpTokenNode (Convert (location[0]), 1), ArrayCreateExpression.Roles.LBracket);
var next = arrayCreationExpression.Rank;
if (arrayCreationExpression.Arguments != null) {
// skip first array rank.
next = next.Next;
var commaLocations = LocationsBag.GetLocations (arrayCreationExpression.Arguments);
for (int i = 0 ;i < arrayCreationExpression.Arguments.Count; i++) {
result.AddChild ((Expression)arrayCreationExpression.Arguments[i].Accept (this), ArrayCreateExpression.Roles.Argument);
@ -2440,7 +2444,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -2440,7 +2444,7 @@ namespace ICSharpCode.NRefactory.CSharp
result.AddChild (new CSharpTokenNode (Convert (commaLocations [commaLocations.Count - i]), 1), ArrayCreateExpression.Roles.Comma);
}
}
var next = arrayCreationExpression.Rank.Next;
while (next != null) {
ArraySpecifier spec = new ArraySpecifier (next.Dimension);
var loc = LocationsBag.GetLocations (next);

Loading…
Cancel
Save