@@ -49,8 +49,7 @@ class LexerTest : public ::testing::Test {
4949 }
5050
5151 std::unique_ptr<Preprocessor> CreatePP (StringRef Source,
52- TrivialModuleLoader &ModLoader,
53- StringRef PreDefines = {}) {
52+ TrivialModuleLoader &ModLoader) {
5453 std::unique_ptr<llvm::MemoryBuffer> Buf =
5554 llvm::MemoryBuffer::getMemBuffer (Source);
5655 SourceMgr.setMainFileID (SourceMgr.createFileID (std::move (Buf)));
@@ -63,7 +62,7 @@ class LexerTest : public ::testing::Test {
6362 /* IILookup =*/ nullptr ,
6463 /* OwnsHeaderSearch =*/ false );
6564 if (!PreDefines.empty ())
66- PP->setPredefines (PreDefines. str () );
65+ PP->setPredefines (PreDefines);
6766 PP->Initialize (*Target);
6867 PP->EnterMainSourceFile ();
6968 return PP;
@@ -111,6 +110,7 @@ class LexerTest : public ::testing::Test {
111110 std::shared_ptr<TargetOptions> TargetOpts;
112111 IntrusiveRefCntPtr<TargetInfo> Target;
113112 std::unique_ptr<Preprocessor> PP;
113+ std::string PreDefines;
114114};
115115
116116TEST_F (LexerTest, GetSourceTextExpandsToMaximumInMacroArgument) {
@@ -773,6 +773,7 @@ TEST(LexerPreambleTest, PreambleBounds) {
773773}
774774
775775TEST_F (LexerTest, CheckFirstPPToken) {
776+ LangOpts.CPlusPlusModules = true ;
776777 {
777778 TrivialModuleLoader ModLoader;
778779 auto PP = CreatePP (" // This is a comment\n "
@@ -781,9 +782,8 @@ TEST_F(LexerTest, CheckFirstPPToken) {
781782 Token Tok;
782783 PP->Lex (Tok);
783784 EXPECT_TRUE (Tok.is (tok::kw_int));
784- EXPECT_TRUE (PP->hasSeenMainFileFirstPPToken ());
785- EXPECT_TRUE (PP->getMainFileFirstPPToken ().isFirstPPToken ());
786- EXPECT_TRUE (PP->getMainFileFirstPPToken ().is (tok::kw_int));
785+ EXPECT_TRUE (PP->getMainFileFirstPPTokenLoc ().isValid ());
786+ EXPECT_EQ (PP->getMainFileFirstPPTokenLoc (), Tok.getLocation ());
787787 }
788788 {
789789 TrivialModuleLoader ModLoader;
@@ -794,24 +794,28 @@ TEST_F(LexerTest, CheckFirstPPToken) {
794794 Token Tok;
795795 PP->Lex (Tok);
796796 EXPECT_TRUE (Tok.is (tok::kw_int));
797- EXPECT_TRUE (PP->hasSeenMainFileFirstPPToken ());
798- EXPECT_TRUE (PP->getMainFileFirstPPToken ().isFirstPPToken ());
799- EXPECT_TRUE (PP->getMainFileFirstPPToken ().is (tok::hash));
797+ EXPECT_FALSE (Lexer::getRawToken (PP->getMainFileFirstPPTokenLoc (), Tok,
798+ PP->getSourceManager (), PP->getLangOpts (),
799+ /* IgnoreWhiteSpace=*/ false ));
800+ EXPECT_TRUE (Tok.isFirstPPToken ());
801+ EXPECT_TRUE (Tok.is (tok::hash));
800802 }
801803
802804 {
805+ PreDefines = " #define FOO int\n " ;
803806 TrivialModuleLoader ModLoader;
804807 auto PP = CreatePP (" // This is a comment\n "
805808 " FOO a;" ,
806- ModLoader, " #define FOO int \n " );
809+ ModLoader);
807810 Token Tok;
808811 PP->Lex (Tok);
809812 EXPECT_TRUE (Tok.is (tok::kw_int));
810- EXPECT_TRUE (PP->hasSeenMainFileFirstPPToken ());
811- EXPECT_TRUE (PP->getMainFileFirstPPToken ().isFirstPPToken ());
812- EXPECT_TRUE (PP->getMainFileFirstPPToken ().is (tok::identifier));
813- EXPECT_TRUE (
814- PP->getMainFileFirstPPToken ().getIdentifierInfo ()->isStr (" FOO" ));
813+ EXPECT_FALSE (Lexer::getRawToken (PP->getMainFileFirstPPTokenLoc (), Tok,
814+ PP->getSourceManager (), PP->getLangOpts (),
815+ /* IgnoreWhiteSpace=*/ false ));
816+ EXPECT_TRUE (Tok.isFirstPPToken ());
817+ EXPECT_TRUE (Tok.is (tok::raw_identifier));
818+ EXPECT_TRUE (Tok.getRawIdentifier () == " FOO" );
815819 }
816820}
817821} // anonymous namespace
0 commit comments