summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorGabor Marton <martongabesz@gmail.com>2018-06-29 12:17:34 +0000
committerGabor Marton <martongabesz@gmail.com>2018-06-29 12:17:34 +0000
commit07b01ffff2b94f1dcafdc031f62bb21f7579e573 (patch)
tree51026eab2fa5e6660d522caa82c0900dc1c1bc62 /clang
parent62a7f80af7fc7cb0856fe72537817a721c1dbc97 (diff)
downloadbcm5719-llvm-07b01ffff2b94f1dcafdc031f62bb21f7579e573.tar.gz
bcm5719-llvm-07b01ffff2b94f1dcafdc031f62bb21f7579e573.zip
[ASTImporter] Added import of CXXStdInitializerListExpr
Reviewers: a.sidorin Reviewed By: a.sidorin Subscribers: martong, cfe-commits Differential Revision: https://reviews.llvm.org/D48631 Patch by Balazs Keri! llvm-svn: 335968
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/AST/ASTImporter.cpp14
-rw-r--r--clang/test/ASTMerge/std-initializer-list/Inputs/il.cpp9
-rw-r--r--clang/test/ASTMerge/std-initializer-list/test.cpp3
3 files changed, 26 insertions, 0 deletions
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp
index 5fa222cf4a1..37ddfea7be8 100644
--- a/clang/lib/AST/ASTImporter.cpp
+++ b/clang/lib/AST/ASTImporter.cpp
@@ -384,6 +384,7 @@ namespace clang {
Expr *VisitCallExpr(CallExpr *E);
Expr *VisitLambdaExpr(LambdaExpr *LE);
Expr *VisitInitListExpr(InitListExpr *E);
+ Expr *VisitCXXStdInitializerListExpr(CXXStdInitializerListExpr *E);
Expr *VisitArrayInitLoopExpr(ArrayInitLoopExpr *E);
Expr *VisitArrayInitIndexExpr(ArrayInitIndexExpr *E);
Expr *VisitCXXDefaultInitExpr(CXXDefaultInitExpr *E);
@@ -6622,6 +6623,19 @@ Expr *ASTNodeImporter::VisitInitListExpr(InitListExpr *ILE) {
return To;
}
+Expr *ASTNodeImporter::VisitCXXStdInitializerListExpr(
+ CXXStdInitializerListExpr *E) {
+ QualType T = Importer.Import(E->getType());
+ if (T.isNull())
+ return nullptr;
+
+ Expr *SE = Importer.Import(E->getSubExpr());
+ if (!SE)
+ return nullptr;
+
+ return new (Importer.getToContext()) CXXStdInitializerListExpr(T, SE);
+}
+
Expr *ASTNodeImporter::VisitArrayInitLoopExpr(ArrayInitLoopExpr *E) {
QualType ToType = Importer.Import(E->getType());
if (ToType.isNull())
diff --git a/clang/test/ASTMerge/std-initializer-list/Inputs/il.cpp b/clang/test/ASTMerge/std-initializer-list/Inputs/il.cpp
new file mode 100644
index 00000000000..3b2ac187c88
--- /dev/null
+++ b/clang/test/ASTMerge/std-initializer-list/Inputs/il.cpp
@@ -0,0 +1,9 @@
+namespace std {
+template <typename T>
+struct initializer_list {
+ const T *begin, *end;
+ initializer_list();
+};
+} // namespace std
+
+std::initializer_list<int> IL = {1, 2, 3, 4};
diff --git a/clang/test/ASTMerge/std-initializer-list/test.cpp b/clang/test/ASTMerge/std-initializer-list/test.cpp
new file mode 100644
index 00000000000..ca7330d308a
--- /dev/null
+++ b/clang/test/ASTMerge/std-initializer-list/test.cpp
@@ -0,0 +1,3 @@
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/il.cpp
+// RUN: %clang_cc1 -ast-merge %t.1.ast -fsyntax-only %s 2>&1 | FileCheck --allow-empty %s
+// CHECK-NOT: unsupported AST node
OpenPOWER on IntegriCloud