[NFC] Cleanup Dex

* Use consistent assertion messages in iterators implementations
* Silence a bunch of clang-tidy warnings: use `emplace_back` instead of
  `push_back` where possible, make sure arguments have the same name in
  header and implementation file, use for loop over ranges where possible

Reviewed by: ioeric

Differential Revision: https://reviews.llvm.org/D51528

llvm-svn: 341190
This commit is contained in:
Kirill Bobyrev 2018-08-31 09:17:02 +00:00
parent a8c22c0894
commit 493b1627ca
4 changed files with 33 additions and 30 deletions

View File

@ -30,7 +30,7 @@ namespace {
// * Types
std::vector<Token> generateSearchTokens(const Symbol &Sym) {
std::vector<Token> Result = generateIdentifierTrigrams(Sym.Name);
Result.push_back(Token(Token::Kind::Scope, Sym.Scope));
Result.emplace_back(Token::Kind::Scope, Sym.Scope);
return Result;
}

View File

@ -41,7 +41,7 @@ class DexIndex : public SymbolIndex {
public:
/// \brief (Re-)Build index for `Symbols`. All symbol pointers must remain
/// accessible as long as `Symbols` is kept alive.
void build(std::shared_ptr<std::vector<const Symbol *>> Symbols);
void build(std::shared_ptr<std::vector<const Symbol *>> Syms);
/// \brief Build index from a symbol slab.
static std::unique_ptr<SymbolIndex> build(SymbolSlab Slab);

View File

@ -30,23 +30,26 @@ public:
/// Advances cursor to the next item.
void advance() override {
assert(!reachedEnd() && "DocumentIterator can't advance at the end.");
assert(!reachedEnd() && "DOCUMENT iterator can't advance() at the end.");
++Index;
}
/// Applies binary search to advance cursor to the next item with DocID equal
/// or higher than the given one.
void advanceTo(DocID ID) override {
assert(!reachedEnd() && "DocumentIterator can't advance at the end.");
assert(!reachedEnd() && "DOCUMENT iterator can't advance() at the end.");
Index = std::lower_bound(Index, std::end(Documents), ID);
}
DocID peek() const override {
assert(!reachedEnd() && "DocumentIterator can't call peek() at the end.");
assert(!reachedEnd() && "DOCUMENT iterator can't peek() at the end.");
return *Index;
}
float consume() override { return DEFAULT_BOOST_SCORE; }
float consume() override {
assert(!reachedEnd() && "DOCUMENT iterator can't consume() at the end.");
return DEFAULT_BOOST_SCORE;
}
size_t estimateSize() const override { return Documents.size(); }
@ -84,7 +87,7 @@ class AndIterator : public Iterator {
public:
AndIterator(std::vector<std::unique_ptr<Iterator>> AllChildren)
: Children(std::move(AllChildren)) {
assert(!Children.empty() && "AndIterator should have at least one child.");
assert(!Children.empty() && "AND iterator should have at least one child.");
// Establish invariants.
sync();
// When children are sorted by the estimateSize(), sync() calls are more
@ -105,14 +108,14 @@ public:
/// Advances all children to the next common item.
void advance() override {
assert(!reachedEnd() && "AndIterator can't call advance() at the end.");
assert(!reachedEnd() && "AND iterator can't advance() at the end.");
Children.front()->advance();
sync();
}
/// Advances all children to the next common item with DocumentID >= ID.
void advanceTo(DocID ID) override {
assert(!reachedEnd() && "AndIterator can't call advanceTo() at the end.");
assert(!reachedEnd() && "AND iterator can't advanceTo() at the end.");
Children.front()->advanceTo(ID);
sync();
}
@ -120,7 +123,7 @@ public:
DocID peek() const override { return Children.front()->peek(); }
float consume() override {
assert(!reachedEnd() && "AndIterator can't consume() at the end.");
assert(!reachedEnd() && "AND iterator can't consume() at the end.");
return std::accumulate(
begin(Children), end(Children), DEFAULT_BOOST_SCORE,
[&](float Current, const std::unique_ptr<Iterator> &Child) {
@ -192,7 +195,7 @@ class OrIterator : public Iterator {
public:
OrIterator(std::vector<std::unique_ptr<Iterator>> AllChildren)
: Children(std::move(AllChildren)) {
assert(Children.size() > 0 && "Or Iterator must have at least one child.");
assert(Children.size() > 0 && "OR iterator must have at least one child.");
}
/// Returns true if all children are exhausted.
@ -205,8 +208,7 @@ public:
/// Moves each child pointing to the smallest DocID to the next item.
void advance() override {
assert(!reachedEnd() &&
"OrIterator can't call advance() after it reached the end.");
assert(!reachedEnd() && "OR iterator can't advance() at the end.");
const auto SmallestID = peek();
for (const auto &Child : Children)
if (!Child->reachedEnd() && Child->peek() == SmallestID)
@ -215,7 +217,7 @@ public:
/// Advances each child to the next existing element with DocumentID >= ID.
void advanceTo(DocID ID) override {
assert(!reachedEnd() && "Can't advance iterator after it reached the end.");
assert(!reachedEnd() && "OR iterator can't advanceTo() at the end.");
for (const auto &Child : Children)
if (!Child->reachedEnd())
Child->advanceTo(ID);
@ -224,8 +226,7 @@ public:
/// Returns the element under cursor of the child with smallest Child->peek()
/// value.
DocID peek() const override {
assert(!reachedEnd() &&
"OrIterator can't peek() after it reached the end.");
assert(!reachedEnd() && "OR iterator can't peek() at the end.");
DocID Result = std::numeric_limits<DocID>::max();
for (const auto &Child : Children)
@ -238,8 +239,7 @@ public:
// Returns the maximum boosting score among all Children when iterator is not
// exhausted and points to the given ID, DEFAULT_BOOST_SCORE otherwise.
float consume() override {
assert(!reachedEnd() &&
"OrIterator can't consume() after it reached the end.");
assert(!reachedEnd() && "OR iterator can't consume() at the end.");
const DocID ID = peek();
return std::accumulate(
begin(Children), end(Children), DEFAULT_BOOST_SCORE,
@ -284,21 +284,24 @@ public:
bool reachedEnd() const override { return Index >= Size; }
void advance() override {
assert(!reachedEnd() && "Can't advance iterator after it reached the end.");
assert(!reachedEnd() && "TRUE iterator can't advance() at the end.");
++Index;
}
void advanceTo(DocID ID) override {
assert(!reachedEnd() && "Can't advance iterator after it reached the end.");
assert(!reachedEnd() && "TRUE iterator can't advanceTo() at the end.");
Index = std::min(ID, Size);
}
DocID peek() const override {
assert(!reachedEnd() && "TrueIterator can't call peek() at the end.");
assert(!reachedEnd() && "TRUE iterator can't peek() at the end.");
return Index;
}
float consume() override { return DEFAULT_BOOST_SCORE; }
float consume() override {
assert(!reachedEnd() && "TRUE iterator can't consume() at the end.");
return DEFAULT_BOOST_SCORE;
}
size_t estimateSize() const override { return Size; }
@ -364,7 +367,7 @@ public:
/// Decreases the limit in case the element consumed at top of the query tree
/// comes from the underlying iterator.
float consume() override {
assert(!reachedEnd() && "LimitIterator can't consume at the end.");
assert(!reachedEnd() && "LimitIterator can't consume() at the end.");
--ItemsLeft;
return Child->consume();
}
@ -389,7 +392,7 @@ private:
std::vector<std::pair<DocID, float>> consume(Iterator &It) {
std::vector<std::pair<DocID, float>> Result;
for (; !It.reachedEnd(); It.advance())
Result.push_back(std::make_pair(It.peek(), It.consume()));
Result.emplace_back(It.peek(), It.consume());
return Result;
}
@ -417,8 +420,8 @@ std::unique_ptr<Iterator> createBoost(std::unique_ptr<Iterator> Child,
}
std::unique_ptr<Iterator> createLimit(std::unique_ptr<Iterator> Child,
size_t Size) {
return llvm::make_unique<LimitIterator>(move(Child), Size);
size_t Limit) {
return llvm::make_unique<LimitIterator>(move(Child), Limit);
}
} // namespace dex

View File

@ -87,10 +87,10 @@ std::vector<Token> generateIdentifierTrigrams(llvm::StringRef Identifier) {
if (Roles[I] != Head && Roles[I] != Tail)
continue;
for (const unsigned J : Next[I]) {
if (!J)
if (J == 0)
continue;
for (const unsigned K : Next[J]) {
if (!K)
if (K == 0)
continue;
add({{LowercaseIdentifier[I], LowercaseIdentifier[J],
LowercaseIdentifier[K]}});
@ -113,8 +113,8 @@ std::vector<Token> generateQueryTrigrams(llvm::StringRef Query) {
// Additional pass is necessary to count valid identifier characters.
// Depending on that, this function might return incomplete trigram.
unsigned ValidSymbolsCount = 0;
for (size_t I = 0; I < Roles.size(); ++I)
if (Roles[I] == Head || Roles[I] == Tail)
for (const auto Role : Roles)
if (Role == Head || Role == Tail)
++ValidSymbolsCount;
std::string LowercaseQuery = Query.lower();