Ensure ForwardCancellationTokenAnalyzer treats usages of default expressions properly #6617
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backports the following to the release-8.0 branch.
This fixes a bug discovered in the ForwardCancellationTokenAnalyzer and adds several more test cases.
The analyzer is supposed to ignore when you pass
CancellationToken.None
, but throwing an exception when doing the same thing but by using a default operator or literal which were introduced between C# 7 and 8:This requires better analysis to make sure the presence of
default
doesn't throw it off:This PR also introduces several test cases around the use of
await foreach…
when using async enumerables.Symptoms
During development, the following compiler warning is observed:
Who's affected
Anyone using NServiceBus 8.0.0 attempting to analyze code that passes
default(CancellationToken)
ordefault
for a CancellationToken parameter is affected.Root cause
The root cause is a bug in an NServiceBus analyzer which was not expecting one of the default expressions to be used.