aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/AST/ASTImporter.cpp25
-rw-r--r--test/ASTMerge/Inputs/exprs1.c3
-rw-r--r--test/ASTMerge/Inputs/exprs2.c3
3 files changed, 29 insertions, 2 deletions
diff --git a/lib/AST/ASTImporter.cpp b/lib/AST/ASTImporter.cpp
index 661adb82f2..304ad2e1ee 100644
--- a/lib/AST/ASTImporter.cpp
+++ b/lib/AST/ASTImporter.cpp
@@ -107,6 +107,7 @@ namespace {
// Importing expressions
Expr *VisitExpr(Expr *E);
+ Expr *VisitDeclRefExpr(DeclRefExpr *E);
Expr *VisitIntegerLiteral(IntegerLiteral *E);
Expr *VisitCharacterLiteral(CharacterLiteral *E);
Expr *VisitParenExpr(ParenExpr *E);
@@ -2594,6 +2595,30 @@ Expr *ASTNodeImporter::VisitExpr(Expr *E) {
return 0;
}
+Expr *ASTNodeImporter::VisitDeclRefExpr(DeclRefExpr *E) {
+ NestedNameSpecifier *Qualifier = 0;
+ if (E->getQualifier()) {
+ Qualifier = Importer.Import(E->getQualifier());
+ if (!E->getQualifier())
+ return 0;
+ }
+
+ ValueDecl *ToD = cast_or_null<ValueDecl>(Importer.Import(E->getDecl()));
+ if (!ToD)
+ return 0;
+
+ QualType T = Importer.Import(E->getType());
+ if (T.isNull())
+ return 0;
+
+ return DeclRefExpr::Create(Importer.getToContext(), Qualifier,
+ Importer.Import(E->getQualifierRange()),
+ ToD,
+ Importer.Import(E->getLocation()),
+ T,
+ /*FIXME:TemplateArgs=*/0);
+}
+
Expr *ASTNodeImporter::VisitIntegerLiteral(IntegerLiteral *E) {
QualType T = Importer.Import(E->getType());
if (T.isNull())
diff --git a/test/ASTMerge/Inputs/exprs1.c b/test/ASTMerge/Inputs/exprs1.c
index bc76887979..03150a9e37 100644
--- a/test/ASTMerge/Inputs/exprs1.c
+++ b/test/ASTMerge/Inputs/exprs1.c
@@ -2,6 +2,7 @@
enum E0 {
E0_Val0 = 'a',
E0_Val1 = (17),
- E0_Val2 = (1 << 2)
+ E0_Val2 = (1 << 2),
+ E0_Val3 = E0_Val2
};
diff --git a/test/ASTMerge/Inputs/exprs2.c b/test/ASTMerge/Inputs/exprs2.c
index bc76887979..03150a9e37 100644
--- a/test/ASTMerge/Inputs/exprs2.c
+++ b/test/ASTMerge/Inputs/exprs2.c
@@ -2,6 +2,7 @@
enum E0 {
E0_Val0 = 'a',
E0_Val1 = (17),
- E0_Val2 = (1 << 2)
+ E0_Val2 = (1 << 2),
+ E0_Val3 = E0_Val2
};