]> granicus.if.org Git - clang/commit
Track whether a function type has a trailing return type as type sugar. Use this
authorRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 10 Feb 2012 09:58:53 +0000 (09:58 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 10 Feb 2012 09:58:53 +0000 (09:58 +0000)
commiteefb3d5b49c844347f212073a7e975b8118fe8e9
treec3493ab063010eff7342253e22bd8245b21c8774
parent09aaaa43cd5e24d21c666350476802e7d01d6988
Track whether a function type has a trailing return type as type sugar. Use this
to pretty-print such function types better, and to fix a case where we were not
instantiating templates in lexical order. In passing, move the Variadic bit from
Type's bitfields to FunctionProtoType to get the Type bitfields down to 32 bits.
Also ensure that we always substitute the return type of a function when
substituting explicitly-specified arguments, since that can cause us to bail
out with a SFINAE error before we hit a hard error in parameter substitution.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150241 91177308-0d34-0410-b5e6-96231b3b80d8
14 files changed:
include/clang/AST/Type.h
include/clang/Sema/Sema.h
lib/AST/ASTContext.cpp
lib/AST/Type.cpp
lib/AST/TypePrinter.cpp
lib/Sema/SemaLambda.cpp
lib/Sema/SemaTemplateDeduction.cpp
lib/Sema/SemaType.cpp
lib/Sema/TreeTransform.h
lib/Serialization/ASTReader.cpp
lib/Serialization/ASTWriter.cpp
test/PCH/cxx-trailing-return.cpp [new file with mode: 0644]
test/SemaCXX/trailing-return-0x.cpp
test/SemaTemplate/instantiation-order.cpp [new file with mode: 0644]