Convert VB's implicit empty argument lists using a simple heuristic

This commit is contained in:
GrahamTheCoder 2017-11-14 17:36:11 +00:00 коммит произвёл GrahamTheCoder
Родитель 5a637b8453
Коммит 66297755cc
2 изменённых файлов: 31 добавлений и 1 удалений

Просмотреть файл

@ -827,7 +827,17 @@ namespace RefactoringEssentials.CSharp.Converter
return SyntaxFactory.AliasQualifiedName((IdentifierNameSyntax) left, simpleNameSyntax);
}
else
return SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, left, simpleNameSyntax);
{
var memberAccessExpressionSyntax = SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, left, simpleNameSyntax);
if (semanticModel.GetSymbolInfo(node).Symbol is IMethodSymbol methodSymbol && methodSymbol.ReturnType.Equals(semanticModel.GetTypeInfo(node).ConvertedType))
{
return SyntaxFactory.InvocationExpression(memberAccessExpressionSyntax, SyntaxFactory.ArgumentList());
}
else
{
return memberAccessExpressionSyntax;
}
}
}
public override CSharpSyntaxNode VisitConditionalAccessExpression(VBSyntax.ConditionalAccessExpressionSyntax node)

Просмотреть файл

@ -64,6 +64,26 @@ class TestClass
}");
}
[Fact]
public void EmptyArgumentLists()
{
TestConversionVisualBasicToCSharp(@"Class TestClass
Private Sub TestMethod()
Dim str = (New ThreadStaticAttribute).ToString
End Sub
End Class", @"using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualBasic;
class TestClass
{
private void TestMethod()
{
var str = (new ThreadStaticAttribute()).ToString();
}
}");
}
[Fact]
public void StringConcatenationAssignment()