Fix phobos.sys.traits.isAggregateType to handle enums. #9089
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.
The std.traits version does not take enums into account (and prior to this commit, neither does the phobos.sys version), but upon reflection, it seems like it's just likely to cause bugs if it doesn't take enums into account. Granted, enums whose base type is an aggregate type don't seem to be very common, but as a result of that, code that tests for aggregate types likely won't take them into account in the vast majority of cases, and I see no reason to not have the trait just deal with it rather than hoping that the user of the trait realizes that it's a potential issue, in which case, they would need to explicitly use OriginalType themselves to make it work for enums.
In addition, this way, OriginalType doesn't even get instantiated unless the type is actually an enum, whereas the correct solution that would most likely be used otherwise would be to just always do isAggregateType!(OriginalType!T) instead of isAggregateType!T.
I also put a ddoc comment on the unittest block, since I apparently missed it previously.