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

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

@ -2833,6 +2833,16 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2833,6 +2833,16 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
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)
{
Expression target = memberReferenceExpression.TargetObject;

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

@ -2647,7 +2647,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2647,7 +2647,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
CollectionInitializerExpression initializer = objectCreateExpression.ObjectInitializer;
if (!initializer.IsNull) {
outputFormatter.Space();
if (initializer.CreateExpressions.Any(ce => ce is NamedArgumentExpression))
if (initializer.CreateExpressions.Any(ce => ce is MemberInitializerExpression))
outputFormatter.PrintToken(Tokens.With);
else
outputFormatter.PrintToken(Tokens.From);
@ -2660,18 +2660,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2660,18 +2660,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintToken(Tokens.Comma);
outputFormatter.PrintLineContinuation();
outputFormatter.Indent();
//outputFormatter.PrintText("Key "); TODO "Key" cannot be represented in AST
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);
}
TrackedVisit(expr, data);
}
outputFormatter.IndentationLevel--;
outputFormatter.PrintLineContinuation();
@ -2715,6 +2704,21 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2715,6 +2704,21 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
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)
{
TrackedVisit(memberReferenceExpression.TargetObject, data);

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

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

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

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

Loading…
Cancel
Save