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,