diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-10-25 01:51:45 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-10-25 01:51:45 +0000 |
commit | 1cb7142b66ac1844b91511314cce2b309a9a180d (patch) | |
tree | cd2edad0f7985aa738302ad8a2a3b19b3078aae4 | |
parent | 986819acbc49bd819933993a19e376d32f31a77c (diff) |
Take into account that there may be a BOM at the beginning of the file,
when computing the size of the precompiled preamble.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166659 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Lex/Lexer.cpp | 9 | ||||
-rw-r--r-- | test/Index/preamble-reparse-with-BOM.m | 6 |
2 files changed, 12 insertions, 3 deletions
diff --git a/lib/Lex/Lexer.cpp b/lib/Lex/Lexer.cpp index 6ac3f3fafc..fa911feed2 100644 --- a/lib/Lex/Lexer.cpp +++ b/lib/Lex/Lexer.cpp @@ -513,10 +513,13 @@ Lexer::ComputePreamble(const llvm::MemoryBuffer *Buffer, // "fake" file source location at offset 1 so that the lexer will track our // position within the file. const unsigned StartOffset = 1; - SourceLocation StartLoc = SourceLocation::getFromRawEncoding(StartOffset); - Lexer TheLexer(StartLoc, LangOpts, Buffer->getBufferStart(), + SourceLocation FileLoc = SourceLocation::getFromRawEncoding(StartOffset); + Lexer TheLexer(FileLoc, LangOpts, Buffer->getBufferStart(), Buffer->getBufferStart(), Buffer->getBufferEnd()); - + + // StartLoc will differ from FileLoc if there is a BOM that was skipped. + SourceLocation StartLoc = TheLexer.getSourceLocation(); + bool InPreprocessorDirective = false; Token TheTok; Token IfStartTok; diff --git a/test/Index/preamble-reparse-with-BOM.m b/test/Index/preamble-reparse-with-BOM.m new file mode 100644 index 0000000000..a2a89c8d8e --- /dev/null +++ b/test/Index/preamble-reparse-with-BOM.m @@ -0,0 +1,6 @@ + +@interface I2 +@end + +// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_FAILONERROR=1 \ +// RUN: c-index-test -test-load-source-reparse 1 local %s |