Skip to content

Commit

Permalink
Revert "dotnet#1638: use SpecialType for checking parameter type string"
Browse files Browse the repository at this point in the history
This reverts commit 8dc25ab.
  • Loading branch information
jongleur1983 committed Oct 13, 2018
1 parent 8dc25ab commit d5acdf7
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 84 deletions.
Expand Up @@ -89,7 +89,7 @@ private void Action(OperationAnalysisContext context)
&& invokedMethod.Name == nameof(StringBuilder.Append))
{
var parameters = invokedMethod.Parameters;
if (parameters.Length == 1 && parameters[0].Type.SpecialType == SpecialType.System_String)
if (parameters.Length == 1 && parameters[0].Type.Name == nameof(String))
{
IArgumentOperation argument = invocation.Arguments.FirstOrDefault();
if (argument.Value is IInvocationOperation invocationExpression
Expand Down
@@ -1,12 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CodeFixes;
using Microsoft.CodeAnalysis.Diagnostics;
using Test.Utilities;
using Xunit;

namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.UnitTests
{
public class StringBuilderAppendShouldNotTakeSubstringFixerTestsCsharp : CodeFixTestBase
public class StringBuilderAppendShouldNotTakeSubstringFixerTests : CodeFixTestBase
{
protected override DiagnosticAnalyzer GetCSharpDiagnosticAnalyzer()
{
Expand All @@ -20,12 +24,12 @@ protected override DiagnosticAnalyzer GetBasicDiagnosticAnalyzer()

protected override CodeFixProvider GetCSharpCodeFixProvider()
{
return new StringBuilderAppendShouldNotTakeSubstringCsharpFixer();
return new StringBuilderAppendShouldNotTakeSubstringFixer();
}

protected override CodeFixProvider GetBasicCodeFixProvider()
{
throw new NotSupportedException();
return new StringBuilderAppendShouldNotTakeSubstringFixer();
}

[Fact]
Expand Down Expand Up @@ -59,50 +63,46 @@ public string Append(string text)
}

[Fact]
public void FixesExample2FromTicket()
public void FixesExample1FromTicketBasic()
{
const string Code = @"
using System.Text;
Imports System.Text
public class C
{
public string Append(string text)
{
var sb = new StringBuilder();
sb.Append(text.Substring(2));
return sb.ToString();
}
}";
Public Class C
Public Function Append(ByVal text As String) As String
Dim sb = New StringBuilder()
sb.Append(text.Substring(0, 6))
Return sb.ToString()
End Function
End Class
";
const string FixedCode = @"
using System.Text;
Imports System.Text
public class C
{
public string Append(string text)
{
var sb = new StringBuilder();
sb.Append(text, 2, text.Length - 2);
return sb.ToString();
}
}";
VerifyCSharpFix(Code, FixedCode);
Public Class C
Public Function Append(ByVal text As String) As String
Dim sb = New StringBuilder()
sb.Append(text, 0, 6)
Return sb.ToString()
End Function
End Class
";
VerifyBasicFix(Code, FixedCode);
}

[Fact(Skip = "not working yet")]
public void FixesAllExamplesFromTicket()
[Fact]
public void FixesExample2FromTicket()
{

const string Code = @"
using System.Text;
public class C
{
public string Append (string text)
public string Append(string text)
{
var sb = new StringBuilder();
sb.Append(text.Substring (0, 6));
sb.Append(text.Substring (2));
return sb.ToString ();
sb.Append(text.Substring(2));
return sb.ToString();
}
}";
const string FixedCode = @"
Expand All @@ -113,47 +113,23 @@ public class C
public string Append(string text)
{
var sb = new StringBuilder();
sb.Append(text, 0, 6);
sb.Append(text, 2, text.Length - 2);
return sb.ToString ();
return sb.ToString();
}
}";
VerifyCSharpFixAll(Code, FixedCode);
}
}

public class StringBuilderAppendShouldNotTakeSubstringFixerTestsBasic : CodeFixTestBase
{
protected override DiagnosticAnalyzer GetCSharpDiagnosticAnalyzer()
{
return new StringBuilderAppendShouldNotTakeSubstring();
}

protected override DiagnosticAnalyzer GetBasicDiagnosticAnalyzer()
{
return new StringBuilderAppendShouldNotTakeSubstring();
}

protected override CodeFixProvider GetCSharpCodeFixProvider()
{
throw new NotSupportedException();
}

protected override CodeFixProvider GetBasicCodeFixProvider()
{
return new StringBuilderAppendShouldNotTakeSubstringBasicFixer();
VerifyCSharpFix(Code, FixedCode);
}

[Fact]
public void FixesExample1FromTicket()
public void FixesExample2FromTicketBasic()
{
const string Code = @"
Imports System.Text
Public Class C
Public Function Append(ByVal text As String) As String
Dim sb = New StringBuilder()
sb.Append(text.Substring(0, 6))
sb.Append(text.Substring(2))
Return sb.ToString()
End Function
End Class
Expand All @@ -164,40 +140,45 @@ Imports System.Text
Public Class C
Public Function Append(ByVal text As String) As String
Dim sb = New StringBuilder()
sb.Append(text, 0, 6)
sb.Append(text, 2, text.Length - 2)
Return sb.ToString()
End Function
End Class
";
VerifyBasicFix(Code, FixedCode);
}

[Fact]
public void FixesExample2FromTicketBasic()
[Fact(Skip = "not working yet")]
public void FixesAllExamplesFromTicket()
{

const string Code = @"
Imports System.Text
using System.Text;
Public Class C
Public Function Append(ByVal text As String) As String
Dim sb = New StringBuilder()
sb.Append(text.Substring(2))
Return sb.ToString()
End Function
End Class
";
public class C
{
public string Append (string text)
{
var sb = new StringBuilder();
sb.Append(text.Substring (0, 6));
sb.Append(text.Substring (2));
return sb.ToString ();
}
}";
const string FixedCode = @"
Imports System.Text
using System.Text;
Public Class C
Public Function Append(ByVal text As String) As String
Dim sb = New StringBuilder()
sb.Append(text, 2, text.Length - 2)
Return sb.ToString()
End Function
End Class
";
VerifyBasicFix(Code, FixedCode);
public class C
{
public string Append(string text)
{
var sb = new StringBuilder();
sb.Append(text, 0, 6);
sb.Append(text, 2, text.Length - 2);
return sb.ToString ();
}
}";
VerifyCSharpFixAll(Code, FixedCode);
}

[Fact(Skip = "not working yet")]
Expand Down Expand Up @@ -231,5 +212,4 @@ End Class
VerifyBasicFixAll(Code, FixedCode);
}
}

}

0 comments on commit d5acdf7

Please sign in to comment.