Browse Source

Merge branch 'master' of git://github.com/icsharpcode/ILSpy

newNRvisualizers
Pent Ploompuu 15 years ago
parent
commit
10a6608222
  1. 33
      ICSharpCode.NRefactory.Tests/CSharp/InsertParenthesesVisitorTests.cs
  2. 92
      ICSharpCode.NRefactory.VB/AstBuilder/ExpressionBuilder.cs
  3. 55
      ICSharpCode.NRefactory.VB/AstBuilder/StatementBuilder.cs
  4. 6
      ICSharpCode.NRefactory.VB/ICSharpCode.NRefactory.VB.csproj
  5. 11
      ICSharpCode.NRefactory.VB/OutputVisitor/OutputVisitor.cs
  6. 2078
      ICSharpCode.NRefactory.VB/Visitors/AbstractAstTransformer.cs
  7. 1156
      ICSharpCode.NRefactory.VB/Visitors/AbstractAstVisitor.cs
  8. 1266
      ICSharpCode.NRefactory.VB/Visitors/NodeTrackingAstVisitor.cs
  9. 5
      ICSharpCode.NRefactory/CSharp/OutputVisitor/InsertParenthesesVisitor.cs

33
ICSharpCode.NRefactory.Tests/CSharp/InsertParenthesesVisitorTests.cs

@ -345,5 +345,38 @@ namespace ICSharpCode.NRefactory.CSharp @@ -345,5 +345,38 @@ namespace ICSharpCode.NRefactory.CSharp
Assert.AreEqual("a && (b || c)", InsertRequired(expr));
Assert.AreEqual("a && (b || c)", InsertReadable(expr));
}
[Test]
public void ArrayCreationInIndexer()
{
Expression expr = new IndexerExpression {
Target = new ArrayCreateExpression {
Type = new PrimitiveType("int"),
Arguments = { new PrimitiveExpression(1) }
},
Arguments = { new PrimitiveExpression(0) }
};
Assert.AreEqual("(new int[1]) [0]", InsertRequired(expr));
Assert.AreEqual("(new int[1]) [0]", InsertReadable(expr));
}
[Test]
public void ArrayCreationWithInitializerInIndexer()
{
Expression expr = new IndexerExpression {
Target = new ArrayCreateExpression {
Type = new PrimitiveType("int"),
Arguments = { new PrimitiveExpression(1) },
Initializer = new ArrayInitializerExpression {
Elements = { new PrimitiveExpression(42) }
}
},
Arguments = { new PrimitiveExpression(0) }
};
Assert.AreEqual("new int[1] { 42 } [0]", InsertRequired(expr));
Assert.AreEqual("(new int[1] { 42 }) [0]", InsertReadable(expr));
}
}
}

92
ICSharpCode.NRefactory.VB/AstBuilder/ExpressionBuilder.cs

@ -1,92 +0,0 @@ @@ -1,92 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under MIT X11 license (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.NRefactory.VB.Ast;
namespace ICSharpCode.NRefactory.VB.AstBuilder
{
/// <summary>
/// Extension methods for NRefactory.Dom.Expression.
/// </summary>
public static class ExpressionBuilder
{/*
public static SimpleNameExpression Identifier(string identifier)
{
return new SimpleNameExpression(identifier);
}
public static MemberReferenceExpression Member(this Expression targetObject, string memberName)
{
if (targetObject == null)
throw new ArgumentNullException("targetObject");
return new MemberReferenceExpression(targetObject, memberName);
}
public static InvocationExpression Call(this Expression callTarget, string methodName, params Expression[] arguments)
{
if (callTarget == null)
throw new ArgumentNullException("callTarget");
return Call(Member(callTarget, methodName), arguments);
}
public static InvocationExpression Call(this Expression callTarget, params Expression[] arguments)
{
if (callTarget == null)
throw new ArgumentNullException("callTarget");
if (arguments == null)
throw new ArgumentNullException("arguments");
return new InvocationExpression(callTarget, new List<Expression>(arguments));
}
public static ObjectCreateExpression New(this TypeReference createType, params Expression[] arguments)
{
if (createType == null)
throw new ArgumentNullException("createType");
if (arguments == null)
throw new ArgumentNullException("arguments");
return new ObjectCreateExpression(createType, new List<Expression>(arguments));
}
public static Expression CreateDefaultValueForType(TypeReference type)
{
if (type != null && !type.IsArrayType) {
switch (type.Type) {
case "System.SByte":
case "System.Byte":
case "System.Int16":
case "System.UInt16":
case "System.Int32":
case "System.UInt32":
case "System.Int64":
case "System.UInt64":
case "System.Single":
case "System.Double":
return new PrimitiveExpression(0, "0");
case "System.Char":
return new PrimitiveExpression('\0', "'\\0'");
case "System.Object":
case "System.String":
return new PrimitiveExpression(null, "null");
case "System.Boolean":
return new PrimitiveExpression(false, "false");
default:
return new DefaultValueExpression(type);
}
} else {
return new PrimitiveExpression(null, "null");
}
}
/// <summary>
/// Just calls the BinaryOperatorExpression constructor,
/// but being an extension method; this allows for a nicer
/// infix syntax in some cases.
/// </summary>
public static BinaryOperatorExpression Operator(this Expression left, BinaryOperatorType op, Expression right)
{
return new BinaryOperatorExpression(left, op, right);
}*/
}
}

55
ICSharpCode.NRefactory.VB/AstBuilder/StatementBuilder.cs

@ -1,55 +0,0 @@ @@ -1,55 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under MIT X11 license (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.NRefactory.VB.Ast;
namespace ICSharpCode.NRefactory.VB.AstBuilder
{
/// <summary>
/// Extension methods for NRefactory.Dom.Expression.
/// </summary>
// public static class StatementBuilder
// {
// public static void AddStatement(this BlockStatement block, Statement statement)
// {
// if (block == null)
// throw new ArgumentNullException("block");
// if (statement == null)
// throw new ArgumentNullException("statement");
// block.AddChild(statement);
// statement.Parent = block;
// }
//
// public static void AddStatement(this BlockStatement block, Expression expressionStatement)
// {
// if (expressionStatement == null)
// throw new ArgumentNullException("expressionStatement");
// AddStatement(block, new ExpressionStatement(expressionStatement));
// }
//
// public static void Throw(this BlockStatement block, Expression expression)
// {
// if (expression == null)
// throw new ArgumentNullException("expression");
// AddStatement(block, new ThrowStatement(expression));
// }
//
// public static void Return(this BlockStatement block, Expression expression)
// {
// if (expression == null)
// throw new ArgumentNullException("expression");
// AddStatement(block, new ReturnStatement(expression));
// }
//
// public static void Assign(this BlockStatement block, Expression left, Expression right)
// {
// if (left == null)
// throw new ArgumentNullException("left");
// if (right == null)
// throw new ArgumentNullException("right");
// AddStatement(block, new AssignmentExpression(left, AssignmentOperatorType.Assign, right));
// }
// }
}

6
ICSharpCode.NRefactory.VB/ICSharpCode.NRefactory.VB.csproj

@ -45,8 +45,6 @@ @@ -45,8 +45,6 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="AstBuilder\ExpressionBuilder.cs" />
<Compile Include="AstBuilder\StatementBuilder.cs" />
<Compile Include="Ast\AstLocation.cs" />
<Compile Include="Ast\AstNode.cs" />
<Compile Include="Ast\AstNodeCollection.cs" />
@ -180,14 +178,10 @@ @@ -180,14 +178,10 @@
<Compile Include="PrettyPrinter\VBNet\VBNetPrettyPrintOptions.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="VBParser.cs" />
<Compile Include="Visitors\AbstractAstTransformer.cs" />
<Compile Include="Visitors\AbstractAstVisitor.cs" />
<Compile Include="Visitors\CSharpToVBConverterVisitor.cs" />
<Compile Include="Visitors\NodeTrackingAstVisitor.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Ast" />
<Folder Include="AstBuilder" />
<Folder Include="Ast\General" />
<Folder Include="Ast\GlobalScope" />
<Folder Include="Ast\Expressions" />

11
ICSharpCode.NRefactory.VB/OutputVisitor/OutputVisitor.cs

@ -115,7 +115,7 @@ namespace ICSharpCode.NRefactory.VB @@ -115,7 +115,7 @@ namespace ICSharpCode.NRefactory.VB
StartNode(parameterDeclaration);
WriteAttributes(parameterDeclaration.Attributes);
WriteModifiers(parameterDeclaration.ModifierTokens);
WriteIdentifier(parameterDeclaration.Name.Name);
parameterDeclaration.Name.AcceptVisitor(this, data);
if (!parameterDeclaration.Type.IsNull) {
WriteKeyword("As");
parameterDeclaration.Type.AcceptVisitor(this, data);
@ -1053,7 +1053,7 @@ namespace ICSharpCode.NRefactory.VB @@ -1053,7 +1053,7 @@ namespace ICSharpCode.NRefactory.VB
#endregion
#region IsKeyword Test
static readonly HashSet<string> unconditionalKeywords = new HashSet<string> {
static readonly HashSet<string> unconditionalKeywords = new HashSet<string>(StringComparer.OrdinalIgnoreCase) {
"AddHandler", "AddressOf", "Alias", "And", "AndAlso", "As", "Boolean", "ByRef", "Byte",
"ByVal", "Call", "Case", "Catch", "CBool", "CByte", "CChar", "CInt", "Class", "CLng",
"CObj", "Const", "Continue", "CSByte", "CShort", "CSng", "CStr", "CType", "CUInt",
@ -1705,6 +1705,11 @@ namespace ICSharpCode.NRefactory.VB @@ -1705,6 +1705,11 @@ namespace ICSharpCode.NRefactory.VB
WriteCommaSeparatedListInParenthesis(objectCreationExpression.Arguments, false);
if (!objectCreationExpression.Initializer.IsNull) {
Space();
if (objectCreationExpression.Initializer.Elements.Any(x => x is FieldInitializerExpression))
WriteKeyword("With");
else
WriteKeyword("From");
Space();
objectCreationExpression.Initializer.AcceptVisitor(this, data);
}
@ -1870,7 +1875,7 @@ namespace ICSharpCode.NRefactory.VB @@ -1870,7 +1875,7 @@ namespace ICSharpCode.NRefactory.VB
{
StartNode(fieldInitializerExpression);
if (fieldInitializerExpression.IsKey) {
if (fieldInitializerExpression.IsKey && fieldInitializerExpression.Parent is AnonymousObjectCreationExpression) {
WriteKeyword("Key");
Space();
}

2078
ICSharpCode.NRefactory.VB/Visitors/AbstractAstTransformer.cs

File diff suppressed because it is too large Load Diff

1156
ICSharpCode.NRefactory.VB/Visitors/AbstractAstVisitor.cs

File diff suppressed because it is too large Load Diff

1266
ICSharpCode.NRefactory.VB/Visitors/NodeTrackingAstVisitor.cs

File diff suppressed because it is too large Load Diff

5
ICSharpCode.NRefactory/CSharp/OutputVisitor/InsertParenthesesVisitor.cs

@ -132,6 +132,11 @@ namespace ICSharpCode.NRefactory.CSharp @@ -132,6 +132,11 @@ namespace ICSharpCode.NRefactory.CSharp
public override object VisitIndexerExpression(IndexerExpression indexerExpression, object data)
{
ParenthesizeIfRequired(indexerExpression.Target, Primary);
ArrayCreateExpression ace = indexerExpression.Target as ArrayCreateExpression;
if (ace != null && (InsertParenthesesForReadability || ace.Initializer.IsNull)) {
// require parentheses for "(new int[1])[0]"
Parenthesize(indexerExpression.Target);
}
return base.VisitIndexerExpression(indexerExpression, data);
}

Loading…
Cancel
Save