aaron.ballman (Aaron Ballman)
User

Projects

User does not belong to any projects.

User Details

User Since
Mar 14 2013, 3:16 PM (218 w, 4 d)

Recent Activity

Today

aaron.ballman accepted D31414: [NFC, Refactor] Modernize TemplateIdAnnotation using TrailingObjects.

LGTM!

Mon, May 22, 11:08 AM · Restricted Project
aaron.ballman added a comment to D33333: Emit warning when throw exception in destruct or dealloc functions which has a (possible implicit) noexcept specifier.
In D33333#761224, @rnk wrote:

Re: clang-tidy, I would rather implement this as a traditional compiler warning.

In D33333#761126, @jyu2 wrote:

As I said, I don't think checking throw type matching catch handler type is compiler's job. I'd like either silence all warning for that. What do you think?

Consider the following cases:
...
I think the expected behavior in these cases is reasonable (and can be done with a CFG) rather than manually looking at the scope stack like you're doing.

I agree with @jyu2, we should do something simple. I think it would be simple to handle all cases except for h, which requires semantic analysis to figure out if the thrown object would be caught by the catch parameter. Implementing that is more likely to introduce bugs in the compiler than it is to find bugs in user code.

Mon, May 22, 11:06 AM
aaron.ballman added a comment to D33333: Emit warning when throw exception in destruct or dealloc functions which has a (possible implicit) noexcept specifier.
In D33333#761126, @jyu2 wrote:
In D33333#760419, @jyu2 wrote:

As an FYI, there is a related check currently under development in clang-tidy; we probably should not duplicate this functionality in both places. See https://reviews.llvm.org/D19201 for the other review.

To my understanding, clang-tidy is kind of source check tool. It does more intensive checking than compiler.
My purpose here is to emit minimum warning form compiler, in case, clang-tidy is not used.

Sort of correct. clang-tidy doesn't necessarily do more intensive checking than the compiler. It's more an AST matching source checking tool for checks that are either expensive or have a higher false-positive rate than we'd want to see in the frontend.

I think that this particular check should probably be in the frontend, like you're doing. My biggest concern is that we do not duplicate functionality between the two tools. D19201 has has a considerable amount of review, so you should look at the test cases there and ensure you are handling them (including the fixits). Hopefully your patch ends up covering all of the functionality in the clang-tidy patch.

Could you add similar tests as the ones that Stanislaw provied in his patch?
Like the one with checking if throw is catched, or the conditional noexcept (by a macro, etc)

Good idea! Could add “marco” test for this. But I am not sure compiler want to add check for throw caught by different catch handler. Because at compile time, compiler can not statically determine which catch handler will be used to caught the exception on all time. I would think that is pragma's responsibility.

For example:

If (a) throw A else throw B;

My main concern there is implicit noexcept gets set by compiler, which cause runtime to termination.

As I said, I don't think checking throw type matching catch handler type is compiler's job. I'd like either silence all warning for that. What do you think?

Mon, May 22, 10:42 AM
aaron.ballman added inline comments to D31414: [NFC, Refactor] Modernize TemplateIdAnnotation using TrailingObjects.
Mon, May 22, 7:10 AM · Restricted Project
aaron.ballman added inline comments to D33135: [ASTMatchers] Add support for floatLiterals.
Mon, May 22, 5:15 AM
aaron.ballman added inline comments to D33094: [ASTMatchers] Add clang-query support for equals matcher.
Mon, May 22, 5:05 AM

Yesterday

aaron.ballman added inline comments to D33094: [ASTMatchers] Add clang-query support for equals matcher.
Sun, May 21, 11:12 AM
aaron.ballman added a reviewer for D33333: Emit warning when throw exception in destruct or dealloc functions which has a (possible implicit) noexcept specifier: aaron.ballman.
In D33333#760419, @jyu2 wrote:

As an FYI, there is a related check currently under development in clang-tidy; we probably should not duplicate this functionality in both places. See https://reviews.llvm.org/D19201 for the other review.

To my understanding, clang-tidy is kind of source check tool. It does more intensive checking than compiler.
My purpose here is to emit minimum warning form compiler, in case, clang-tidy is not used.

Sun, May 21, 9:33 AM
aaron.ballman added a comment to D33135: [ASTMatchers] Add support for floatLiterals.

By the way, I think that long double is less common than long unsigned literals, so changing unsigned to uint64_t might be something more important?

Sun, May 21, 7:48 AM
aaron.ballman added a comment to D19201: [clang-tidy] misc-throw-with-noexcept.

As an FYI, there is a related check being implemented in clang currently; we probably should not duplicate this effort. See https://reviews.llvm.org/D33333.

I think that clang is the right place for this feature, but I am not sure if the patch has all the features (like checking if something will be catched, or not showing warning for conditional noexcepts, which as we have seen
could be a problem for some projects. There also might be some other corner cases that we didn't think about.
Assuming that this patch is ready to land, I would propose to send it to trunk and remove it when the clang's patch will make it to the trunk. I am not sure how much time it will take for other patch to be ready, but maybe we could gather some usefull bug reports in the meantime and also Stanislaw would have a contribution.

Sun, May 21, 7:08 AM

Sat, May 20

aaron.ballman added a comment to D19201: [clang-tidy] misc-throw-with-noexcept.

As an FYI, there is a related check being implemented in clang currently; we probably should not duplicate this effort. See https://reviews.llvm.org/D33333.

Sat, May 20, 5:35 AM
aaron.ballman added a comment to D33333: Emit warning when throw exception in destruct or dealloc functions which has a (possible implicit) noexcept specifier.

As an FYI, there is a related check currently under development in clang-tidy; we probably should not duplicate this functionality in both places. See https://reviews.llvm.org/D19201 for the other review.

Sat, May 20, 5:34 AM

Thu, May 18

aaron.ballman added a comment to D33304: [WIP][clang-tidy] Add a new module Android and a new check for file descriptors. .

I find the use of "must" at the very least inappropriate. If there was no use case for not including it, it wouldn't be an option. There is also nothing really Android-specific here beside maybe the open64 mess.

On Android, we are requiring this flag. That is why this is part of a new category of Android-specific tidy rules. If you think this belongs more generally in a different category for tidy, can you suggest somewhere else to put it? We didn't want to impose these restrictions for platforms that might not want to be so strict. Also, as with any static analysis, there is the possibility that the original code author intended to "break" the rules, but that is what NOLINT is for.

I'm not keen on putting this in an Android module either, as it's not really Android-specific behavior. For instance, this is also part of a recommended compliant solution for CERT FIO22-C.

I think AOSP has enough specific guidelines and requirements to warrant a separate module (especially, if Android folks have plans to contribute more than one check into it ;). As for this check, if the relevant requirements of CERT and Android are really identical, we could make an alias for the check in the CERT module (or vice versa). Another possibility that comes to mind is to create a new "posix" module specifically for things related to POSIX APIs (or "unix", if we want it to be slightly broader). WDYT?

Thu, May 18, 12:17 PM · Restricted Project
aaron.ballman added a comment to D33304: [WIP][clang-tidy] Add a new module Android and a new check for file descriptors. .

I find the use of "must" at the very least inappropriate. If there was no use case for not including it, it wouldn't be an option. There is also nothing really Android-specific here beside maybe the open64 mess.

On Android, we are requiring this flag. That is why this is part of a new category of Android-specific tidy rules. If you think this belongs more generally in a different category for tidy, can you suggest somewhere else to put it? We didn't want to impose these restrictions for platforms that might not want to be so strict. Also, as with any static analysis, there is the possibility that the original code author intended to "break" the rules, but that is what NOLINT is for.

Thu, May 18, 10:45 AM · Restricted Project

Fri, May 12

aaron.ballman added inline comments to D33135: [ASTMatchers] Add support for floatLiterals.
Fri, May 12, 10:08 AM
aaron.ballman added a comment to D32332: Add support for transparent overloadable functions in clang.

I'd be happy with that approach. Do you like it, Aaron?

Fri, May 12, 4:47 AM

Thu, May 11

aaron.ballman added inline comments to D33094: [ASTMatchers] Add clang-query support for equals matcher.
Thu, May 11, 6:41 AM
aaron.ballman accepted D33093: [ASTMatchers] Add support for boolean literals.

LGTM!

Thu, May 11, 6:01 AM
aaron.ballman added a reviewer for D33094: [ASTMatchers] Add clang-query support for equals matcher: aaron.ballman.

Please be sure to regenerate the AST matcher documentation as well by running clang/docs/tools/dump_ast_matchers.py

Thu, May 11, 5:54 AM

Wed, May 10

aaron.ballman added a comment to D32942: [clang-tidy] readability-function-size: add NestingThreshold param..

LGTM!

Thanks.
I guess we want to wait a bit more for @alexfh to leave any comment?

Wed, May 10, 2:03 PM · Restricted Project
aaron.ballman accepted D32942: [clang-tidy] readability-function-size: add NestingThreshold param..

LGTM!

Wed, May 10, 12:05 PM · Restricted Project
aaron.ballman added inline comments to D32332: Add support for transparent overloadable functions in clang.
Wed, May 10, 12:02 PM
aaron.ballman added inline comments to D32942: [clang-tidy] readability-function-size: add NestingThreshold param..
Wed, May 10, 8:39 AM · Restricted Project
aaron.ballman accepted D33036: [Support/Compiler.h] - Use gnu::fallthrough for LLVM_FALLTHROUGH when available..

This looks reasonable to me.

Wed, May 10, 6:19 AM

Tue, May 9

aaron.ballman accepted D32743: [clang-tidy] Add new cert-dcl21-cpp check. .

LGTM!

Tue, May 9, 1:37 PM · Restricted Project
aaron.ballman added a comment to D32942: [clang-tidy] readability-function-size: add NestingThreshold param..

Have you tried running this over a large code base to see how frequently the diagnostic triggers? I'm wondering why 10 was chosen as the default threshold.

Tue, May 9, 8:11 AM · Restricted Project

Mon, May 8

aaron.ballman added inline comments to D32743: [clang-tidy] Add new cert-dcl21-cpp check. .
Mon, May 8, 6:53 AM · Restricted Project
aaron.ballman closed D32935: [clang] ThreadSafetyAnalysis.rst: fix spelling of {PT_}GUARDED_VAR attributes.

Committed in r302419, thank you!

Mon, May 8, 5:52 AM
aaron.ballman accepted D32935: [clang] ThreadSafetyAnalysis.rst: fix spelling of {PT_}GUARDED_VAR attributes.

LGTM, thank you! Do you need me to commit this for you?

Mon, May 8, 5:37 AM
aaron.ballman added inline comments to D32743: [clang-tidy] Add new cert-dcl21-cpp check. .
Mon, May 8, 5:33 AM · Restricted Project

Fri, May 5

aaron.ballman accepted D32923: [clang-tidy] Use cxxStdInitializerListExpr in modernize-use-emplace.

LGTM!

Fri, May 5, 3:48 PM · Restricted Project
aaron.ballman added inline comments to D32743: [clang-tidy] Add new cert-dcl21-cpp check. .
Fri, May 5, 1:35 PM · Restricted Project
aaron.ballman closed D32917: [clang] ThreadSafetyAnalysis.rst: do not re-define THREAD_ANNOTATION_ATTRIBUTE__ macro.

Thanks! I've commit in r302275.

Fri, May 5, 1:09 PM
aaron.ballman accepted D32917: [clang] ThreadSafetyAnalysis.rst: do not re-define THREAD_ANNOTATION_ATTRIBUTE__ macro.

LGTM!

Fri, May 5, 1:05 PM

Wed, May 3

aaron.ballman accepted D32767: [clang-tidy] Fix PR32896: detect initializer lists in modernize-use-empalce.

LGTM!

Wed, May 3, 12:22 PM · Restricted Project
aaron.ballman accepted D32810: Add cxxStdInitializerListExpr AST matcher.

LGTM!

Wed, May 3, 12:00 PM
aaron.ballman added inline comments to D31130: B32239 clang-tidy should not warn about array to pointer decay on system macros.
Wed, May 3, 11:43 AM
aaron.ballman added inline comments to D32767: [clang-tidy] Fix PR32896: detect initializer lists in modernize-use-empalce.
Wed, May 3, 11:13 AM · Restricted Project
aaron.ballman added a comment to D32743: [clang-tidy] Add new cert-dcl21-cpp check. .

Thank you for working on this check!

Wed, May 3, 6:57 AM · Restricted Project
aaron.ballman added a comment to D32332: Add support for transparent overloadable functions in clang.

thanks for the feedback!

fwiw, at a high level, the main problem i'm trying to solve with this is that you can't really make a __overloadable_without_mangling macro without handing it the function name, since you currently need to use __asm__("name-you'd-like-the-function-to-have") to rename the function. if you can think of a better way to go about this, even if it requires that we drop the "no overloadable required on some redeclarations" feature this adds, i'm all ears. :)

Wed, May 3, 5:54 AM
aaron.ballman accepted D32697: Reusing an existing attribute diagnostic.

LGTM!

Wed, May 3, 5:19 AM

Mon, May 1

aaron.ballman added a comment to D32419: plauggable attributes-by john.brawn.

There appears to be a lot of unrelated changes in this patch. For instance Fuchsia-stage2.cmake, NamespaceEndCommentsFixerTest.cpp, and things in CommentSema.h.

Mon, May 1, 3:07 PM
aaron.ballman added a reviewer for D32332: Add support for transparent overloadable functions in clang: rsmith.

I'm adding Richard to the review because he may have opinions on this functionality.

Mon, May 1, 2:58 PM
aaron.ballman added a comment to D32210: [Sema][ObjC] Add support for attribute "noescape".

The attribute is not used anywhere; the initial utility should be part of the patch introducing the attribute, unless that utility makes the patch very large.

Mon, May 1, 2:50 PM
aaron.ballman added inline comments to D32697: Reusing an existing attribute diagnostic.
Mon, May 1, 6:35 AM
aaron.ballman abandoned D32181: Remove use of coverage-file flag.

I've commit in r301796. Rather than accept my own review and then close it, I am marking it as abandoned.

Mon, May 1, 6:18 AM

Fri, Apr 28

aaron.ballman added inline comments to D29768: [TargetInfo] Set 'UseSignedCharForObjCBool' to false by default.
Fri, Apr 28, 7:23 AM

Wed, Apr 26

aaron.ballman accepted D31871: [X86] Support of no_caller_saved_registers attribute (Clang part) - restart.

LGTM!

Wed, Apr 26, 11:27 AM
aaron.ballman added a comment to D31871: [X86] Support of no_caller_saved_registers attribute (Clang part) - restart.

Hi Aaron, Please let me know if you have additional comments.

Wed, Apr 26, 5:22 AM

Mon, Apr 24

aaron.ballman closed D31542: [clang-tidy] Extend readability-container-size-empty to add comparisons to newly-constructed objects.

I've commit in r301185, thank you!

Mon, Apr 24, 8:10 AM · Restricted Project

Sun, Apr 23

aaron.ballman added a comment to D30158: [clang-tidy] modernize: Find usage of random_shuffle and replace it with shuffle..

This continues to LGTM; do you need someone to land the patch for you?

Sun, Apr 23, 9:58 AM
aaron.ballman added a comment to D31542: [clang-tidy] Extend readability-container-size-empty to add comparisons to newly-constructed objects.

Are there any further changes I should make, or is this good to submit now?

Thanks!

Sun, Apr 23, 9:56 AM · Restricted Project
aaron.ballman added inline comments to D31871: [X86] Support of no_caller_saved_registers attribute (Clang part) - restart.
Sun, Apr 23, 9:54 AM
aaron.ballman added a comment to D32181: Remove use of coverage-file flag.

Ping. (If I don't hear back, I will assume this is noncontroversial and go ahead and commit sometime next week.)

Sun, Apr 23, 9:47 AM

Apr 19 2017

aaron.ballman accepted D32207: Corrrect warn_unused_result attribute .

LGTM!

Apr 19 2017, 1:23 PM
aaron.ballman added a comment to D32207: Corrrect warn_unused_result attribute .

I'm surprised this change didn't cause any other tests to need to be updated. A few small formatting nits and a request for another test, but otherwise looking good.

Apr 19 2017, 12:36 PM
aaron.ballman added inline comments to D31542: [clang-tidy] Extend readability-container-size-empty to add comparisons to newly-constructed objects.
Apr 19 2017, 11:29 AM · Restricted Project
aaron.ballman added a comment to D32207: Corrrect warn_unused_result attribute .

1 more thing: I excepted post-increment/decrement from this warning because I figured it would give a TON of warnings from people using post-inc/dec in for loops.

However, after further discussion with Craig (who brought this up on the mailing list), I severely wonder if that is the 'right' thing to do. Someone who is going to mark their struct in this way would likely ALSO mean it in this case, right?

Aaron: Should I simply remove the special casing all together, so that it warns on post inc/dec? That would definitely solve all your concerns in the review so far.

Apr 19 2017, 10:50 AM
aaron.ballman added inline comments to D31871: [X86] Support of no_caller_saved_registers attribute (Clang part) - restart.
Apr 19 2017, 8:54 AM
aaron.ballman accepted D32176: Add #pragma clang attribute support for the external_source_symbol attribute.

LGTM

Apr 19 2017, 8:51 AM
aaron.ballman added inline comments to D32210: [Sema][ObjC] Add support for attribute "noescape".
Apr 19 2017, 7:22 AM
aaron.ballman added inline comments to D32207: Corrrect warn_unused_result attribute .
Apr 19 2017, 6:37 AM
aaron.ballman added inline comments to D31871: [X86] Support of no_caller_saved_registers attribute (Clang part) - restart.
Apr 19 2017, 5:45 AM
aaron.ballman added inline comments to D32176: Add #pragma clang attribute support for the external_source_symbol attribute.
Apr 19 2017, 5:35 AM

Apr 18 2017

aaron.ballman created D32181: Remove use of coverage-file flag.
Apr 18 2017, 11:13 AM
aaron.ballman accepted D31542: [clang-tidy] Extend readability-container-size-empty to add comparisons to newly-constructed objects.

LGTM

Apr 18 2017, 6:40 AM · Restricted Project

Apr 15 2017

aaron.ballman added a comment to D31542: [clang-tidy] Extend readability-container-size-empty to add comparisons to newly-constructed objects.

... which has the wrong precedence; an extra set of parens is necessary.
However, I don't want to add a set of parens if it isn't necessary. ...

Apr 15 2017, 6:31 AM · Restricted Project
aaron.ballman closed D31869: Register isStaticStorageClass matcher.

Thanks! I've commit in r300400.

Apr 15 2017, 6:06 AM
aaron.ballman accepted D31757: [clang-tidy] Add a clang-tidy check for possible inefficient vector operations.

LGTM!

Apr 15 2017, 6:04 AM

Apr 14 2017

aaron.ballman added a comment to D32092: Attribute inline.

Yes I did compare "inline" with "declspec(inline)" and not with "__attribute((gnu_inline))" and didn't test it whit different specifiers. I can do that.
If behavior is different we probably have to add an additional attribute?

Apr 14 2017, 2:01 PM
aaron.ballman added a comment to D32092: Attribute inline.

Forgot to mention that this is for C only. CL doesn't compile this declaration in a C++ context.
Please see:
https://godbolt.org/g/WRhyjL

Apr 14 2017, 12:38 PM
aaron.ballman added a comment to D32092: Attribute inline.

ksh-3.2$ cat test3.c
static void __declspec(inline) foo() {
}

int main()
{

foo();

}

ksh-3.2$ cl test3.c
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24215.1 for x64
Copyright (C) Microsoft Corporation. All rights reserved.

test3.c
Microsoft (R) Incremental Linker Version 14.00.24215.1
Copyright (C) Microsoft Corporation. All rights reserved.

/out:test3.exe
test3.obj
ksh-3.2$

This is for an application that we are running here that is failing.

Apr 14 2017, 12:06 PM
aaron.ballman added inline comments to D32092: Attribute inline.
Apr 14 2017, 11:53 AM
aaron.ballman edited reviewers for D32092: Attribute inline, added: aaron.ballman; removed: cfe-commits.
Apr 14 2017, 11:50 AM
aaron.ballman added inline comments to D31757: [clang-tidy] Add a clang-tidy check for possible inefficient vector operations.
Apr 14 2017, 11:47 AM

Apr 13 2017

aaron.ballman added inline comments to D31757: [clang-tidy] Add a clang-tidy check for possible inefficient vector operations.
Apr 13 2017, 1:54 PM
aaron.ballman added inline comments to D31757: [clang-tidy] Add a clang-tidy check for possible inefficient vector operations.
Apr 13 2017, 7:20 AM
aaron.ballman accepted D31976: Avoid assert when a non-static member function is qualified with __unaligned.

This seems reasonable to me, but you should wait for confirmation before committing (I'm not as familiar with the mangler as others are).

Apr 13 2017, 6:45 AM
aaron.ballman added inline comments to D31871: [X86] Support of no_caller_saved_registers attribute (Clang part) - restart.
Apr 13 2017, 6:37 AM

Apr 11 2017

aaron.ballman added inline comments to D31757: [clang-tidy] Add a clang-tidy check for possible inefficient vector operations.
Apr 11 2017, 2:02 PM
aaron.ballman closed D31153: Add the ability to use the children() range API in a const-correct manner.

Commit in r299981.

Apr 11 2017, 1:34 PM
aaron.ballman added inline comments to D31153: Add the ability to use the children() range API in a const-correct manner.
Apr 11 2017, 10:51 AM
aaron.ballman added inline comments to D31153: Add the ability to use the children() range API in a const-correct manner.
Apr 11 2017, 10:27 AM
aaron.ballman updated the diff for D31153: Add the ability to use the children() range API in a const-correct manner.

Addressing review comments.

Apr 11 2017, 10:27 AM
aaron.ballman added inline comments to D31757: [clang-tidy] Add a clang-tidy check for possible inefficient vector operations.
Apr 11 2017, 8:22 AM
aaron.ballman added inline comments to D31757: [clang-tidy] Add a clang-tidy check for possible inefficient vector operations.
Apr 11 2017, 7:01 AM
aaron.ballman updated the diff for D31153: Add the ability to use the children() range API in a const-correct manner.

Addressing David's review feedback.

Apr 11 2017, 6:22 AM

Apr 10 2017

aaron.ballman accepted D30158: [clang-tidy] modernize: Find usage of random_shuffle and replace it with shuffle..

There are a few small nits I've mentioned, but otherwise LGTM.

Apr 10 2017, 3:30 PM
aaron.ballman added a comment to D22045: [X86] Support of no_caller_saved_registers attribute (Clang part).

There appears to be two reviews out for this same functionality. You should probably close one of the reviews (but still address the comments from it).

Apr 10 2017, 1:36 PM
aaron.ballman added a comment to D31871: [X86] Support of no_caller_saved_registers attribute (Clang part) - restart.

Please remove the svn prop changes for the two test files. Also, I'd like to see a test that this is properly diagnosed as both a function and a type attribute on a non-x86 architecture, as well as tests that it is properly diagnosed on a type other than a function pointer as well as with arguments on a function pointer (the current tests only test on a declaration rather than a type).

Apr 10 2017, 1:35 PM
aaron.ballman accepted D31869: Register isStaticStorageClass matcher.

LGTM; I don't think this needs a test case.

Apr 10 2017, 11:06 AM

Apr 7 2017

aaron.ballman added a comment to D31757: [clang-tidy] Add a clang-tidy check for possible inefficient vector operations.

Isn't such analysis is path-sensitive and should be implemented in Static Analyzer?

This check is more like a flow-sensitive analysis IMO, which can be supported by clang-tidy.

Apr 7 2017, 11:07 AM
aaron.ballman accepted D30009: Add support for '#pragma clang attribute'.

This LGTM, but you should give @rsmith some time to review before committing in case he catches something I've missed.

Apr 7 2017, 7:44 AM

Apr 5 2017

aaron.ballman added inline comments to D30009: Add support for '#pragma clang attribute'.
Apr 5 2017, 4:34 PM
aaron.ballman added inline comments to D30009: Add support for '#pragma clang attribute'.
Apr 5 2017, 5:13 AM

Apr 4 2017

aaron.ballman added a reviewer for D30009: Add support for '#pragma clang attribute': rsmith.

Adding Richard, since this is a fairly extensive change to the frontend and he may have some opinions as well.

Apr 4 2017, 4:32 PM
aaron.ballman added a comment to D30009: Add support for '#pragma clang attribute'.

Thank you for the update! I think this is getting close, though I have a few more comments inline.

Apr 4 2017, 4:31 PM
aaron.ballman added a comment to D31168: Set FMF for -ffp-contract=fast.

LGTM. but you should wait for someone more familiar with this part of codegen before committing.

Apr 4 2017, 6:52 AM
aaron.ballman added inline comments to D31308: [clang-tidy] new check readability-no-alternative-tokens.
Apr 4 2017, 6:06 AM
aaron.ballman accepted D31513: [Sema] Add __is_aggregate type-trait.

LGTM!

Apr 4 2017, 5:11 AM