diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-02-10 00:15:17 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-02-10 00:15:17 +0000 |
commit | 811663eb1151f7a209160f2b071a79bf43daf85f (patch) | |
tree | dcbe7092e01fd690a98bdb23d51e8c692cadcac5 /clang/lib/Frontend/ASTMerge.cpp | |
parent | 08f618cd031c7cc70e7f63711efc748d3bb8f36c (diff) | |
download | bcm5719-llvm-811663eb1151f7a209160f2b071a79bf43daf85f.tar.gz bcm5719-llvm-811663eb1151f7a209160f2b071a79bf43daf85f.zip |
Implement basic support for importing source locations from one AST
into another AST, including their include history. Here's an example
error that involves a conflict merging a variable with different types
in two translation units (diagnosed in the third AST context into
which everything is merged).
/Volumes/Data/dgregor/Projects/llvm/tools/clang/test/ASTMerge/Inputs/var2.c:3:5:
error: external variable 'x2' declared with incompatible types in
different translation units ('int' vs. 'double')
int x2;
^
In file included from
/Volumes/Data/dgregor/Projects/llvm/tools/clang/test/ASTMerge/Inputs/var1.c:3:
/Volumes/Data/dgregor/Projects/llvm/tools/clang/test/ASTMerge/Inputs/var1.h:1:8:
note: declared here with type 'double'
double x2;
^
Although we maintain include history, we do not maintain macro
instantiation history across a merge. Instead, we map down to the
spelling location (for now!).
llvm-svn: 95732
Diffstat (limited to 'clang/lib/Frontend/ASTMerge.cpp')
-rw-r--r-- | clang/lib/Frontend/ASTMerge.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/clang/lib/Frontend/ASTMerge.cpp b/clang/lib/Frontend/ASTMerge.cpp index e88d2953c3d..d51647bb161 100644 --- a/clang/lib/Frontend/ASTMerge.cpp +++ b/clang/lib/Frontend/ASTMerge.cpp @@ -44,8 +44,12 @@ void ASTMergeAction::ExecuteAction() { ASTDiags.SetArgToStringFn(&FormatASTNodeDiagnosticArgument, &Unit->getASTContext()); - ASTImporter Importer(CI.getASTContext(), CI.getDiagnostics(), - Unit->getASTContext(), ASTDiags); + ASTImporter Importer(CI.getASTContext(), + CI.getFileManager(), + CI.getDiagnostics(), + Unit->getASTContext(), + Unit->getFileManager(), + ASTDiags); TranslationUnitDecl *TU = Unit->getASTContext().getTranslationUnitDecl(); for (DeclContext::decl_iterator D = TU->decls_begin(), |