From: Chris Lattner Date: Mon, 23 Jul 2007 04:15:27 +0000 (+0000) Subject: refactor the interface to Preprocessor::GetIncludeFilenameSpelling, X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f1c99acc544a4e70f308db4e7200ca04cd5a06d2;p=clang refactor the interface to Preprocessor::GetIncludeFilenameSpelling, no functionality changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40414 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Lex/Pragma.cpp b/Lex/Pragma.cpp index b1a569e546..4d90e31c64 100644 --- a/Lex/Pragma.cpp +++ b/Lex/Pragma.cpp @@ -254,8 +254,10 @@ void Preprocessor::HandlePragmaDependency(Token &DependencyTok) { llvm::SmallVector FilenameBuffer; FilenameBuffer.resize(FilenameTok.getLength()); - const char *FilenameStart = &FilenameBuffer[0], *FilenameEnd; - bool isAngled = GetIncludeFilenameSpelling(FilenameTok, + const char *FilenameStart = &FilenameBuffer[0]; + unsigned Len = getSpelling(FilenameTok, FilenameStart); + const char *FilenameEnd = FilenameStart+Len; + bool isAngled = GetIncludeFilenameSpelling(FilenameTok.getLocation(), FilenameStart, FilenameEnd); // If GetIncludeFilenameSpelling set the start ptr to null, there was an // error. diff --git a/Lex/Preprocessor.cpp b/Lex/Preprocessor.cpp index ceab0ba1e7..e6cb218b82 100644 --- a/Lex/Preprocessor.cpp +++ b/Lex/Preprocessor.cpp @@ -1584,39 +1584,37 @@ void Preprocessor::HandleIdentSCCSDirective(Token &Tok) { /// caller is expected to provide a buffer that is large enough to hold the /// spelling of the filename, but is also expected to handle the case when /// this method decides to use a different buffer. -bool Preprocessor::GetIncludeFilenameSpelling(const Token &FilenameTok, +bool Preprocessor::GetIncludeFilenameSpelling(SourceLocation Loc, const char *&BufStart, const char *&BufEnd) { // Get the text form of the filename. - unsigned Len = getSpelling(FilenameTok, BufStart); - BufEnd = BufStart+Len; assert(BufStart != BufEnd && "Can't have tokens with empty spellings!"); // Make sure the filename is or "x". bool isAngled; if (BufStart[0] == '<') { if (BufEnd[-1] != '>') { - Diag(FilenameTok.getLocation(), diag::err_pp_expects_filename); + Diag(Loc, diag::err_pp_expects_filename); BufStart = 0; return true; } isAngled = true; } else if (BufStart[0] == '"') { if (BufEnd[-1] != '"') { - Diag(FilenameTok.getLocation(), diag::err_pp_expects_filename); + Diag(Loc, diag::err_pp_expects_filename); BufStart = 0; return true; } isAngled = false; } else { - Diag(FilenameTok.getLocation(), diag::err_pp_expects_filename); + Diag(Loc, diag::err_pp_expects_filename); BufStart = 0; return true; } // Diagnose #include "" as invalid. if (BufEnd-BufStart <= 2) { - Diag(FilenameTok.getLocation(), diag::err_pp_empty_filename); + Diag(Loc, diag::err_pp_empty_filename); BufStart = 0; return ""; } @@ -1646,8 +1644,10 @@ void Preprocessor::HandleIncludeDirective(Token &IncludeTok, llvm::SmallVector FilenameBuffer; FilenameBuffer.resize(FilenameTok.getLength()); - const char *FilenameStart = &FilenameBuffer[0], *FilenameEnd; - bool isAngled = GetIncludeFilenameSpelling(FilenameTok, + const char *FilenameStart = &FilenameBuffer[0]; + unsigned Len = getSpelling(FilenameTok, FilenameStart); + const char *FilenameEnd = FilenameStart+Len; + bool isAngled = GetIncludeFilenameSpelling(FilenameTok.getLocation(), FilenameStart, FilenameEnd); // If GetIncludeFilenameSpelling set the start ptr to null, there was an // error. diff --git a/include/clang/Lex/Preprocessor.h b/include/clang/Lex/Preprocessor.h index b4c64f1dcb..ff1faaa58c 100644 --- a/include/clang/Lex/Preprocessor.h +++ b/include/clang/Lex/Preprocessor.h @@ -409,7 +409,7 @@ private: /// caller is expected to provide a buffer that is large enough to hold the /// spelling of the filename, but is also expected to handle the case when /// this method decides to use a different buffer. - bool GetIncludeFilenameSpelling(const Token &FNTok, + bool GetIncludeFilenameSpelling(SourceLocation Loc, const char *&BufStart, const char *&BufEnd); /// LookupFile - Given a "foo" or reference, look up the indicated file,