Skip to content

Commit 79fbaac

Browse files
committed
Keep track and report the unit files that contain test symbols
This allows the client to be much more efficient for handling unit test symbol changes.
1 parent 5cd214b commit 79fbaac

15 files changed

+107
-30
lines changed

include/IndexStoreDB/Database/ImportTransaction.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ class INDEXSTOREDB_EXPORT ImportTransaction {
3131

3232
IDCode getUnitCode(StringRef unitName);
3333
IDCode addProviderName(StringRef name, bool *wasInserted = nullptr);
34+
// Marks a provider as containing test symbols.
35+
void setProviderContainsTestSymbols(IDCode provider);
36+
bool providerContainsTestSymbols(IDCode provider);
3437
/// \returns a IDCode of the USR.
3538
IDCode addSymbolInfo(IDCode provider,
3639
StringRef USR, StringRef symbolName, SymbolInfo symInfo,
@@ -56,6 +59,7 @@ class INDEXSTOREDB_EXPORT UnitDataImport {
5659
CanonicalFilePath Sysroot;
5760
llvm::sys::TimePoint<> ModTime;
5861
Optional<bool> IsSystem;
62+
Optional<bool> HasTestSymbols;
5963
Optional<SymbolProviderKind> SymProviderKind;
6064
std::string Target;
6165

@@ -83,6 +87,7 @@ class INDEXSTOREDB_EXPORT UnitDataImport {
8387
bool isMissing() const { return IsMissing; }
8488
bool isUpToDate() const { return IsUpToDate; }
8589
Optional<bool> getIsSystem() const { return IsSystem; }
90+
Optional<bool> getHasTestSymbols() const { return HasTestSymbols; }
8691
Optional<SymbolProviderKind> getSymbolProviderKind() const { return SymProviderKind; }
8792

8893
IDCode getPrevMainFileCode() const {

include/IndexStoreDB/Database/ReadTransaction.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ class INDEXSTOREDB_EXPORT ReadTransaction {
5353
bool foreachProviderAndFileCodeReference(function_ref<bool(IDCode unitCode)> unitFilter,
5454
function_ref<bool(IDCode provider, IDCode pathCode, IDCode unitCode, llvm::sys::TimePoint<> modTime, IDCode moduleNameCode, bool isSystem)> receiver);
5555

56+
bool foreachProviderContainingTestSymbols(function_ref<bool(IDCode provider)> receiver);
57+
5658
/// Returns USR codes in batches.
5759
bool foreachUSROfGlobalSymbolKind(SymbolKind symKind, llvm::function_ref<bool(ArrayRef<IDCode> usrCodes)> receiver);
5860

include/IndexStoreDB/Database/UnitInfo.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ struct UnitInfo {
4646
bool HasMainFile;
4747
bool HasSysroot;
4848
bool IsSystem;
49+
bool HasTestSymbols;
4950
SymbolProviderKind SymProviderKind;
5051
ArrayRef<IDCode> FileDepends;
5152
ArrayRef<IDCode> UnitDepends;

include/IndexStoreDB/Index/IndexSystem.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ class INDEXSTOREDB_EXPORT IndexSystem {
126126

127127
/// Returns unit test class/method occurrences that are referenced from units associated with the provided output file paths.
128128
/// \returns `false` if the receiver returned `false` to stop receiving symbols, `true` otherwise.
129-
bool foreachUnitTestSymbolReferencedByOutputPaths(ArrayRef<StringRef> FilePaths,
129+
bool foreachUnitTestSymbolReferencedByOutputPaths(ArrayRef<CanonicalFilePathRef> FilePaths,
130130
function_ref<bool(SymbolOccurrenceRef Occur)> Receiver);
131131

132132
private:

include/IndexStoreDB/Index/StoreUnitInfo.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,18 @@ struct StoreUnitInfo {
2424
std::string UnitName;
2525
CanonicalFilePath MainFilePath;
2626
CanonicalFilePath OutFilePath;
27+
bool HasTestSymbols = false;
2728
llvm::sys::TimePoint<> ModTime;
29+
30+
StoreUnitInfo() = default;
31+
StoreUnitInfo(std::string unitName, CanonicalFilePath mainFilePath,
32+
CanonicalFilePath outFilePath, bool hasTestSymbols,
33+
llvm::sys::TimePoint<> modTime)
34+
: UnitName(unitName),
35+
MainFilePath(mainFilePath),
36+
OutFilePath(outFilePath),
37+
HasTestSymbols(hasTestSymbols),
38+
ModTime(modTime) {}
2839
};
2940

3041
} // namespace index

include/IndexStoreDB/Index/SymbolIndex.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class SymbolIndex {
8383
bool foreachCanonicalSymbolOccurrenceByKind(SymbolKind symKind, bool workspaceOnly,
8484
function_ref<bool(SymbolOccurrenceRef Occur)> Receiver);
8585

86-
bool foreachUnitTestSymbolReferencedByOutputPaths(ArrayRef<CanonicalFilePath> FilePaths,
86+
bool foreachUnitTestSymbolReferencedByOutputPaths(ArrayRef<CanonicalFilePathRef> FilePaths,
8787
function_ref<bool(SymbolOccurrenceRef Occur)> Receiver);
8888

8989
private:

lib/Database/Database.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
using namespace IndexStoreDB;
3333
using namespace IndexStoreDB::db;
3434

35-
const unsigned Database::DATABASE_FORMAT_VERSION = 12;
35+
const unsigned Database::DATABASE_FORMAT_VERSION = 13;
3636

3737
static const char *DeadProcessDBSuffix = "-dead";
3838

@@ -144,7 +144,7 @@ Database::Implementation::create(StringRef path, bool readonly, Optional<size_t>
144144
db->SavedPath = savedPathBuf.str();
145145
db->ProcessPath = processPathBuf.str();
146146
db->DBEnv = lmdb::env::create();
147-
db->DBEnv.set_max_dbs(13);
147+
db->DBEnv.set_max_dbs(14);
148148

149149
// Start with 64MB. We'll update with the actual size after we open the database.
150150
db->MapSize = initialDBSize.getValueOr(64ULL*1024ULL*1024ULL);
@@ -168,6 +168,7 @@ Database::Implementation::create(StringRef path, bool readonly, Optional<size_t>
168168
db->DBISymbolProvidersByUSR = lmdb::dbi::open(txn, "usrs", MDB_INTEGERKEY|MDB_DUPSORT|MDB_DUPFIXED|MDB_CREATE);
169169
db->DBISymbolProvidersByUSR.set_dupsort(txn, providersForUSR_compare);
170170
db->DBISymbolProviderNameByCode = lmdb::dbi::open(txn, "providers", MDB_INTEGERKEY|MDB_CREATE);
171+
db->DBISymbolProvidersWithTestSymbols = lmdb::dbi::open(txn, "providers-with-test-symbols", MDB_INTEGERKEY|MDB_CREATE);
171172
db->DBIUSRsBySymbolName = lmdb::dbi::open(txn, "symbol-names", MDB_DUPSORT|MDB_DUPFIXED|MDB_INTEGERDUP|MDB_CREATE);
172173
db->DBIUSRsByGlobalSymbolKind = lmdb::dbi::open(txn, "symbol-kinds", MDB_INTEGERKEY|MDB_DUPSORT|MDB_DUPFIXED|MDB_INTEGERDUP|MDB_CREATE);
173174
db->DBIDirNameByCode = lmdb::dbi::open(txn, "directories", MDB_INTEGERKEY|MDB_CREATE);
@@ -240,7 +241,7 @@ UnitInfo Database::Implementation::getUnitInfo(IDCode unitCode, lmdb::txn &Txn)
240241
llvm::sys::TimePoint<> modTime = llvm::sys::TimePoint<>(std::chrono::nanoseconds(infoData.NanoTime));
241242
return UnitInfo{ unitName, unitCode, modTime,
242243
infoData.OutFileCode, infoData.MainFileCode, infoData.SysrootCode, infoData.TargetCode,
243-
infoData.HasMainFile, infoData.HasSysroot, infoData.IsSystem,
244+
infoData.HasMainFile, infoData.HasSysroot, infoData.IsSystem, infoData.HasTestSymbols,
244245
SymbolProviderKind(infoData.SymProviderKind),
245246
fileDepends, unitDepends, providerDepends };
246247
}

lib/Database/DatabaseImpl.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class Database::Implementation {
2727
lmdb::env DBEnv{nullptr};
2828
lmdb::dbi DBISymbolProvidersByUSR{0};
2929
lmdb::dbi DBISymbolProviderNameByCode{0};
30+
lmdb::dbi DBISymbolProvidersWithTestSymbols{0};
3031
lmdb::dbi DBIUSRsBySymbolName{0};
3132
lmdb::dbi DBIUSRsByGlobalSymbolKind{0};
3233
lmdb::dbi DBIDirNameByCode{0};
@@ -59,6 +60,7 @@ class Database::Implementation {
5960
lmdb::env &getDBEnv() { return DBEnv; }
6061
lmdb::dbi &getDBISymbolProvidersByUSR() { return DBISymbolProvidersByUSR; }
6162
lmdb::dbi &getDBISymbolProviderNameByCode() { return DBISymbolProviderNameByCode; }
63+
lmdb::dbi &getDBISymbolProvidersWithTestSymbols() { return DBISymbolProvidersWithTestSymbols; }
6264
lmdb::dbi &getDBIUSRsBySymbolName() { return DBIUSRsBySymbolName; }
6365
lmdb::dbi &getDBIUSRsByGlobalSymbolKind() { return DBIUSRsByGlobalSymbolKind; }
6466
lmdb::dbi &getDBIDirNameByCode() { return DBIDirNameByCode; }
@@ -137,6 +139,7 @@ struct UnitInfoData {
137139
bool HasMainFile : 1;
138140
bool HasSysroot : 1;
139141
bool IsSystem : 1;
142+
bool HasTestSymbols : 1;
140143
uint32_t FileDependSize;
141144
uint32_t UnitDependSize;
142145
uint32_t ProviderDependSize;

lib/Database/ImportTransaction.cpp

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,16 @@ IDCode ImportTransaction::Implementation::addProviderName(StringRef name, bool *
3838
return code;
3939
}
4040

41+
void ImportTransaction::Implementation::setProviderContainsTestSymbols(IDCode provider) {
42+
lmdb::val key{&provider, sizeof(provider)};
43+
lmdb::val val{nullptr, 0};
44+
DBase->impl().getDBISymbolProvidersWithTestSymbols().put(Txn, key, val, MDB_NOOVERWRITE);
45+
}
46+
47+
bool ImportTransaction::Implementation::providerContainsTestSymbols(IDCode provider) {
48+
return DBase->impl().getDBISymbolProvidersWithTestSymbols().get(Txn, provider);
49+
}
50+
4151
IDCode ImportTransaction::Implementation::addSymbolInfo(IDCode provider, StringRef USR, StringRef symbolName,
4252
SymbolInfo symInfo,
4353
SymbolRoleSet roles, SymbolRoleSet relatedRoles) {
@@ -225,7 +235,7 @@ void ImportTransaction::Implementation::addUnitInfo(const UnitInfo &info) {
225235
nanoTime,
226236
static_cast<uint16_t>(info.UnitName.size()),
227237
uint8_t(info.SymProviderKind),
228-
info.HasMainFile, info.HasSysroot, info.IsSystem,
238+
info.HasMainFile, info.HasSysroot, info.IsSystem, info.HasTestSymbols,
229239
static_cast<uint32_t>(info.FileDepends.size()),
230240
static_cast<uint32_t>(info.UnitDepends.size()),
231241
static_cast<uint32_t>(info.ProviderDepends.size()),
@@ -350,6 +360,14 @@ IDCode ImportTransaction::addProviderName(StringRef name, bool *wasInserted) {
350360
return Impl->addProviderName(name, wasInserted);
351361
}
352362

363+
void ImportTransaction::setProviderContainsTestSymbols(IDCode provider) {
364+
return Impl->setProviderContainsTestSymbols(provider);
365+
}
366+
367+
bool ImportTransaction::providerContainsTestSymbols(IDCode provider) {
368+
return Impl->providerContainsTestSymbols(provider);
369+
}
370+
353371
IDCode ImportTransaction::addSymbolInfo(IDCode provider, StringRef USR, StringRef symbolName,
354372
SymbolInfo symInfo,
355373
SymbolRoleSet roles, SymbolRoleSet relatedRoles) {
@@ -383,6 +401,7 @@ UnitDataImport::UnitDataImport(ImportTransaction &import, StringRef unitName, ll
383401
return; // Does not already exist.
384402

385403
IsSystem = dbUnit.IsSystem;
404+
HasTestSymbols = dbUnit.HasTestSymbols;
386405
SymProviderKind = dbUnit.SymProviderKind;
387406
PrevMainFileCode = dbUnit.MainFileCode;
388407
PrevOutFileCode = dbUnit.OutFileCode;
@@ -532,6 +551,15 @@ void UnitDataImport::commit() {
532551
import.addTargetName(Target);
533552
}
534553

554+
// Update the `HasTestSymbols` value.
555+
HasTestSymbols = false;
556+
for (const UnitInfo::Provider &prov : ProviderDepends) {
557+
if (import.providerContainsTestSymbols(prov.ProviderCode)) {
558+
HasTestSymbols = true;
559+
break;
560+
}
561+
}
562+
535563
UnitInfo info{
536564
UnitName,
537565
UnitCode,
@@ -543,6 +571,7 @@ void UnitDataImport::commit() {
543571
hasMainFile,
544572
hasSysroot,
545573
IsSystem.getValue(),
574+
HasTestSymbols.getValue(),
546575
SymProviderKind.getValue(),
547576
FileDepends,
548577
UnitDepends,

lib/Database/ImportTransactionImpl.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ class ImportTransaction::Implementation {
2929

3030
IDCode getUnitCode(StringRef unitName);
3131
IDCode addProviderName(StringRef name, bool *wasInserted);
32+
// Marks a provider as containing test symbols.
33+
void setProviderContainsTestSymbols(IDCode provider);
34+
bool providerContainsTestSymbols(IDCode provider);
3235
/// \returns a IDCode of the USR.
3336
IDCode addSymbolInfo(IDCode provider, StringRef USR, StringRef symbolName, SymbolInfo symInfo,
3437
SymbolRoleSet roles, SymbolRoleSet relatedRoles);

lib/Database/ReadTransaction.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,20 @@ static bool passMultipleIDCodes(lmdb::cursor &cursor, lmdb::val &key, lmdb::val
259259
return true;
260260
}
261261

262+
bool ReadTransaction::Implementation::foreachProviderContainingTestSymbols(function_ref<bool(IDCode provider)> receiver) {
263+
auto &db = DBase->impl();
264+
auto cursor = lmdb::cursor::open(Txn, db.getDBISymbolProvidersWithTestSymbols());
265+
266+
lmdb::val key{};
267+
lmdb::val value{};
268+
while (cursor.get(key, value, MDB_NEXT)) {
269+
IDCode providerCode = *(IDCode*)key.data();
270+
if (!receiver(providerCode))
271+
return false;
272+
}
273+
return true;
274+
}
275+
262276
bool ReadTransaction::Implementation::foreachUSROfGlobalSymbolKind(SymbolKind symKind,
263277
llvm::function_ref<bool(ArrayRef<IDCode> usrCodes)> receiver) {
264278
auto globalKindOpt = getGlobalSymbolKind(symKind);
@@ -665,6 +679,10 @@ bool ReadTransaction::foreachProviderAndFileCodeReference(
665679
return Impl->foreachProviderAndFileCodeReference(std::move(unitFilter), std::move(receiver));
666680
}
667681

682+
bool ReadTransaction::foreachProviderContainingTestSymbols(function_ref<bool(IDCode provider)> receiver) {
683+
return Impl->foreachProviderContainingTestSymbols(std::move(receiver));
684+
}
685+
668686
bool ReadTransaction::foreachUSROfGlobalSymbolKind(SymbolKind symKind, llvm::function_ref<bool(ArrayRef<IDCode> usrCodes)> receiver) {
669687
return Impl->foreachUSROfGlobalSymbolKind(symKind, std::move(receiver));
670688
}

lib/Database/ReadTransactionImpl.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ class ReadTransaction::Implementation {
5757
bool foreachProviderAndFileCodeReference(function_ref<bool(IDCode unitCode)> unitFilter,
5858
function_ref<bool(IDCode provider, IDCode pathCode, IDCode unitCode, llvm::sys::TimePoint<> modTime, IDCode moduleNameCode, bool isSystem)> receiver);
5959

60+
bool foreachProviderContainingTestSymbols(function_ref<bool(IDCode provider)> receiver);
61+
6062
bool foreachUSROfGlobalSymbolKind(SymbolKind symKind, llvm::function_ref<bool(ArrayRef<IDCode> usrCodes)> receiver);
6163
bool foreachUSROfGlobalUnitTestSymbol(llvm::function_ref<bool(ArrayRef<IDCode> usrCodes)> receiver);
6264
bool foreachUSROfGlobalSymbolKind(GlobalSymbolKind globalSymKind, function_ref<bool(ArrayRef<IDCode> usrCodes)> receiver);

lib/Index/IndexDatastore.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ void StoreUnitRepo::registerUnit(StringRef unitName) {
296296
IDCode unitCode;
297297
bool needDatabaseUpdate;
298298
Optional<bool> optIsSystem;
299+
Optional<bool> PrevHasTestSymbols;
299300
IDCode PrevMainFileCode;
300301
IDCode PrevOutFileCode;
301302
Optional<StoreUnitInfo> StoreUnitInfoOpt;
@@ -312,6 +313,7 @@ void StoreUnitRepo::registerUnit(StringRef unitName) {
312313
if (!needDatabaseUpdate) {
313314
PrevMainFileCode = unitImport.getPrevMainFileCode();
314315
PrevOutFileCode = unitImport.getPrevOutFileCode();
316+
PrevHasTestSymbols = unitImport.getHasTestSymbols();
315317
return false;
316318
}
317319

@@ -333,7 +335,6 @@ void StoreUnitRepo::registerUnit(StringRef unitName) {
333335
}
334336
CanonicalFilePath CanonOutFile = CanonPathCache->getCanonicalPath(Reader.getOutputFile(), WorkDir);
335337
unitImport.setOutFile(CanonOutFile);
336-
StoreUnitInfoOpt = StoreUnitInfo{unitName, CanonMainFile, CanonOutFile, unitModTime};
337338

338339
CanonicalFilePath CanonSysroot = CanonPathCache->getCanonicalPath(Reader.getSysrootPath(), WorkDir);
339340
unitImport.setSysroot(CanonSysroot);
@@ -385,6 +386,7 @@ void StoreUnitRepo::registerUnit(StringRef unitName) {
385386
});
386387

387388
unitImport.commit();
389+
StoreUnitInfoOpt = StoreUnitInfo{unitName, CanonMainFile, CanonOutFile, unitImport.getHasTestSymbols().getValue(), unitModTime};
388390
import.commit();
389391
return false;
390392
};
@@ -397,7 +399,7 @@ void StoreUnitRepo::registerUnit(StringRef unitName) {
397399
ReadTransaction reader(SymIndex->getDBase());
398400
CanonicalFilePath mainFile = reader.getFullFilePathFromCode(PrevMainFileCode);
399401
CanonicalFilePath outFile = reader.getFullFilePathFromCode(PrevOutFileCode);
400-
StoreUnitInfoOpt = StoreUnitInfo{unitName, mainFile, outFile, unitModTime};
402+
StoreUnitInfoOpt = StoreUnitInfo{unitName, mainFile, outFile, PrevHasTestSymbols.getValue(), unitModTime};
401403
}
402404
Delegate->processedStoreUnit(StoreUnitInfoOpt.getValue());
403405
}
@@ -501,6 +503,7 @@ void StoreUnitRepo::onUnitOutOfDate(IDCode unitCode, StringRef unitName,
501503
bool synchronous) {
502504
CanonicalFilePath MainFilePath;
503505
CanonicalFilePath OutFilePath;
506+
bool hasTestSymbols = false;
504507
llvm::sys::TimePoint<> CurrModTime;
505508
SmallVector<IDCode, 8> dependentUnits;
506509
{
@@ -511,13 +514,14 @@ void StoreUnitRepo::onUnitOutOfDate(IDCode unitCode, StringRef unitName,
511514
MainFilePath = reader.getFullFilePathFromCode(unitInfo.MainFileCode);
512515
}
513516
OutFilePath = reader.getFullFilePathFromCode(unitInfo.OutFileCode);
517+
hasTestSymbols = unitInfo.HasTestSymbols;
514518
CurrModTime = unitInfo.ModTime;
515519
}
516520
reader.getDirectDependentUnits(unitCode, dependentUnits);
517521
}
518522

519523
if (!MainFilePath.empty() && Delegate) {
520-
StoreUnitInfo unitInfo{unitName, MainFilePath, OutFilePath, CurrModTime};
524+
StoreUnitInfo unitInfo{unitName, MainFilePath, OutFilePath, hasTestSymbols, CurrModTime};
521525
Delegate->unitIsOutOfDate(unitInfo, outOfDateModTime, hint, synchronous);
522526
}
523527

lib/Index/IndexSystem.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ class IndexSystemImpl {
180180
bool foreachFileIncludedByFile(StringRef SourcePath,
181181
function_ref<bool(CanonicalFilePathRef TargetPath, unsigned Line)> Receiver);
182182

183-
bool foreachUnitTestSymbolReferencedByOutputPaths(ArrayRef<StringRef> FilePaths,
183+
bool foreachUnitTestSymbolReferencedByOutputPaths(ArrayRef<CanonicalFilePathRef> FilePaths,
184184
function_ref<bool(SymbolOccurrenceRef Occur)> Receiver);
185185
};
186186

@@ -522,13 +522,8 @@ bool IndexSystemImpl::foreachFileIncludedByFile(StringRef SourcePath,
522522
return PathIndex->foreachFileIncludedByFile(canonSourcePath, Receiver);
523523
}
524524

525-
bool IndexSystemImpl::foreachUnitTestSymbolReferencedByOutputPaths(ArrayRef<StringRef> FilePaths, function_ref<bool(SymbolOccurrenceRef Occur)> Receiver) {
526-
SmallVector<CanonicalFilePath, 8> canonPaths;
527-
canonPaths.reserve(FilePaths.size());
528-
for (StringRef path : FilePaths) {
529-
canonPaths.push_back(PathIndex->getCanonicalPath(path));
530-
}
531-
return SymIndex->foreachUnitTestSymbolReferencedByOutputPaths(canonPaths, std::move(Receiver));
525+
bool IndexSystemImpl::foreachUnitTestSymbolReferencedByOutputPaths(ArrayRef<CanonicalFilePathRef> FilePaths, function_ref<bool(SymbolOccurrenceRef Occur)> Receiver) {
526+
return SymIndex->foreachUnitTestSymbolReferencedByOutputPaths(FilePaths, std::move(Receiver));
532527
}
533528

534529
//===----------------------------------------------------------------------===//
@@ -709,7 +704,7 @@ bool IndexSystem::foreachFileIncludedByFile(StringRef SourcePath,
709704
return IMPL->foreachFileIncludedByFile(SourcePath, Receiver);
710705
}
711706

712-
bool IndexSystem::foreachUnitTestSymbolReferencedByOutputPaths(ArrayRef<StringRef> FilePaths,
707+
bool IndexSystem::foreachUnitTestSymbolReferencedByOutputPaths(ArrayRef<CanonicalFilePathRef> FilePaths,
713708
function_ref<bool(SymbolOccurrenceRef Occur)> Receiver) {
714709
return IMPL->foreachUnitTestSymbolReferencedByOutputPaths(FilePaths, std::move(Receiver));
715710
}

0 commit comments

Comments
 (0)