Make getAttr, getSpecificAttr, hasAttr, and hasSpecificAttr variadic #78518
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.
Discussed elsewhere, it makes sense to have these functions be variadic. They work as an 'or', that is, 'hasAttr' is "one of the set", and "getAttr" means "first of the set".
This is accomplished by extracting specific_attr_iterator into a _impl version, and creating a version + partial specialization for the _iterator version that inherits from the _impl. The result is that all of the 'existing' code 'just works'.
One exception (see the change in SemaOverload.cpp) could be solved with a conversion function, but instead I put 'auto' in. Else, I could specify the 'AttrVec' if it were preferential.