Skip to content

Commit

Permalink
clarify nullability
Browse files Browse the repository at this point in the history
  • Loading branch information
StephenCleary committed Jun 7, 2020
1 parent b46e672 commit 3be56a7
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 21 deletions.
14 changes: 7 additions & 7 deletions src/Nito.Disposables/AnonymousAsyncDisposable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public sealed class AnonymousAsyncDisposable : SingleAsyncDisposable<Func<ValueT
/// Creates a new disposable that executes <paramref name="dispose"/> when disposed.
/// </summary>
/// <param name="dispose">The delegate to execute when disposed. If this is <c>null</c>, then this instance does nothing when it is disposed.</param>
public AnonymousAsyncDisposable(Func<ValueTask> dispose)
public AnonymousAsyncDisposable(Func<ValueTask>? dispose)
: this(dispose, AsyncDisposeFlags.ExecuteConcurrently)
{
}
Expand All @@ -27,14 +27,14 @@ public AnonymousAsyncDisposable(Func<ValueTask> dispose)
/// </summary>
/// <param name="dispose">The delegate to execute when disposed. If this is <c>null</c>, then this instance does nothing when it is disposed.</param>
/// <param name="flags">Flags that control how asynchronous disposal is handled.</param>
public AnonymousAsyncDisposable(Func<ValueTask> dispose, AsyncDisposeFlags flags)
: base(dispose)
public AnonymousAsyncDisposable(Func<ValueTask>? dispose, AsyncDisposeFlags flags)
: base(dispose!)
{
_flags = flags;
}

/// <inheritdoc />
protected override ValueTask DisposeAsync(Func<ValueTask> context)
protected override ValueTask DisposeAsync(Func<ValueTask>? context)
{
if (context == null)
return new ValueTask();
Expand Down Expand Up @@ -64,7 +64,7 @@ private async ValueTask DoDisposeAsync(IReadOnlyList<Delegate> handlers)
/// Adds a delegate to be executed when this instance is disposed. If this instance is already disposed or disposing, then <paramref name="dispose"/> is executed immediately.
/// </summary>
/// <param name="dispose">The delegate to add. May be <c>null</c> to indicate no additional action.</param>
public ValueTask AddAsync(Func<ValueTask> dispose)
public ValueTask AddAsync(Func<ValueTask>? dispose)
{
if (dispose == null)
return new ValueTask();
Expand All @@ -76,8 +76,8 @@ public ValueTask AddAsync(Func<ValueTask> dispose)
/// <summary>
/// Creates a new disposable that executes <paramref name="dispose"/> when disposed.
/// </summary>
/// <param name="dispose">The delegate to execute when disposed. May not be <c>null</c>.</param>
public static AnonymousAsyncDisposable Create(Func<ValueTask> dispose) => new AnonymousAsyncDisposable(dispose);
/// <param name="dispose">The delegate to execute when disposed. If this is <c>null</c>, then this instance does nothing when it is disposed.</param>
public static AnonymousAsyncDisposable Create(Func<ValueTask>? dispose) => new AnonymousAsyncDisposable(dispose);
}
}
#endif
6 changes: 3 additions & 3 deletions src/Nito.Disposables/AnonymousDisposable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public AnonymousDisposable(Action? dispose)
}

/// <inheritdoc />
protected override void Dispose(Action context) => context?.Invoke();
protected override void Dispose(Action? context) => context?.Invoke();

/// <summary>
/// Adds a delegate to be executed when this instance is disposed. If this instance is already disposed or disposing, then <paramref name="dispose"/> is executed immediately.
Expand All @@ -34,7 +34,7 @@ public void Add(Action? dispose)
/// <summary>
/// Creates a new disposable that executes <paramref name="dispose"/> when disposed.
/// </summary>
/// <param name="dispose">The delegate to execute when disposed. May not be <c>null</c>.</param>
public static AnonymousDisposable Create(Action dispose) => new AnonymousDisposable(dispose);
/// <param name="dispose">The delegate to execute when disposed. If this is <c>null</c>, then this instance does nothing when it is disposed.</param>
public static AnonymousDisposable Create(Action? dispose) => new AnonymousDisposable(dispose);
}
}
12 changes: 6 additions & 6 deletions src/Nito.Disposables/CollectionAsyncDisposable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public sealed class CollectionAsyncDisposable : SingleAsyncDisposable<ImmutableQ
/// <summary>
/// Creates a disposable that disposes a collection of disposables.
/// </summary>
/// <param name="disposables">The disposables to dispose.</param>
/// <param name="disposables">The disposables to dispose. May not be <c>null</c>, and entries may not be <c>null</c>.</param>
public CollectionAsyncDisposable(params IAsyncDisposable[] disposables)
: this(disposables, AsyncDisposeFlags.ExecuteConcurrently)
{
Expand All @@ -26,7 +26,7 @@ public CollectionAsyncDisposable(params IAsyncDisposable[] disposables)
/// <summary>
/// Creates a disposable that disposes a collection of disposables.
/// </summary>
/// <param name="disposables">The disposables to dispose.</param>
/// <param name="disposables">The disposables to dispose. May not be <c>null</c>, and entries may not be <c>null</c>.</param>
public CollectionAsyncDisposable(IEnumerable<IAsyncDisposable> disposables)
: this(disposables, AsyncDisposeFlags.ExecuteConcurrently)
{
Expand All @@ -35,7 +35,7 @@ public CollectionAsyncDisposable(IEnumerable<IAsyncDisposable> disposables)
/// <summary>
/// Creates a disposable that disposes a collection of disposables.
/// </summary>
/// <param name="disposables">The disposables to dispose.</param>
/// <param name="disposables">The disposables to dispose. May not be <c>null</c>, and entries may not be <c>null</c>.</param>
/// <param name="flags">Flags that control how asynchronous disposal is handled.</param>
public CollectionAsyncDisposable(IEnumerable<IAsyncDisposable> disposables, AsyncDisposeFlags flags)
: base(ImmutableQueue.CreateRange(disposables))
Expand All @@ -61,7 +61,7 @@ protected override async ValueTask DisposeAsync(ImmutableQueue<IAsyncDisposable>
/// <summary>
/// Adds a disposable to the collection of disposables. If this instance is already disposed or disposing, then <paramref name="disposable"/> is disposed immediately.
/// </summary>
/// <param name="disposable">The disposable to add to our collection.</param>
/// <param name="disposable">The disposable to add to our collection. May not be <c>null</c>.</param>
public ValueTask AddAsync(IAsyncDisposable disposable)
{
_ = disposable ?? throw new ArgumentNullException(nameof(disposable));
Expand All @@ -73,13 +73,13 @@ public ValueTask AddAsync(IAsyncDisposable disposable)
/// <summary>
/// Creates a disposable that disposes a collection of disposables.
/// </summary>
/// <param name="disposables">The disposables to dispose.</param>
/// <param name="disposables">The disposables to dispose. May not be <c>null</c>, and entries may not be <c>null</c>.</param>
public static CollectionDisposable Create(params IDisposable[] disposables) => new CollectionDisposable(disposables);

/// <summary>
/// Creates a disposable that disposes a collection of disposables.
/// </summary>
/// <param name="disposables">The disposables to dispose.</param>
/// <param name="disposables">The disposables to dispose. May not be <c>null</c>, and entries may not be <c>null</c>.</param>
public static CollectionDisposable Create(IEnumerable<IDisposable> disposables) => new CollectionDisposable(disposables);
}
}
Expand Down
10 changes: 5 additions & 5 deletions src/Nito.Disposables/CollectionDisposable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public sealed class CollectionDisposable : SingleDisposable<ImmutableQueue<IDisp
/// <summary>
/// Creates a disposable that disposes a collection of disposables.
/// </summary>
/// <param name="disposables">The disposables to dispose.</param>
/// <param name="disposables">The disposables to dispose. May not be <c>null</c>, and entries may not be <c>null</c>.</param>
public CollectionDisposable(params IDisposable[] disposables)
: this((IEnumerable<IDisposable>)disposables)
{
Expand All @@ -21,7 +21,7 @@ public CollectionDisposable(params IDisposable[] disposables)
/// <summary>
/// Creates a disposable that disposes a collection of disposables.
/// </summary>
/// <param name="disposables">The disposables to dispose.</param>
/// <param name="disposables">The disposables to dispose. May not be <c>null</c>, and entries may not be <c>null</c>.</param>
public CollectionDisposable(IEnumerable<IDisposable> disposables)
: base(ImmutableQueue.CreateRange(disposables))
{
Expand All @@ -37,7 +37,7 @@ protected override void Dispose(ImmutableQueue<IDisposable> context)
/// <summary>
/// Adds a disposable to the collection of disposables. If this instance is already disposed or disposing, then <paramref name="disposable"/> is disposed immediately.
/// </summary>
/// <param name="disposable">The disposable to add to our collection.</param>
/// <param name="disposable">The disposable to add to our collection. May not be <c>null</c>.</param>
public void Add(IDisposable disposable)
{
_ = disposable ?? throw new ArgumentNullException(nameof(disposable));
Expand All @@ -48,13 +48,13 @@ public void Add(IDisposable disposable)
/// <summary>
/// Creates a disposable that disposes a collection of disposables.
/// </summary>
/// <param name="disposables">The disposables to dispose.</param>
/// <param name="disposables">The disposables to dispose. May not be <c>null</c>, and entries may not be <c>null</c>.</param>
public static CollectionDisposable Create(params IDisposable[] disposables) => new CollectionDisposable(disposables);

/// <summary>
/// Creates a disposable that disposes a collection of disposables.
/// </summary>
/// <param name="disposables">The disposables to dispose.</param>
/// <param name="disposables">The disposables to dispose. May not be <c>null</c>, and entries may not be <c>null</c>.</param>
public static CollectionDisposable Create(IEnumerable<IDisposable> disposables) => new CollectionDisposable(disposables);
}
}

0 comments on commit 3be56a7

Please sign in to comment.