summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-10-22 19:54:16 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-10-22 19:54:16 +0000
commit3c7dd6be207e720747d0f125ef1ca66baf024339 (patch)
tree9051960678177033cd605aa05b2a0bc2c89fc940 /clang/lib
parenta7d1751d986937a6fd018bb1240427e0d04b78e9 (diff)
downloadbcm5719-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.cpp9
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: {
OpenPOWER on IntegriCloud