Support async custom completion functions for AsyncParsableCommand via async/await
#855
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.
DispatchSemaphore, so more modern standards compliant & will work for platforms that do not haveDispatchSemaphore.DispatchSemaphoreimplementation hangs when any async custom completions run if the root command is a syncParsableCommand; async custom completions do not hang because ofDispatchSemaphoreif the root command is anAsyncParsableCommand, regardless if the command containing the property for the completing argument is a syncParsableCommandor anAsyncParsableCommand.ParsableCommand.ParsableArguments#_errorLabelDocC (unrelated, but just noticed it should be improved).A few potential issues with / questions about what you want from this PR:
AsyncParsableCommandroot commands.ParsableCommand.ParsableCommandtoAsyncParsableCommand, since Swift Concurrency must be available, since the code is trying to use an async function for completion.ParsableCommand, aParserError.invalidStateis thrown during runtime when completion candidates are requested from an async custom completion function.Checklist