[PATCH] D38639: [clangd] #include statements support for Open definition

Marc-Andre Laperle via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 6 11:30:20 PDT 2017


malaperle requested changes to this revision.
malaperle added inline comments.
This revision now requires changes to proceed.


================
Comment at: clangd/ClangdUnit.cpp:81
 
+  std::map<SourceLocation, std::string> takeIncludeMap() {
+    return std::move(IncludeMap);
----------------
takeIncludeLocationMap?


================
Comment at: clangd/ClangdUnit.cpp:105
+    const SourceManager &SM = CI.getSourceManager();
+    unsigned n = SM.local_sloc_entry_size();
+    SmallVector<SourceLocation, 10> InclusionStack;
----------------
n -> NumSlocs?


================
Comment at: clangd/ClangdUnit.cpp:107
+    SmallVector<SourceLocation, 10> InclusionStack;
+    std::map<SourceLocation, std::string>::iterator it = IncludeMap.begin();
+
----------------
do you need that iterator?


================
Comment at: clangd/ClangdUnit.cpp:109
+
+    for (unsigned i = 0; i < n; ++i) {
+      bool Invalid = false;
----------------
i -> I


================
Comment at: clangd/ClangdUnit.cpp:137
+          FI.getContentCache()->OrigEntry->tryGetRealPathName();
+      if (FilePath.empty()) {
+        // FIXME: Does tryGetRealPathName return empty if and only if the path
----------------
I think you can just skip it if empty (continue)


================
Comment at: clangd/ClangdUnit.cpp:143
+      }
+      IncludeMap.insert(std::pair<SourceLocation, std::string>(
+          InclusionStack.front(), FilePath.str()));
----------------
I think you can do instead 
IncludeMap.insert({InclusionStack.front(), FilePath.str()});


================
Comment at: clangd/ClangdUnit.cpp:151
   std::vector<serialization::DeclID> TopLevelDeclIDs;
+  std::map<SourceLocation, std::string> IncludeMap;
 };
----------------
IncludeMap -> IncludeLocationMap ?


================
Comment at: clangd/ClangdUnit.cpp:800
 
-  void addDeclarationLocation(const SourceRange &ValSourceRange) {
+  bool isSameLine(unsigned line) const {
+    const SourceManager &SourceMgr = AST.getSourceManager();
----------------
line -> Line


================
Comment at: clangd/ClangdUnit.cpp:806
+  void addDeclarationLocation(const SourceRange &ValSourceRange,
+                              bool test = false) {
     const SourceManager &SourceMgr = AST.getSourceManager();
----------------
remove bool test?


================
Comment at: clangd/ClangdUnit.cpp:824
+
+  void addLocation(URI uri, Range R) {
+
----------------
uri -> Uri


================
Comment at: clangd/ClangdUnit.cpp:834
+
+    for (auto it = IncludeMap.begin(); it != IncludeMap.end(); ++it) {
+      SourceLocation L = it->first;
----------------
it -> It


================
Comment at: clangd/ClangdUnit.cpp:837
+      std::string &Path = it->second;
+      Range r = Range();
+      unsigned line = AST.getSourceManager().getSpellingLineNumber(L);
----------------
r -> R


================
Comment at: clangd/ClangdUnit.cpp:839
+      unsigned line = AST.getSourceManager().getSpellingLineNumber(L);
+      if (isSameLine(line))
+        addLocation(URI::fromFile(Path), Range());
----------------
line -> Line


================
Comment at: clangd/ClangdUnit.h:136
   std::vector<DiagWithFixIts> Diags;
+  std::map<SourceLocation, std::string> IncludeMap;
 };
----------------
IncludeLocationMap?


================
Comment at: clangd/ClangdUnit.h:267
+                                      clangd::Logger &Logger,
+                                      std::map<SourceLocation, std::string>);
 
----------------
do you want to add a name to the parameter here?


================
Comment at: unittests/clangd/ClangdTests.cpp:902
 
-TEST_F(ClangdVFSTest, CheckSourceHeaderSwitch) {
+TEST_F(ClangdVFSTest, CheckDefinitionIncludes) {
   MockFSProvider FS;
----------------
the test "CheckSourceHeaderSwitch" was removed


https://reviews.llvm.org/D38639





More information about the cfe-commits mailing list