]> granicus.if.org Git - clang/commitdiff
Complain about types and declarations that we don't know how to import.
authorDouglas Gregor <dgregor@apple.com>
Tue, 9 Feb 2010 22:48:33 +0000 (22:48 +0000)
committerDouglas Gregor <dgregor@apple.com>
Tue, 9 Feb 2010 22:48:33 +0000 (22:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95706 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticASTKinds.td
lib/AST/ASTImporter.cpp

index d6921df0a34b9d228db2e19ce275f55e547744ff..935d15ac13a20fd88177da3d4ea835da57d1a2df 100644 (file)
@@ -34,4 +34,5 @@ def err_odr_variable_multiple_def : Error<
   "external variable %0 defined in multiple translation units">;
 def note_odr_value_here : Note<"declared here with type %0">;
 def note_odr_defined_here : Note<"also defined here">;
+def err_unsupported_ast_node: Error<"cannot import unsupported AST node %0">;
 }
index 0d1a0dca751bd4872eb3d0ffa04b70a4df84d7eb..19ce88951367e04c7da6a2561c0280969bcd28f1 100644 (file)
@@ -33,6 +33,7 @@ namespace {
     using DeclVisitor<ASTNodeImporter, Decl *>::Visit;
 
     // Importing types
+    QualType VisitType(Type *T);
     QualType VisitBuiltinType(BuiltinType *T);
     QualType VisitComplexType(ComplexType *T);
     QualType VisitPointerType(PointerType *T);
@@ -68,6 +69,7 @@ namespace {
     QualType VisitObjCObjectPointerType(ObjCObjectPointerType *T);
                             
     // Importing declarations
+    Decl *VisitDecl(Decl *D);
     Decl *VisitVarDecl(VarDecl *D);
   };
 }
@@ -76,6 +78,12 @@ namespace {
 // Import Types
 //----------------------------------------------------------------------------
 
+QualType ASTNodeImporter::VisitType(Type *T) {
+  Importer.FromDiag(SourceLocation(), diag::err_unsupported_ast_node)
+    << T->getTypeClassName();
+  return QualType();
+}
+
 QualType ASTNodeImporter::VisitBuiltinType(BuiltinType *T) {
   switch (T->getKind()) {
   case BuiltinType::Void: return Importer.getToContext().VoidTy;
@@ -435,6 +443,12 @@ QualType ASTNodeImporter::VisitObjCObjectPointerType(ObjCObjectPointerType *T) {
 //----------------------------------------------------------------------------
 // Import Declarations
 //----------------------------------------------------------------------------
+Decl *ASTNodeImporter::VisitDecl(Decl *D) {
+  Importer.FromDiag(SourceLocation(), diag::err_unsupported_ast_node)
+    << D->getDeclKindName();
+  return 0;
+}
+
 Decl *ASTNodeImporter::VisitVarDecl(VarDecl *D) {
   // Import the context of this declaration.
   DeclContext *DC = Importer.ImportContext(D->getDeclContext());