forked from OSchip/llvm-project
Don't invent a '$auto-x-y' name for auto types in generic lambdas. This is no
better than the 'template-parameter-x-y' name that we'd get in AST printing, and is worse in several ways (it's harder to distinguish it from a user-supplied name, it's wrong after substituting some number of outer levels, it wastes time and space constructing an IdentifierInfo, ...). llvm-svn: 225489
This commit is contained in:
parent
94a9ae776d
commit
b5d1a73988
|
@ -1007,16 +1007,7 @@ static QualType ConvertDeclSpecToType(TypeProcessingState &state) {
|
|||
const unsigned TemplateParameterDepth = LSI->AutoTemplateParameterDepth;
|
||||
const unsigned AutoParameterPosition = LSI->AutoTemplateParams.size();
|
||||
const bool IsParameterPack = declarator.hasEllipsis();
|
||||
|
||||
// Create a name for the invented template parameter type.
|
||||
std::string InventedTemplateParamName = "$auto-";
|
||||
llvm::raw_string_ostream ss(InventedTemplateParamName);
|
||||
ss << TemplateParameterDepth;
|
||||
ss << "-" << AutoParameterPosition;
|
||||
ss.flush();
|
||||
|
||||
IdentifierInfo& TemplateParamII = Context.Idents.get(
|
||||
InventedTemplateParamName.c_str());
|
||||
// Turns out we must create the TemplateTypeParmDecl here to
|
||||
// retrieve the corresponding template parameter type.
|
||||
TemplateTypeParmDecl *CorrespondingTemplateParam =
|
||||
|
@ -1031,7 +1022,7 @@ static QualType ConvertDeclSpecToType(TypeProcessingState &state) {
|
|||
/*NameLoc*/ declarator.getLocStart(),
|
||||
TemplateParameterDepth,
|
||||
AutoParameterPosition, // our template param index
|
||||
/* Identifier*/ &TemplateParamII, false, IsParameterPack);
|
||||
/* Identifier*/ nullptr, false, IsParameterPack);
|
||||
LSI->AutoTemplateParams.push_back(CorrespondingTemplateParam);
|
||||
// Replace the 'auto' in the function parameter with this invented
|
||||
// template type parameter.
|
||||
|
|
|
@ -50,7 +50,7 @@ int add(int x, int y) {
|
|||
}
|
||||
|
||||
// CHECK-PRINT: inline int add_int_slowly_twice
|
||||
// CHECK-PRINT: lambda = [] ($auto-0-0 z
|
||||
// CHECK-PRINT: lambda = [] (type-parameter-0-0 z
|
||||
|
||||
// CHECK-PRINT: init_capture
|
||||
// CHECK-PRINT: [&, x( t )]
|
||||
|
|
Loading…
Reference in New Issue