diff --git a/src/NSubstitute.Analyzers.Shared/DiagnosticAnalyzers/AbstractNonSubstitutableMemberReceivedAnalyzer.cs b/src/NSubstitute.Analyzers.Shared/DiagnosticAnalyzers/AbstractNonSubstitutableMemberReceivedAnalyzer.cs index a3b20e81..0514ff1f 100644 --- a/src/NSubstitute.Analyzers.Shared/DiagnosticAnalyzers/AbstractNonSubstitutableMemberReceivedAnalyzer.cs +++ b/src/NSubstitute.Analyzers.Shared/DiagnosticAnalyzers/AbstractNonSubstitutableMemberReceivedAnalyzer.cs @@ -76,7 +76,7 @@ private void AnalyzeInvocation(SyntaxNodeAnalysisContext syntaxNodeContext) { var diagnostic = Diagnostic.Create( DiagnosticDescriptorsProvider.NonVirtualReceivedSetupSpecification, - invocationExpression.GetLocation(), + GetSymbolLocation(parentNode, symbolInfo.Symbol), symbolInfo.Symbol.Name); syntaxNodeContext.ReportDiagnostic(diagnostic); @@ -86,7 +86,7 @@ private void AnalyzeInvocation(SyntaxNodeAnalysisContext syntaxNodeContext) { var diagnostic = Diagnostic.Create( DiagnosticDescriptorsProvider.InternalSetupSpecification, - invocationExpression.GetLocation(), + GetSymbolLocation(parentNode, symbolInfo.Symbol), symbolInfo.Symbol.Name); syntaxNodeContext.ReportDiagnostic(diagnostic); @@ -117,5 +117,12 @@ private SyntaxNode GetKnownParent(SyntaxNode receivedSyntaxNode) return null; } + + private Location GetSymbolLocation(SyntaxNode syntaxNode, ISymbol symbol) + { + var actualNode = symbol is IMethodSymbol _ ? syntaxNode.Parent : syntaxNode; + + return actualNode.GetLocation(); + } } } \ No newline at end of file diff --git a/tests/NSubstitute.Analyzers.Tests.CSharp/DiagnosticAnalyzerTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsExtensionMethodTests.cs b/tests/NSubstitute.Analyzers.Tests.CSharp/DiagnosticAnalyzerTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsExtensionMethodTests.cs index 895b1757..8c18c491 100644 --- a/tests/NSubstitute.Analyzers.Tests.CSharp/DiagnosticAnalyzerTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsExtensionMethodTests.cs +++ b/tests/NSubstitute.Analyzers.Tests.CSharp/DiagnosticAnalyzerTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsExtensionMethodTests.cs @@ -25,7 +25,7 @@ public class FooTests public void Test() {{ var substitute = NSubstitute.Substitute.For(); - [|substitute.{method}()|].Bar(); + [|substitute.{method}().Bar()|]; }} }} }}"; @@ -138,7 +138,7 @@ public class FooTests public void Test() {{ var substitute = NSubstitute.Substitute.For(); - [|substitute.{method}()|].Bar(); + [|substitute.{method}().Bar()|]; }} }} }}"; @@ -327,7 +327,7 @@ public class FooTests public void Test() {{ var substitute = NSubstitute.Substitute.For(); - var x = [|substitute.{method}()|].Bar; + var x = [|substitute.{method}().Bar|]; }} }} }}"; @@ -374,7 +374,7 @@ public class FooTests public void Test() {{ var substitute = NSubstitute.Substitute.For(); - var x = [|substitute.{method}()|][1]; + var x = [|substitute.{method}()[1]|]; }} }} }}"; @@ -457,7 +457,7 @@ public class FooTests public void Test() {{ var substitute = NSubstitute.Substitute.For(); - var x = [|substitute.{method}()|]{call}; + var x = [|substitute.{method}(){call}|]; }} }} }}"; @@ -531,7 +531,7 @@ public class FooTests public void Test() {{ var substitute = NSubstitute.Substitute.For(); - var x = [|substitute.{method}()|]{call}; + var x = [|substitute.{method}(){call}|]; }} }} }}"; diff --git a/tests/NSubstitute.Analyzers.Tests.CSharp/DiagnosticAnalyzerTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsOrdinaryMethodTests.cs b/tests/NSubstitute.Analyzers.Tests.CSharp/DiagnosticAnalyzerTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsOrdinaryMethodTests.cs index 5987ce70..23d731af 100644 --- a/tests/NSubstitute.Analyzers.Tests.CSharp/DiagnosticAnalyzerTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsOrdinaryMethodTests.cs +++ b/tests/NSubstitute.Analyzers.Tests.CSharp/DiagnosticAnalyzerTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsOrdinaryMethodTests.cs @@ -33,7 +33,7 @@ public class FooTests public void Test() {{ var substitute = NSubstitute.Substitute.For(); - [|{method}(substitute)|].Bar(); + [|{method}(substitute).Bar()|]; }} }} }}"; @@ -154,7 +154,7 @@ public class FooTests public void Test() {{ var substitute = NSubstitute.Substitute.For(); - [|{method}(substitute)|].Bar(); + [|{method}(substitute).Bar()|]; }} }} }}"; @@ -351,7 +351,7 @@ public class FooTests public void Test() {{ var substitute = NSubstitute.Substitute.For(); - var x = [|{method}(substitute)|].Bar; + var x = [|{method}(substitute).Bar|]; }} }} }}"; @@ -398,7 +398,7 @@ public class FooTests public void Test() {{ var substitute = NSubstitute.Substitute.For(); - var x = [|{method}(substitute)|][1]; + var x = [|{method}(substitute)[1]|]; }} }} }}"; @@ -481,7 +481,7 @@ public class FooTests public void Test() {{ var substitute = NSubstitute.Substitute.For(); - var x = [|{method}(substitute)|]{call}; + var x = [|{method}(substitute){call}|]; }} }} }}"; @@ -555,7 +555,7 @@ public class FooTests public void Test() {{ var substitute = NSubstitute.Substitute.For(); - var x = [|{method}(substitute)|]{call}; + var x = [|{method}(substitute){call}|]; }} }} }}"; diff --git a/tests/NSubstitute.Analyzers.Tests.VisualBasic/DiagnosticAnalyzersTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsExtensionMethodTests.cs b/tests/NSubstitute.Analyzers.Tests.VisualBasic/DiagnosticAnalyzersTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsExtensionMethodTests.cs index dc4b6afb..a8de5b1e 100644 --- a/tests/NSubstitute.Analyzers.Tests.VisualBasic/DiagnosticAnalyzersTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsExtensionMethodTests.cs +++ b/tests/NSubstitute.Analyzers.Tests.VisualBasic/DiagnosticAnalyzersTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsExtensionMethodTests.cs @@ -23,7 +23,7 @@ Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.[For](Of Foo)() - [|substitute.{method}()|].Bar() + [|substitute.{method}().Bar()|] End Sub End Class End Namespace @@ -133,7 +133,7 @@ Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.[For](Of Foo2)() - [|substitute.{method}()|].Bar() + [|substitute.{method}().Bar()|] End Sub End Class End Namespace @@ -324,7 +324,7 @@ Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.For(Of Foo) - Dim x As Integer = [|substitute.{method}()|].Bar + Dim x As Integer = [|substitute.{method}().Bar|] End Sub End Class End Namespace"; @@ -383,7 +383,7 @@ Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.For(Of Foo) - Dim x As Integer = [|substitute.{method}()|](1) + Dim x As Integer = [|substitute.{method}()(1)|] End Sub End Class End Namespace"; @@ -457,7 +457,7 @@ End Class Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.[For](Of Foo)() - Dim x = [|substitute.{method}()|]{call} + Dim x = [|substitute.{method}(){call}|] End Sub End Class End Namespace"; @@ -523,7 +523,7 @@ End Class Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.[For](Of Foo)() - Dim x = [|substitute.{method}()|]{call} + Dim x = [|substitute.{method}(){call}|] End Sub End Class End Namespace"; diff --git a/tests/NSubstitute.Analyzers.Tests.VisualBasic/DiagnosticAnalyzersTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsOrdinaryMethodTests.cs b/tests/NSubstitute.Analyzers.Tests.VisualBasic/DiagnosticAnalyzersTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsOrdinaryMethodTests.cs index 93a4d772..a15e1c63 100644 --- a/tests/NSubstitute.Analyzers.Tests.VisualBasic/DiagnosticAnalyzersTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsOrdinaryMethodTests.cs +++ b/tests/NSubstitute.Analyzers.Tests.VisualBasic/DiagnosticAnalyzersTests/NonSubstitutableMemberReceivedAnalyzerTests/ReceivedAsOrdinaryMethodTests.cs @@ -31,7 +31,7 @@ Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.[For](Of Foo)() - [|{method}(substitute)|].Bar() + [|{method}(substitute).Bar()|] End Sub End Class End Namespace @@ -153,7 +153,7 @@ Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.[For](Of Foo)() - [|{method}(substitute)|].Bar() + [|{method}(substitute).Bar()|] End Sub End Class End Namespace @@ -353,7 +353,7 @@ Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.For(Of Foo) - Dim x As Integer = [|{method}(substitute)|].Bar + Dim x As Integer = [|{method}(substitute).Bar|] End Sub End Class End Namespace"; @@ -412,7 +412,7 @@ Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.For(Of Foo) - Dim x As Integer = [|{method}(substitute)|](1) + Dim x As Integer = [|{method}(substitute)(1)|] End Sub End Class End Namespace"; @@ -486,7 +486,7 @@ End Class Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.[For](Of Foo)() - Dim x = [|{method}(substitute)|]{call} + Dim x = [|{method}(substitute){call}|] End Sub End Class End Namespace"; @@ -552,7 +552,7 @@ End Class Public Class FooTests Public Sub Test() Dim substitute = NSubstitute.Substitute.[For](Of Foo)() - Dim x = [|{method}(substitute)|]{call} + Dim x = [|{method}(substitute){call}|] End Sub End Class End Namespace";