kadircet added inline comments.

================
Comment at: clang-tools-extra/clangd/index/FileIndex.cpp:152
+  // Attribute relations to both their subject's and object's locations.
+  // See https://github.com/clangd/clangd/issues/510 for discussion of why.
   if (Index.Relations) {
----------------
instead of (or in addition to) providing the link, can we give a short summary? 
e.g.

```
Subject and/or Object files might be part of multiple TUs. In such cases there 
will be a race
and last TU to write the shard will win and all the other relations will be 
lost. We are storing
relations in both places, as we do for symbols, to reduce such races. Note that 
they might still
happen if same translation unit produces different relations under different 
configurations
but that's something clangd doesn't handle in general. 
```


================
Comment at: clang-tools-extra/clangd/index/FileIndex.cpp:350
       AllRelations.push_back(R);
+    // Sort relations and remove duplicates that could arise due to
+    // relations being stored in both the shards containing their
----------------
can you move this outside of the for loop, so that we do it only once.


================
Comment at: clang-tools-extra/clangd/unittests/BackgroundIndexTests.cpp:232
 
+TEST_F(BackgroundIndexTest, RelationsMultiFile) {
+  MockFS FS;
----------------
do we still need this test?


================
Comment at: clang-tools-extra/clangd/unittests/BackgroundIndexTests.cpp:396
   SymbolID B = findSymbol(*ShardSource->Symbols, "B_CC").ID;
-  EXPECT_THAT(*ShardHeader->Relations,
+  EXPECT_THAT(*ShardSource->Relations,
+              UnorderedElementsAre(Relation{A, RelationKind::BaseOf, B}));
----------------
s/ShardSource/ShardHeader


================
Comment at: clang-tools-extra/clangd/unittests/FileIndexTests.cpp:571
     B.insert(Relation{Sym2.ID, RelationKind::BaseOf, Sym1.ID});
-    // Dangling relation should be dropped.
-    B.insert(Relation{symbol("3").ID, RelationKind::BaseOf, Sym1.ID});
+    // Should be stored in a.h even though it's dangling
+    B.insert(Relation{Sym3.ID, RelationKind::BaseOf, Sym1.ID});
----------------
maybe mention that `Sym1` belongs to `a.h` in the comment. `stored in a.h 
(where Sym1 is stored) even tho the reference is dangling as Sym3 is unknown `


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D87256/new/

https://reviews.llvm.org/D87256

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to