Browse Source

fixed some unit tests

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/vbnet@5803 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Siegfried Pammer 16 years ago
parent
commit
bb1c643db3
  1. 1604
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  2. 2
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
  3. 10
      src/Libraries/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs
  4. 30
      src/Libraries/NRefactory/Project/Src/PrettyPrinter/VBNet/VBNetOutputVisitor.cs
  5. 3
      src/Libraries/NRefactory/Test/Output/VBNet/CSharpToVBNetConverterTest.cs
  6. 16
      src/Libraries/NRefactory/Test/Parser/Expressions/ObjectCreateExpressionTests.cs

1604
src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs

File diff suppressed because it is too large Load Diff

2
src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG

@ -1664,6 +1664,7 @@ SimpleExpr<out Expression pexpr>
SimpleNonInvocationExpression<out Expression pexpr> SimpleNonInvocationExpression<out Expression pexpr>
(. (.
Expression expr; Expression expr;
CollectionInitializerExpression cie;
TypeReference type = null; TypeReference type = null;
string name = String.Empty; string name = String.Empty;
pexpr = null; pexpr = null;
@ -1705,6 +1706,7 @@ SimpleNonInvocationExpression<out Expression pexpr>
(. type.IsGlobal = true; .) (. type.IsGlobal = true; .)
(. pexpr = new TypeReferenceExpression(type); .) (. pexpr = new TypeReferenceExpression(type); .)
| ObjectCreateExpression<out expr> (. pexpr = expr; .) | ObjectCreateExpression<out expr> (. pexpr = expr; .)
| CollectionInitializer<out cie> (. pexpr = cie; .)
| /* 11.11 : Casts */ | /* 11.11 : Casts */
(. CastType castType = CastType.Cast; .) (. CastType castType = CastType.Cast; .)
( "DirectCast" ( "DirectCast"

10
src/Libraries/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs

@ -2833,6 +2833,16 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
return null; return null;
} }
public override object TrackedVisitMemberInitializerExpression(MemberInitializerExpression memberInitializerExpression, object data)
{
outputFormatter.PrintIdentifier(memberInitializerExpression.Name);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Assign);
outputFormatter.Space();
TrackVisit(memberInitializerExpression.Expression, data);
return null;
}
public override object TrackedVisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, object data) public override object TrackedVisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, object data)
{ {
Expression target = memberReferenceExpression.TargetObject; Expression target = memberReferenceExpression.TargetObject;

30
src/Libraries/NRefactory/Project/Src/PrettyPrinter/VBNet/VBNetOutputVisitor.cs

@ -2647,7 +2647,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
CollectionInitializerExpression initializer = objectCreateExpression.ObjectInitializer; CollectionInitializerExpression initializer = objectCreateExpression.ObjectInitializer;
if (!initializer.IsNull) { if (!initializer.IsNull) {
outputFormatter.Space(); outputFormatter.Space();
if (initializer.CreateExpressions.Any(ce => ce is NamedArgumentExpression)) if (initializer.CreateExpressions.Any(ce => ce is MemberInitializerExpression))
outputFormatter.PrintToken(Tokens.With); outputFormatter.PrintToken(Tokens.With);
else else
outputFormatter.PrintToken(Tokens.From); outputFormatter.PrintToken(Tokens.From);
@ -2660,18 +2660,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintToken(Tokens.Comma); outputFormatter.PrintToken(Tokens.Comma);
outputFormatter.PrintLineContinuation(); outputFormatter.PrintLineContinuation();
outputFormatter.Indent(); outputFormatter.Indent();
//outputFormatter.PrintText("Key "); TODO "Key" cannot be represented in AST TrackedVisit(expr, data);
NamedArgumentExpression nae = expr as NamedArgumentExpression;
if (nae != null) {
outputFormatter.PrintToken(Tokens.Dot);
outputFormatter.PrintIdentifier(nae.Name);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Assign);
outputFormatter.Space();
TrackedVisit(nae.Expression, data);
} else {
TrackedVisit(expr, data);
}
} }
outputFormatter.IndentationLevel--; outputFormatter.IndentationLevel--;
outputFormatter.PrintLineContinuation(); outputFormatter.PrintLineContinuation();
@ -2715,6 +2704,21 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
return null; return null;
} }
public override object TrackedVisitMemberInitializerExpression(MemberInitializerExpression memberInitializerExpression, object data)
{
if (memberInitializerExpression.IsKey) {
outputFormatter.PrintIdentifier("Key"); // TODO : replace by token
outputFormatter.Space();
}
outputFormatter.PrintToken(Tokens.Dot);
outputFormatter.PrintIdentifier(memberInitializerExpression.Name);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Assign);
outputFormatter.Space();
TrackedVisit(memberInitializerExpression.Expression, data);
return null;
}
public override object TrackedVisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, object data) public override object TrackedVisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, object data)
{ {
TrackedVisit(memberReferenceExpression.TargetObject, data); TrackedVisit(memberReferenceExpression.TargetObject, data);

3
src/Libraries/NRefactory/Test/Output/VBNet/CSharpToVBNetConverterTest.cs

@ -604,10 +604,9 @@ Private m_Name As String");
[Test] [Test]
public void TestAnonymousType() public void TestAnonymousType()
{ {
// TODO test is strictly incorrect, the converter should add "Key"
TestStatement("var x = new { i = 0, abc, abc.Test };", TestStatement("var x = new { i = 0, abc, abc.Test };",
"Dim x = New With { _\n" + "Dim x = New With { _\n" +
" .i = 0, _\n" + " Key .i = 0, _\n" +
" abc, _\n" + " abc, _\n" +
" abc.Test _\n" + " abc.Test _\n" +
"}"); "}");

16
src/Libraries/NRefactory/Test/Parser/Expressions/ObjectCreateExpressionTests.cs

@ -77,9 +77,9 @@ namespace ICSharpCode.NRefactory.Tests.Ast
Expression CheckPropertyInitializationExpression(Expression e, string name) Expression CheckPropertyInitializationExpression(Expression e, string name)
{ {
Assert.IsInstanceOf(typeof(NamedArgumentExpression), e); Assert.IsInstanceOf(typeof(MemberInitializerExpression), e);
Assert.AreEqual(name, ((NamedArgumentExpression)e).Name); Assert.AreEqual(name, ((MemberInitializerExpression)e).Name);
return ((NamedArgumentExpression)e).Expression; return ((MemberInitializerExpression)e).Expression;
} }
void CheckPointObjectCreation(ObjectCreateExpression oce) void CheckPointObjectCreation(ObjectCreateExpression oce)
@ -202,7 +202,7 @@ namespace ICSharpCode.NRefactory.Tests.Ast
Assert.AreEqual(2, oce.ObjectInitializer.CreateExpressions.Count); Assert.AreEqual(2, oce.ObjectInitializer.CreateExpressions.Count);
Assert.IsInstanceOf(typeof(PrimitiveExpression), CheckPropertyInitializationExpression(oce.ObjectInitializer.CreateExpressions[0], "Id")); Assert.IsInstanceOf(typeof(PrimitiveExpression), CheckPropertyInitializationExpression(oce.ObjectInitializer.CreateExpressions[0], "Id"));
Assert.IsInstanceOf(typeof(NamedArgumentExpression), oce.ObjectInitializer.CreateExpressions[1]); Assert.IsInstanceOf(typeof(MemberInitializerExpression), oce.ObjectInitializer.CreateExpressions[1]);
} }
[Test] [Test]
@ -234,11 +234,11 @@ namespace ICSharpCode.NRefactory.Tests.Ast
ObjectCreateExpression oce = ParseUtilVBNet.ParseExpression<ObjectCreateExpression>("new Contact() With { .FirstName = \"Bill\", .LastName = \"Gates\" }"); ObjectCreateExpression oce = ParseUtilVBNet.ParseExpression<ObjectCreateExpression>("new Contact() With { .FirstName = \"Bill\", .LastName = \"Gates\" }");
Assert.AreEqual(2, oce.ObjectInitializer.CreateExpressions.Count); Assert.AreEqual(2, oce.ObjectInitializer.CreateExpressions.Count);
Assert.AreEqual("FirstName", ((NamedArgumentExpression)oce.ObjectInitializer.CreateExpressions[0]).Name); Assert.AreEqual("FirstName", ((MemberInitializerExpression)oce.ObjectInitializer.CreateExpressions[0]).Name);
Assert.AreEqual("LastName", ((NamedArgumentExpression)oce.ObjectInitializer.CreateExpressions[1]).Name); Assert.AreEqual("LastName", ((MemberInitializerExpression)oce.ObjectInitializer.CreateExpressions[1]).Name);
Assert.IsInstanceOf(typeof(PrimitiveExpression), ((NamedArgumentExpression)oce.ObjectInitializer.CreateExpressions[0]).Expression); Assert.IsInstanceOf(typeof(PrimitiveExpression), ((MemberInitializerExpression)oce.ObjectInitializer.CreateExpressions[0]).Expression);
Assert.IsInstanceOf(typeof(PrimitiveExpression), ((NamedArgumentExpression)oce.ObjectInitializer.CreateExpressions[1]).Expression); Assert.IsInstanceOf(typeof(PrimitiveExpression), ((MemberInitializerExpression)oce.ObjectInitializer.CreateExpressions[1]).Expression);
} }
[Test] [Test]

Loading…
Cancel
Save