Skip to content

Commit d6de433

Browse files
authored
fixed issue (#42)
1 parent 3416c21 commit d6de433

File tree

6 files changed

+29
-22
lines changed

6 files changed

+29
-22
lines changed

src/FluentAssertions.Analyzers.Tests/Tips/SanityTests.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public void CountWithPredicate()
1111
{
1212
const string assertion = "actual.Count(d => d.Message.Contains(\"a\")).Should().Be(2);";
1313
var source = GenerateCode.EnumerableCodeBlockAssertion(assertion);
14-
14+
1515
DiagnosticVerifier.VerifyCSharpDiagnosticUsingAllAnalyzers(source);
1616
}
1717

@@ -64,6 +64,23 @@ public void DictionaryShouldContainPair_WhenPropertiesOfDifferentVariables_Shoul
6464
var source = GenerateCode.DictionaryAssertion(assertion);
6565

6666
DiagnosticVerifier.VerifyCSharpDiagnosticUsingAllAnalyzers(source);
67-
}
67+
}
68+
69+
[TestMethod]
70+
[Implemented(Reason = "https://github.com/fluentassertions/fluentassertions.analyzers/issues/41")]
71+
public void ExpressionBasedFunction_ShouldNotThrow()
72+
{
73+
const string source = @"
74+
public class TestClass
75+
{
76+
private SomeClass CreateSomeClass() => new SomeClass();
77+
78+
public class SomeClass
79+
{ }
80+
public static void Main() { }
81+
}";
82+
83+
DiagnosticVerifier.VerifyCSharpDiagnosticUsingAllAnalyzers(source);
84+
}
6885
}
6986
}

src/FluentAssertions.Analyzers/Tips/Collections/CollectionAnalyzer.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ namespace FluentAssertions.Analyzers
55
{
66
public abstract class CollectionAnalyzer : FluentAssertionsAnalyzer
77
{
8-
protected override bool ShouldAnalyzeVariableType(TypeInfo typeInfo)
8+
protected override bool ShouldAnalyzeVariableType(ITypeSymbol type)
99
{
10-
return typeInfo.ConvertedType.Name != "String"
11-
&& typeInfo.ConvertedType.AllInterfaces.Any(@interface => @interface.Name == "IEnumerable");
10+
return type.Name != "String"
11+
&& type.AllInterfaces.Any(@interface => @interface.Name == "IEnumerable");
1212
}
1313
}
1414
}

src/FluentAssertions.Analyzers/Tips/Numerics/NumericAnalyzer.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ namespace FluentAssertions.Analyzers
44
{
55
public abstract class NumericAnalyzer : FluentAssertionsAnalyzer
66
{
7-
protected override bool ShouldAnalyzeVariableType(TypeInfo typeInfo)
8-
{
9-
return true;
10-
}
7+
protected override bool ShouldAnalyzeVariableType(ITypeSymbol type) => true;
118
}
129
}

src/FluentAssertions.Analyzers/Tips/Numerics/NumericShouldBeApproximately.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,8 @@ protected override IEnumerable<FluentAssertionsCSharpSyntaxVisitor> Visitors
2929
}
3030

3131
private static readonly string[] ValidaTypeNames = { "double", "decimal", "float" };
32-
protected override bool ShouldAnalyzeVariableType(TypeInfo typeInfo)
33-
{
34-
return ValidaTypeNames.Contains(typeInfo.ConvertedType.ToDisplayString(), StringComparer.OrdinalIgnoreCase);
35-
}
32+
protected override bool ShouldAnalyzeVariableType(ITypeSymbol type)
33+
=> ValidaTypeNames.Contains(type.ToDisplayString(), StringComparer.OrdinalIgnoreCase);
3634

3735
public class MathAbsShouldBeLessOrEqualToSyntaxVisitor : FluentAssertionsCSharpSyntaxVisitor
3836
{

src/FluentAssertions.Analyzers/Tips/Strings/StringAnalyzer.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ namespace FluentAssertions.Analyzers
44
{
55
public abstract class StringAnalyzer : FluentAssertionsAnalyzer
66
{
7-
protected override bool ShouldAnalyzeVariableType(TypeInfo typeInfo)
8-
{
9-
return typeInfo.ConvertedType.Name == "String";
10-
}
7+
protected override bool ShouldAnalyzeVariableType(ITypeSymbol type) => type.Name == "String";
118
}
129
}

src/FluentAssertions.Analyzers/Utilities/FluentAssertionsAnalyzer.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,16 @@ private void AnalyzeCodeBlock(CodeBlockAnalysisContext context)
5151
}
5252
}
5353

54-
protected virtual bool ShouldAnalyzeVariableType(TypeInfo typeInfo)
55-
{
56-
return true;
57-
}
54+
protected virtual bool ShouldAnalyzeVariableType(ITypeSymbol type) => true;
5855

5956
protected virtual Diagnostic AnalyzeExpression(ExpressionSyntax expression, SemanticModel semanticModel)
6057
{
6158
var variableNameExtractor = new VariableNameExtractor(semanticModel);
6259
expression.Accept(variableNameExtractor);
6360

6461
var typeInfo = semanticModel.GetTypeInfo(variableNameExtractor.VariableIdentifierName);
65-
if (!ShouldAnalyzeVariableType(typeInfo)) return null;
62+
if (typeInfo.ConvertedType == null) return null;
63+
if (!ShouldAnalyzeVariableType(typeInfo.ConvertedType)) return null;
6664

6765
foreach (var visitor in Visitors)
6866
{

0 commit comments

Comments
 (0)