ilya-biryukov added inline comments.
================ Comment at: clangd/ClangdServer.cpp:500 + if (!RefactoringClient) + RefactoringClient = llvm::make_unique<tooling::RefactoringEditorClient>(); + Results = clangd::findAvailableRefactoringCommands(*RefactoringClient, *AST, ---------------- Maybe initialize `RefactoringClient` in constructor? ================ Comment at: clangd/ClangdServer.cpp:514 + std::shared_ptr<CppFile> Resources = Units.getFile(File); + assert(Resources && "executeCommand getCommands on non-added file"); + ---------------- s/getCommands// ================ Comment at: clangd/ClangdServer.cpp:526 + clangd::performRefactoringCommand(*RefactoringClient, CommandName, *AST, + + SelectionRange, Logger); ---------------- NIT: remove empty line. ================ Comment at: clangd/Protocol.cpp:992 + clangd::Logger &Logger) { + CommandArgument Result; + for (auto &NextKeyValue : *Params) { ---------------- Maybe use `llvm::Optional<CommandArgument>` instead of `CommandArgument`? If the loop body below won't get executed (i.e., `Params` is empty), we'll be returning uninitialized local variable. ================ Comment at: clangd/Protocol.h:540 + enum Kind { SelectionRangeKind, TextDocumentIdentifierKind }; + Kind ArgumentKind; + ---------------- Could we make `ArgumentKind`, `union` members and default constructor private (`makeDocumentID` , `makeSelectionRange` and `unparse` would be the only way to construct `CommandArgument`)? This would give an interface that's much harder to misuse. Repository: rL LLVM https://reviews.llvm.org/D39057 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits