diff options
-rw-r--r-- | lib/Frontend/ASTMerge.cpp | 15 | ||||
-rw-r--r-- | test/ASTMerge/var.c | 2 |
2 files changed, 11 insertions, 6 deletions
diff --git a/lib/Frontend/ASTMerge.cpp b/lib/Frontend/ASTMerge.cpp index 649af9e4b8..e88d2953c3 100644 --- a/lib/Frontend/ASTMerge.cpp +++ b/lib/Frontend/ASTMerge.cpp @@ -10,6 +10,7 @@ #include "clang/Frontend/CompilerInstance.h" #include "clang/Frontend/FrontendActions.h" #include "clang/AST/ASTContext.h" +#include "clang/AST/ASTDiagnostic.h" #include "clang/AST/ASTImporter.h" using namespace clang; @@ -31,15 +32,20 @@ bool ASTMergeAction::BeginSourceFileAction(CompilerInstance &CI, void ASTMergeAction::ExecuteAction() { CompilerInstance &CI = getCompilerInstance(); - + CI.getDiagnostics().SetArgToStringFn(&FormatASTNodeDiagnosticArgument, + &CI.getASTContext()); for (unsigned I = 0, N = ASTFiles.size(); I != N; ++I) { - ASTUnit *Unit = ASTUnit::LoadFromPCHFile(ASTFiles[I], CI.getDiagnostics(), + Diagnostic ASTDiags(CI.getDiagnostics().getClient()); + + ASTUnit *Unit = ASTUnit::LoadFromPCHFile(ASTFiles[I], ASTDiags, false, true); if (!Unit) continue; + ASTDiags.SetArgToStringFn(&FormatASTNodeDiagnosticArgument, + &Unit->getASTContext()); ASTImporter Importer(CI.getASTContext(), CI.getDiagnostics(), - Unit->getASTContext(), CI.getDiagnostics()); + Unit->getASTContext(), ASTDiags); TranslationUnitDecl *TU = Unit->getASTContext().getTranslationUnitDecl(); for (DeclContext::decl_iterator D = TU->decls_begin(), @@ -51,8 +57,7 @@ void ASTMergeAction::ExecuteAction() { if (VD->getIdentifier() && *VD->getIdentifier()->getNameStart() == 'x') { Decl *Merged = Importer.Import(VD); - if (Merged) - Merged->dump(); + (void)Merged; } } diff --git a/test/ASTMerge/var.c b/test/ASTMerge/var.c index 6e1559a399..4fda4acb9d 100644 --- a/test/ASTMerge/var.c +++ b/test/ASTMerge/var.c @@ -2,4 +2,4 @@ // RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/var2.c // RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s -// CHECK: declared with incompatible types +// CHECK: error: external variable 'x1' declared with incompatible types in different translation units ('double *' vs. 'float **') |