diff options
author | Gabor Marton <martongabesz@gmail.com> | 2018-06-29 12:17:34 +0000 |
---|---|---|
committer | Gabor Marton <martongabesz@gmail.com> | 2018-06-29 12:17:34 +0000 |
commit | 07b01ffff2b94f1dcafdc031f62bb21f7579e573 (patch) | |
tree | 51026eab2fa5e6660d522caa82c0900dc1c1bc62 /clang | |
parent | 62a7f80af7fc7cb0856fe72537817a721c1dbc97 (diff) | |
download | bcm5719-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.cpp | 14 | ||||
-rw-r--r-- | clang/test/ASTMerge/std-initializer-list/Inputs/il.cpp | 9 | ||||
-rw-r--r-- | clang/test/ASTMerge/std-initializer-list/test.cpp | 3 |
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 |