aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRhett Aultman <roadriverrail@gmail.com>2016-12-22 03:40:13 +0800
committerRhett Aultman <rhett.aultman@meraki.net>2017-01-17 01:32:58 +0800
commit5a2331a9f6615e58f4d10d266870daaaf05deb6b (patch)
treef962ef15aa38f365980fcdeb107dc2a8def62f38
parent1f30982ab532fdf719f3924e24e80057fe85e031 (diff)
downloaddexon-solidity-5a2331a9f6615e58f4d10d266870daaaf05deb6b.tar.gz
dexon-solidity-5a2331a9f6615e58f4d10d266870daaaf05deb6b.tar.zst
dexon-solidity-5a2331a9f6615e58f4d10d266870daaaf05deb6b.zip
Remove checkLibraryNameClashes()
The library name clash checker throws errors when two libraries of the same name are spotted. In a previous commit, this function was rewritten to use fully-qualified names instead, which makes it redundant to the checker for multiply-declared identifiers. Since it no longer serves a clear purpose, the function is being dropped.
-rw-r--r--libsolidity/interface/CompilerStack.cpp34
-rw-r--r--libsolidity/interface/CompilerStack.h3
2 files changed, 0 insertions, 37 deletions
diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp
index d4675a23..d8bb20d7 100644
--- a/libsolidity/interface/CompilerStack.cpp
+++ b/libsolidity/interface/CompilerStack.cpp
@@ -191,9 +191,6 @@ bool CompilerStack::parse()
m_contracts[contract->fullyQualifiedName()].contract = contract;
}
- if (!checkLibraryNameClashes())
- noErrors = false;
-
for (Source const* source: m_sourceOrder)
for (ASTPointer<ASTNode> const& node: source->ast->nodes())
if (ContractDefinition* contract = dynamic_cast<ContractDefinition*>(node.get()))
@@ -604,37 +601,6 @@ void CompilerStack::resolveImports()
swap(m_sourceOrder, sourceOrder);
}
-bool CompilerStack::checkLibraryNameClashes()
-{
- bool clashFound = false;
- map<string, SourceLocation> libraries;
- for (Source const* source: m_sourceOrder)
- for (ASTPointer<ASTNode> const& node: source->ast->nodes())
- if (ContractDefinition* contract = dynamic_cast<ContractDefinition*>(node.get()))
- if (contract->isLibrary())
- {
- if (libraries.count(contract->fullyQualifiedName()))
- {
- auto err = make_shared<Error>(Error::Type::DeclarationError);
- *err <<
- errinfo_sourceLocation(contract->location()) <<
- errinfo_comment(
- "Library \"" + contract->name() + "\" declared twice "
- "(will create ambiguities during linking)."
- ) <<
- errinfo_secondarySourceLocation(SecondarySourceLocation().append(
- "The other declaration is here:", libraries[contract->name()]
- ));
-
- m_errors.push_back(err);
- clashFound = true;
- }
- else
- libraries[contract->fullyQualifiedName()] = contract->location();
- }
- return !clashFound;
-}
-
string CompilerStack::absolutePath(string const& _path, string const& _reference) const
{
using path = boost::filesystem::path;
diff --git a/libsolidity/interface/CompilerStack.h b/libsolidity/interface/CompilerStack.h
index 9436bd83..61edc284 100644
--- a/libsolidity/interface/CompilerStack.h
+++ b/libsolidity/interface/CompilerStack.h
@@ -234,9 +234,6 @@ private:
StringMap loadMissingSources(SourceUnit const& _ast, std::string const& _path);
std::string applyRemapping(std::string const& _path, std::string const& _context);
void resolveImports();
- /// Checks whether there are libraries with the same name, reports that as an error and
- /// @returns false in this case.
- bool checkLibraryNameClashes();
/// @returns the absolute path corresponding to @a _path relative to @a _reference.
std::string absolutePath(std::string const& _path, std::string const& _reference) const;
/// Helper function to return path converted strings.