Mercurial > hg > CbC > CbC_llvm
comparison clang/unittests/Lex/PPDependencyDirectivesTest.cpp @ 252:1f2b6ac9f198 llvm-original
LLVM16-1
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 18 Aug 2023 09:04:13 +0900 |
parents | c4bab56944e8 |
children |
comparison
equal
deleted
inserted
replaced
237:c80f45b162ad | 252:1f2b6ac9f198 |
---|---|
19 #include "clang/Lex/ModuleLoader.h" | 19 #include "clang/Lex/ModuleLoader.h" |
20 #include "clang/Lex/Preprocessor.h" | 20 #include "clang/Lex/Preprocessor.h" |
21 #include "clang/Lex/PreprocessorOptions.h" | 21 #include "clang/Lex/PreprocessorOptions.h" |
22 #include "llvm/Testing/Support/Error.h" | 22 #include "llvm/Testing/Support/Error.h" |
23 #include "gtest/gtest.h" | 23 #include "gtest/gtest.h" |
24 #include <optional> | |
24 | 25 |
25 using namespace clang; | 26 using namespace clang; |
26 | 27 |
27 namespace { | 28 namespace { |
28 | 29 |
90 "#include \"head1.h\"\n#include \"head1.h\"\n" | 91 "#include \"head1.h\"\n#include \"head1.h\"\n" |
91 "#include \"head2.h\"\n#include \"head2.h\"\n" | 92 "#include \"head2.h\"\n#include \"head2.h\"\n" |
92 "#include \"head3.h\"\n#include \"head3.h\"\n")); | 93 "#include \"head3.h\"\n#include \"head3.h\"\n")); |
93 FileMgr.setVirtualFileSystem(VFS); | 94 FileMgr.setVirtualFileSystem(VFS); |
94 | 95 |
95 Optional<FileEntryRef> FE; | 96 OptionalFileEntryRef FE; |
96 ASSERT_THAT_ERROR(FileMgr.getFileRef("main.c").moveInto(FE), | 97 ASSERT_THAT_ERROR(FileMgr.getFileRef("main.c").moveInto(FE), |
97 llvm::Succeeded()); | 98 llvm::Succeeded()); |
98 SourceMgr.setMainFileID( | 99 SourceMgr.setMainFileID( |
99 SourceMgr.createFileID(*FE, SourceLocation(), SrcMgr::C_User)); | 100 SourceMgr.createFileID(*FE, SourceLocation(), SrcMgr::C_User)); |
100 | 101 |
103 SmallVector<dependency_directives_scan::Directive> Directives; | 104 SmallVector<dependency_directives_scan::Directive> Directives; |
104 }; | 105 }; |
105 SmallVector<std::unique_ptr<DepDirectives>> DepDirectivesObjects; | 106 SmallVector<std::unique_ptr<DepDirectives>> DepDirectivesObjects; |
106 | 107 |
107 auto getDependencyDirectives = [&](FileEntryRef File) | 108 auto getDependencyDirectives = [&](FileEntryRef File) |
108 -> Optional<ArrayRef<dependency_directives_scan::Directive>> { | 109 -> std::optional<ArrayRef<dependency_directives_scan::Directive>> { |
109 DepDirectivesObjects.push_back(std::make_unique<DepDirectives>()); | 110 DepDirectivesObjects.push_back(std::make_unique<DepDirectives>()); |
110 StringRef Input = (*FileMgr.getBufferForFile(File))->getBuffer(); | 111 StringRef Input = (*FileMgr.getBufferForFile(File))->getBuffer(); |
111 bool Err = scanSourceForDependencyDirectives( | 112 bool Err = scanSourceForDependencyDirectives( |
112 Input, DepDirectivesObjects.back()->Tokens, | 113 Input, DepDirectivesObjects.back()->Tokens, |
113 DepDirectivesObjects.back()->Directives); | 114 DepDirectivesObjects.back()->Directives); |
114 EXPECT_FALSE(Err); | 115 EXPECT_FALSE(Err); |
115 return llvm::makeArrayRef(DepDirectivesObjects.back()->Directives); | 116 return llvm::ArrayRef(DepDirectivesObjects.back()->Directives); |
116 }; | 117 }; |
117 | 118 |
118 auto PPOpts = std::make_shared<PreprocessorOptions>(); | 119 auto PPOpts = std::make_shared<PreprocessorOptions>(); |
119 PPOpts->DependencyDirectivesForFile = [&](FileEntryRef File) | 120 PPOpts->DependencyDirectivesForFile = [&](FileEntryRef File) |
120 -> Optional<ArrayRef<dependency_directives_scan::Directive>> { | 121 -> std::optional<ArrayRef<dependency_directives_scan::Directive>> { |
121 return getDependencyDirectives(File); | 122 return getDependencyDirectives(File); |
122 }; | 123 }; |
123 | 124 |
124 TrivialModuleLoader ModLoader; | 125 TrivialModuleLoader ModLoader; |
125 HeaderSearch HeaderInfo(std::make_shared<HeaderSearchOptions>(), SourceMgr, | 126 HeaderSearch HeaderInfo(std::make_shared<HeaderSearchOptions>(), SourceMgr, |