diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-10-22 19:54:16 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-10-22 19:54:16 +0000 |
commit | 3c7dd6be207e720747d0f125ef1ca66baf024339 (patch) | |
tree | 9051960678177033cd605aa05b2a0bc2c89fc940 /clang/lib | |
parent | a7d1751d986937a6fd018bb1240427e0d04b78e9 (diff) | |
download | bcm5719-llvm-3c7dd6be207e720747d0f125ef1ca66baf024339.tar.gz bcm5719-llvm-3c7dd6be207e720747d0f125ef1ca66baf024339.zip |
Correct importing of the type of a TemplateArgument
It's not clear how this would be tested - I imagine we should have an
ASTImporter test that RAVs the new AST and checks that all the elements
in it are from this ASTContext and not the foreign one... but I know
little about the ASTImporter and how/where that testing might be done.
(post-commit review feedback from Richard Smith on r219900)
llvm-svn: 220411
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/AST/ASTImporter.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp index 02864a5d4d9..07b2a73ee85 100644 --- a/clang/lib/AST/ASTImporter.cpp +++ b/clang/lib/AST/ASTImporter.cpp @@ -2092,10 +2092,11 @@ ASTNodeImporter::ImportTemplateArgument(const TemplateArgument &From) { } case TemplateArgument::Declaration: { - ValueDecl *FromD = From.getAsDecl(); - if (ValueDecl *To = cast_or_null<ValueDecl>(Importer.Import(FromD))) - return TemplateArgument(To, From.getParamTypeForDecl()); - return TemplateArgument(); + ValueDecl *To = cast_or_null<ValueDecl>(Importer.Import(From.getAsDecl())); + QualType ToType = Importer.Import(From.getParamTypeForDecl()); + if (!To || ToType.isNull()) + return TemplateArgument(); + return TemplateArgument(To, ToType); } case TemplateArgument::NullPtr: { |