diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-10-12 18:23:32 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-10-12 18:23:32 +0000 |
| commit | 758cb67fcfc602b40e1e4448be5802c70f4cff04 (patch) | |
| tree | 22e52b64567bb67d7b11670d1e119ac976a4368a /clang/lib/Sema/SemaTemplateInstantiate.cpp | |
| parent | eb7b91d41742989bf9e74becf050c4cdf6056a50 (diff) | |
| download | bcm5719-llvm-758cb67fcfc602b40e1e4448be5802c70f4cff04.tar.gz bcm5719-llvm-758cb67fcfc602b40e1e4448be5802c70f4cff04.zip | |
If we end up instantiating a function parameter whose default argument
has not yet been parsed, note that the default argument hasn't been
parsed and keep track of all of the instantiations of that function
parameter. When its default argument does get parsed, imbue the
instantiations with that default argument. Fixes PR8245.
llvm-svn: 116324
Diffstat (limited to 'clang/lib/Sema/SemaTemplateInstantiate.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiate.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index a2c3df653b7..98b8ccd8d85 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -1062,6 +1062,9 @@ ParmVarDecl *Sema::SubstParmVarDecl(ParmVarDecl *OldParm, if (OldParm->hasUninstantiatedDefaultArg()) { Expr *Arg = OldParm->getUninstantiatedDefaultArg(); NewParm->setUninstantiatedDefaultArg(Arg); + } else if (OldParm->hasUnparsedDefaultArg()) { + NewParm->setUnparsedDefaultArg(); + UnparsedDefaultArgInstantiations[OldParm].push_back(NewParm); } else if (Expr *Arg = OldParm->getDefaultArg()) NewParm->setUninstantiatedDefaultArg(Arg); |

