diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/AST/ASTImporter.cpp | 4 | ||||
| -rw-r--r-- | clang/test/ASTMerge/Inputs/macro.modulemap | 4 | ||||
| -rw-r--r-- | clang/test/ASTMerge/Inputs/macro1.h | 5 | ||||
| -rw-r--r-- | clang/test/ASTMerge/Inputs/macro1.m | 5 | ||||
| -rw-r--r-- | clang/test/ASTMerge/Inputs/macro2.m | 5 | ||||
| -rw-r--r-- | clang/test/ASTMerge/macro.m | 6 |
6 files changed, 27 insertions, 2 deletions
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp index 9e17c0c3de5..e783854448b 100644 --- a/clang/lib/AST/ASTImporter.cpp +++ b/clang/lib/AST/ASTImporter.cpp @@ -6943,10 +6943,10 @@ SourceLocation ASTImporter::Import(SourceLocation FromLoc) { SourceManager &FromSM = FromContext.getSourceManager(); - // For now, map everything down to its spelling location, so that we + // For now, map everything down to its file location, so that we // don't have to import macro expansions. // FIXME: Import macro expansions! - FromLoc = FromSM.getSpellingLoc(FromLoc); + FromLoc = FromSM.getFileLoc(FromLoc); std::pair<FileID, unsigned> Decomposed = FromSM.getDecomposedLoc(FromLoc); SourceManager &ToSM = ToContext.getSourceManager(); FileID ToFileID = Import(Decomposed.first); diff --git a/clang/test/ASTMerge/Inputs/macro.modulemap b/clang/test/ASTMerge/Inputs/macro.modulemap new file mode 100644 index 00000000000..dba1f2207f1 --- /dev/null +++ b/clang/test/ASTMerge/Inputs/macro.modulemap @@ -0,0 +1,4 @@ +module macro1 [extern_c] { + header "macro1.h" + export * +} diff --git a/clang/test/ASTMerge/Inputs/macro1.h b/clang/test/ASTMerge/Inputs/macro1.h new file mode 100644 index 00000000000..f089e612543 --- /dev/null +++ b/clang/test/ASTMerge/Inputs/macro1.h @@ -0,0 +1,5 @@ +typedef void *VoidRef; + +void maybeNull( + int i, + __nullable VoidRef *__nullable); diff --git a/clang/test/ASTMerge/Inputs/macro1.m b/clang/test/ASTMerge/Inputs/macro1.m new file mode 100644 index 00000000000..2612613bd0b --- /dev/null +++ b/clang/test/ASTMerge/Inputs/macro1.m @@ -0,0 +1,5 @@ +@import macro1; + +void foo() { + maybeNull(0, 0); +} diff --git a/clang/test/ASTMerge/Inputs/macro2.m b/clang/test/ASTMerge/Inputs/macro2.m new file mode 100644 index 00000000000..b5b155a95b5 --- /dev/null +++ b/clang/test/ASTMerge/Inputs/macro2.m @@ -0,0 +1,5 @@ +void foo(); + +void bar() { + foo(); +} diff --git a/clang/test/ASTMerge/macro.m b/clang/test/ASTMerge/macro.m new file mode 100644 index 00000000000..77e596d3bae --- /dev/null +++ b/clang/test/ASTMerge/macro.m @@ -0,0 +1,6 @@ +// RUN: rm -rf %t +// RUN: mkdir -p %t/cache +// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache -fmodule-map-file=%S/Inputs/macro.modulemap -I%S/Inputs -emit-pch -o %t.1.ast %S/Inputs/macro1.m +// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache -fmodule-map-file=%S/Inputs/macro.modulemap -I%S/Inputs -emit-pch -o %t.2.ast %S/Inputs/macro2.m +// RUN: %clang_cc1 -fmodules -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -verify %s +// expected-no-diagnostics |

