Skip to content

Commit 278ef84

Browse files
authored
Revert "[clangd] [Modules] Fixes to correctly handle module dependencies" (llvm#142162)
1 parent 3c6211c commit 278ef84

File tree

3 files changed

+18
-111
lines changed

3 files changed

+18
-111
lines changed

clang-tools-extra/clangd/ModulesBuilder.cpp

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ class FailedPrerequisiteModules : public PrerequisiteModules {
8484

8585
// We shouldn't adjust the compilation commands based on
8686
// FailedPrerequisiteModules.
87-
void adjustHeaderSearchOptions(HeaderSearchOptions &Options) const override {}
87+
void adjustHeaderSearchOptions(HeaderSearchOptions &Options) const override {
88+
}
8889

8990
// FailedPrerequisiteModules can never be reused.
9091
bool
@@ -429,21 +430,21 @@ class CachingProjectModules : public ProjectModules {
429430
/// Collect the directly and indirectly required module names for \param
430431
/// ModuleName in topological order. The \param ModuleName is guaranteed to
431432
/// be the last element in \param ModuleNames.
432-
llvm::SmallVector<std::string> getAllRequiredModules(PathRef RequiredSource,
433-
CachingProjectModules &MDB,
434-
StringRef ModuleName) {
435-
llvm::SmallVector<std::string> ModuleNames;
433+
llvm::SmallVector<StringRef> getAllRequiredModules(PathRef RequiredSource,
434+
CachingProjectModules &MDB,
435+
StringRef ModuleName) {
436+
llvm::SmallVector<llvm::StringRef> ModuleNames;
436437
llvm::StringSet<> ModuleNamesSet;
437438

438439
auto VisitDeps = [&](StringRef ModuleName, auto Visitor) -> void {
439440
ModuleNamesSet.insert(ModuleName);
440441

441-
for (const std::string &RequiredModuleName : MDB.getRequiredModules(
442+
for (StringRef RequiredModuleName : MDB.getRequiredModules(
442443
MDB.getSourceForModuleName(ModuleName, RequiredSource)))
443444
if (ModuleNamesSet.insert(RequiredModuleName).second)
444445
Visitor(RequiredModuleName, Visitor);
445446

446-
ModuleNames.push_back(ModuleName.str());
447+
ModuleNames.push_back(ModuleName);
447448
};
448449
VisitDeps(ModuleName, VisitDeps);
449450

@@ -493,30 +494,28 @@ llvm::Error ModulesBuilder::ModulesBuilderImpl::getOrBuildModuleFile(
493494
// Get Required modules in topological order.
494495
auto ReqModuleNames = getAllRequiredModules(RequiredSource, MDB, ModuleName);
495496
for (llvm::StringRef ReqModuleName : ReqModuleNames) {
496-
if (BuiltModuleFiles.isModuleUnitBuilt(ReqModuleName))
497+
if (BuiltModuleFiles.isModuleUnitBuilt(ModuleName))
497498
continue;
498499

499500
if (auto Cached = Cache.getModule(ReqModuleName)) {
500501
if (IsModuleFileUpToDate(Cached->getModuleFilePath(), BuiltModuleFiles,
501502
TFS.view(std::nullopt))) {
502-
log("Reusing module {0} from {1}", ReqModuleName,
503+
log("Reusing module {0} from {1}", ModuleName,
503504
Cached->getModuleFilePath());
504505
BuiltModuleFiles.addModuleFile(std::move(Cached));
505506
continue;
506507
}
507508
Cache.remove(ReqModuleName);
508509
}
509510

510-
std::string ReqFileName =
511-
MDB.getSourceForModuleName(ReqModuleName, RequiredSource);
512511
llvm::Expected<ModuleFile> MF = buildModuleFile(
513-
ReqModuleName, ReqFileName, getCDB(), TFS, BuiltModuleFiles);
512+
ModuleName, ModuleUnitFileName, getCDB(), TFS, BuiltModuleFiles);
514513
if (llvm::Error Err = MF.takeError())
515514
return Err;
516515

517-
log("Built module {0} to {1}", ReqModuleName, MF->getModuleFilePath());
516+
log("Built module {0} to {1}", ModuleName, MF->getModuleFilePath());
518517
auto BuiltModuleFile = std::make_shared<const ModuleFile>(std::move(*MF));
519-
Cache.add(ReqModuleName, BuiltModuleFile);
518+
Cache.add(ModuleName, BuiltModuleFile);
520519
BuiltModuleFiles.addModuleFile(std::move(BuiltModuleFile));
521520
}
522521

clang-tools-extra/clangd/test/module_dependencies.test

Lines changed: 0 additions & 92 deletions
This file was deleted.

clang-tools-extra/clangd/test/modules.test

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# A smoke test to check the modules can work basically.
22
#
3+
# Windows have different escaping modes.
4+
# FIXME: We should add one for windows.
5+
# UNSUPPORTED: system-windows
6+
#
37
# RUN: rm -fr %t
48
# RUN: mkdir -p %t
59
# RUN: split-file %s %t
610
#
711
# RUN: sed -e "s|DIR|%/t|g" %t/compile_commands.json.tmpl > %t/compile_commands.json.tmp
812
# RUN: sed -e "s|CLANG_CC|%clang|g" %t/compile_commands.json.tmp > %t/compile_commands.json
9-
# RUN: sed -e "s|DIR|%/t|g" %t/definition.jsonrpc.tmpl > %t/definition.jsonrpc.tmp
10-
#
11-
# On Windows, we need the URI in didOpen to look like "uri":"file:///C:/..."
12-
# (with the extra slash in the front), so we add it here.
13-
# RUN: sed -E -e 's|"file://([A-Z]):/|"file:///\1:/|g' %/t/definition.jsonrpc.tmp > %/t/definition.jsonrpc
13+
# RUN: sed -e "s|DIR|%/t|g" %t/definition.jsonrpc.tmpl > %t/definition.jsonrpc
1414
#
1515
# RUN: clangd -experimental-modules-support -lit-test < %t/definition.jsonrpc \
1616
# RUN: | FileCheck -strict-whitespace %t/definition.jsonrpc

0 commit comments

Comments
 (0)