rspec/rules/S4586/vbnet/rule.adoc

69 lines
1.6 KiB
Plaintext
Raw Normal View History

:keyword_null: Nothing
:keyword_async: Async
:concept_method: procedure
:typeparameter_TResult: (Of TResult)
== Why is this an issue?
2020-06-30 12:49:37 +02:00
include::../why-dotnet.adoc[]
2020-06-30 12:49:37 +02:00
[source,vbnet]
2020-06-30 12:49:37 +02:00
----
Public Function DoFooAsync() As Task
Return Nothing ' Noncompliant: Causes a NullReferenceException if awaited.
End Function
Public Async Function Main() As Task
Await DoFooAsync() ' NullReferenceException
2020-06-30 12:49:37 +02:00
End Function
----
== How to fix it
include::../how-to-fix-it-dotnet.adoc[]
=== Code examples
A `Task` returning {concept_method} can be fixed like so:
==== Noncompliant code example
[source,vbnet,diff-id=1,diff-type=noncompliant]
----
Public Function DoFooAsync() As Task
Return Nothing ' Noncompliant: Causes a NullReferenceException if awaited.
End Function
----
2020-06-30 12:49:37 +02:00
==== Compliant solution
[source,vbnet,diff-id=1,diff-type=compliant]
----
Public Function DoFooAsync() As Task
Return Task.CompletedTask ' Compliant: Method can be awaited.
End Function
----
A `Task{typeparameter_TResult}` returning {concept_method} can be fixed like so:
==== Noncompliant code example
[source,vbnet,diff-id=2,diff-type=noncompliant]
2020-06-30 12:49:37 +02:00
----
Public Function GetFooAsync() As Task(Of Object)
Return Nothing ' Noncompliant: Causes a NullReferenceException if awaited.
2020-06-30 12:49:37 +02:00
End Function
----
==== Compliant solution
[source,vbnet,diff-id=2,diff-type=compliant]
----
Public Function GetFooAsync() As Task(Of Object)
Return Task.FromResult(Of Object)(Nothing) ' Compliant: Method can be awaited.
End Function
----
include::../resources.adoc[]
include::../rspecator.adoc[]