aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Frontend/ASTMerge.cpp15
-rw-r--r--test/ASTMerge/var.c2
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 **')