]> granicus.if.org Git - clang/commit
SemaCXX: Support templates in availability attributes
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 26 Feb 2016 19:27:00 +0000 (19:27 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 26 Feb 2016 19:27:00 +0000 (19:27 +0000)
commita004401660d68b3cd8e272e75c535003b6c02e53
tree278e3521fcc8ead28c7d5cdd1531fe7537d6e1dd
parent2da60ba8cce2deb639056e254e1a191f919ba726
SemaCXX: Support templates in availability attributes

If the availability context is `FunctionTemplateDecl`, we should look
through it to the `FunctionDecl`.  This prevents a diagnostic in the
following case:

    class C __attribute__((unavailable));
    template <class T> void foo(C&) __attribute__((unavailable));

This adds tests for availability in templates in many other cases, but
that was the only case that failed before this patch.

I added a feature `__has_feature(attribute_availability_in_templates)`
so users can test for this.

rdar://problem/24561029

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262050 91177308-0d34-0410-b5e6-96231b3b80d8
lib/AST/DeclBase.cpp
lib/Lex/PPMacroExpansion.cpp
test/SemaCXX/attr-unavailable.cpp