]> granicus.if.org Git - clang/commit
[SemaCXX] Fix ICE for unexpanded parameter pack
authorBrian Gesiak <modocache@gmail.com>
Mon, 7 Jan 2019 03:25:59 +0000 (03:25 +0000)
committerBrian Gesiak <modocache@gmail.com>
Mon, 7 Jan 2019 03:25:59 +0000 (03:25 +0000)
commit1a1eb1e55e1bccc461ae696bc445541f6fef3cd0
tree9016929cb1258e6d3757118af25090599abe688f
parent4b88e5a18e030f104e3816616adf9eb1962001e5
[SemaCXX] Fix ICE for unexpanded parameter pack

Summary:
The documentation for RecursiveASTVisitor::TraverseDecl states that the
Decl being traversed may be null. In fact, this is the case when a
CXXCatchStmt with no exception decl is traversed. Because the visitor
for diagnosing unexpanded parameter packs does not check for null, it
ends up crashing when it attempts to call the Decl::isParameterPack
method on a null Decl pointer.

Add a null check to prevent an ICE, and a test case that would crash
otherwise. Also, because the test requires C++ exceptions and C++14,
change the test parameters for the entire test file. (Alternatively, I
thought about adding a new test file, but went with this approach for my
own convenience.)

Co-authored-by: Andreas Molzer <andreas.molzer@gmx.de>
Co-authored-by: Mara Bos <m-ou.se@m-ou.se>
Reviewers: rsmith

Reviewed By: rsmith

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D56271

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@350501 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaTemplateVariadic.cpp
test/SemaCXX/alias-template.cpp