liblangutil: SourceLocation: Retricts == and != operator

This commit is contained in:
Christian Parpart 2018-11-30 17:34:54 +01:00
parent 18e3d6dbca
commit 757623e381
No known key found for this signature in database
GPG Key ID: 19BC8DD20312C929
2 changed files with 5 additions and 6 deletions

View File

@ -44,9 +44,7 @@ struct SourceLocation
bool operator==(SourceLocation const& _other) const
{
return start == _other.start && end == _other.end &&
((!source.get() && !_other.source.get()) ||
(source.get() && _other.source.get() && source->name() == _other.source->name()));
return source.get() == _other.source.get() && start == _other.start && end == _other.end;
}
bool operator!=(SourceLocation const& _other) const { return !operator==(_other); }
inline bool operator<(SourceLocation const& _other) const;
@ -84,14 +82,14 @@ bool SourceLocation::operator<(SourceLocation const& _other) const
bool SourceLocation::contains(SourceLocation const& _other) const
{
if (isEmpty() || _other.isEmpty() || ((!source || !_other.source || source->name() != _other.source->name()) && (source || _other.source)))
if (isEmpty() || _other.isEmpty() || source.get() != _other.source.get())
return false;
return start <= _other.start && _other.end <= end;
}
bool SourceLocation::intersects(SourceLocation const& _other) const
{
if (isEmpty() || _other.isEmpty() || ((!source || !_other.source || source->name() != _other.source->name()) && (source || _other.source)))
if (isEmpty() || _other.isEmpty() || source.get() != _other.source.get())
return false;
return _other.start < end && start < _other.end;
}

View File

@ -135,7 +135,8 @@ void checkAssemblyLocations(AssemblyItems const& _items, vector<SourceLocation>
BOOST_CHECK_EQUAL(_items.size(), _locations.size());
for (size_t i = 0; i < min(_items.size(), _locations.size()); ++i)
{
if (_items[i].location() != _locations[i])
if (_items[i].location().start != _locations[i].start ||
_items[i].location().end != _locations[i].end)
{
BOOST_CHECK_MESSAGE(false, "Location mismatch for item " + to_string(i) + ". Found the following locations:");
printAssemblyLocations(_items);