Signed-off-by: VoR0220 <rj@erisindustries.com>

fixup

Signed-off-by: VoR0220 <rj@erisindustries.com>
This commit is contained in:
VoR0220 2017-01-11 10:56:35 -06:00
parent e96c32a072
commit 4585bfdce7
No known key found for this signature in database
GPG Key ID: D4AB109D9B5D6386
3 changed files with 16 additions and 16 deletions

View File

@ -1,8 +1,7 @@
### 0.4.8 (unreleased)
BugFixes:
* Remappings: a=b would overwrite c:a=d. This has now been fixed to all modules except
c using b as their target, with c using d as the target.
* Remappings: Prefer longer context over longer prefix.
* Type checker, code generator: enable access to events of base contracts' names.
* Imports: ``import ".dir/a"`` is not a relative path. Relative paths begin with directory ``.`` or ``..``.

View File

@ -510,28 +510,28 @@ string CompilerStack::applyRemapping(string const& _path, string const& _context
size_t longestPrefix = 0;
size_t longestContext = 0;
string longestPrefixTarget;
string bestMatchTarget;
for (auto const& redir: m_remappings)
{
string contextFileString = sanitizePath(redir.context);
string prefixFileString = sanitizePath(redir.prefix);
// Skip if there is a prefix collision and the current context is closer
if (longestContext > 0 && contextFileString.length() < longestContext)
string context = sanitizePath(redir.context);
string prefix = sanitizePath(redir.prefix);
// Skip if current context is closer
if (context.length() < longestContext)
continue;
// Skip if redir.context is not a prefix of _context
if (!isPrefixOf(contextFileString, _context))
if (!isPrefixOf(context, _context))
continue;
// Skip if we already have a closer match.
if (prefixFileString.length() < longestPrefix)
// Skip if we already have a closer prefix match.
if (prefix.length() < longestPrefix)
continue;
// Skip if the prefix does not match.
if (!isPrefixOf(prefixFileString, _path))
if (!isPrefixOf(prefix, _path))
continue;
longestContext = contextFileString.length();
longestPrefix = prefixFileString.length();
longestPrefixTarget = redir.target;
longestContext = context.length();
longestPrefix = prefix.length();
bestMatchTarget = redir.target;
}
string path = longestPrefixTarget;

View File

@ -235,13 +235,14 @@ private:
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.
std::string sanitizePath(std::string const& _path) const { return boost::filesystem::path(_path).generic_string(); }
/// Compile a single contract and put the result in @a _compiledContracts.
void compileContract(
ContractDefinition const& _contract,
std::map<ContractDefinition const*, eth::Assembly const*>& _compiledContracts
);
/// Helper function to return path converted strings.
std::string sanitizePath(std::string const& _path) { return boost::filesystem::path(_path).generic_string(); }
void link();
Contract const& contract(std::string const& _contractName = "") const;