Restructure code for alternative identifier suggestions

This commit is contained in:
Balajiganapathi S
2018-02-13 15:00:15 +00:00
committed by Alex Beregszaszi
parent d123e777d3
commit 8a491c77ba
6 changed files with 86 additions and 50 deletions
@@ -119,20 +119,19 @@ vector<Declaration const*> DeclarationContainer::resolveName(ASTString const& _n
vector<ASTString> DeclarationContainer::similarNames(ASTString const& _name) const
{
static size_t const MAXIMUM_EDIT_DISTANCE = 2;
vector<ASTString> similar;
for (auto const& declaration: m_declarations)
{
string const& declarationName = declaration.first;
if (stringWithinDistance(_name, declarationName, MAXIMUM_DISTANCE))
if (stringWithinDistance(_name, declarationName, MAXIMUM_EDIT_DISTANCE))
similar.push_back(declarationName);
}
if (m_enclosingContainer)
{
vector<ASTString> enclosingSimilar = m_enclosingContainer->similarNames(_name);
similar.insert(similar.end(), enclosingSimilar.begin(), enclosingSimilar.end());
}
similar += m_enclosingContainer->similarNames(_name);
return similar;
}
@@ -68,7 +68,6 @@ private:
std::map<ASTString, std::vector<Declaration const*>> m_declarations;
std::map<ASTString, std::vector<Declaration const*>> m_invisibleDeclarations;
static size_t const MAXIMUM_DISTANCE = 2;
};
}
+2 -13
View File
@@ -25,6 +25,7 @@
#include <libsolidity/ast/AST.h>
#include <libsolidity/analysis/TypeChecker.h>
#include <libsolidity/interface/ErrorReporter.h>
#include <libdevcore/StringUtils.h>
#include <boost/algorithm/string.hpp>
@@ -427,19 +428,7 @@ vector<_T const*> NameAndTypeResolver::cThreeMerge(list<list<_T const*>>& _toMer
string NameAndTypeResolver::similarNameSuggestions(ASTString const& _name) const
{
vector<ASTString> suggestions = m_currentScope->similarNames(_name);
if (suggestions.empty())
return "";
if (suggestions.size() == 1)
return "\"" + suggestions.front() + "\"";
string choices = "\"" + suggestions.front() + "\"";
for (size_t i = 1; i + 1 < suggestions.size(); ++i)
choices += ", \"" + suggestions[i] + "\"";
choices += " or \"" + suggestions.back() + "\"";
return choices;
return quotedAlternativesList(m_currentScope->similarNames(_name));
}
DeclarationRegistrationHelper::DeclarationRegistrationHelper(