]> granicus.if.org Git - clang/commitdiff
AST import for DeclRefExprs
authorDouglas Gregor <dgregor@apple.com>
Fri, 19 Feb 2010 01:17:02 +0000 (01:17 +0000)
committerDouglas Gregor <dgregor@apple.com>
Fri, 19 Feb 2010 01:17:02 +0000 (01:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96646 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/ASTImporter.cpp
test/ASTMerge/Inputs/exprs1.c
test/ASTMerge/Inputs/exprs2.c

index 661adb82f25cb72e0da529b5e072da01c16d9038..304ad2e1ee519222eb671bf8efb095d65ef86d5f 100644 (file)
@@ -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())
index bc768879799d3d7cab6901515336d9d48255470a..03150a9e377ee65c0098699544e6579643207e08 100644 (file)
@@ -2,6 +2,7 @@
 enum E0 {
   E0_Val0 = 'a',
   E0_Val1 = (17),
-  E0_Val2 = (1 << 2)
+  E0_Val2 = (1 << 2),
+  E0_Val3 = E0_Val2
 };
 
index bc768879799d3d7cab6901515336d9d48255470a..03150a9e377ee65c0098699544e6579643207e08 100644 (file)
@@ -2,6 +2,7 @@
 enum E0 {
   E0_Val0 = 'a',
   E0_Val1 = (17),
-  E0_Val2 = (1 << 2)
+  E0_Val2 = (1 << 2),
+  E0_Val3 = E0_Val2
 };