diff --git a/libdevcore/CommonData.h b/libdevcore/CommonData.h index 4297f606f..ab4bfe682 100644 --- a/libdevcore/CommonData.h +++ b/libdevcore/CommonData.h @@ -166,6 +166,12 @@ template std::vector& operator+=(std::vector& _a, U con _a.push_back(i); return _a; } +/// Concatenate the contents of a container onto a set +template std::set& operator+=(std::set& _a, U const& _b) +{ + _a.insert(_b.begin(), _b.end()); + return _a; +} /// Concatenate two vectors of elements. template inline std::vector operator+(std::vector const& _a, std::vector const& _b) diff --git a/libsolidity/ast/AST.cpp b/libsolidity/ast/AST.cpp index f4ab64910..ebc8bd480 100644 --- a/libsolidity/ast/AST.cpp +++ b/libsolidity/ast/AST.cpp @@ -95,10 +95,7 @@ set SourceUnit::referencedSourceUnits(bool _recurse, set referencedSourceUnits = sourceUnit->referencedSourceUnits(true, _skipList); - sourceUnits.insert(referencedSourceUnits.begin(), referencedSourceUnits.end()); - } + sourceUnits += sourceUnit->referencedSourceUnits(true, _skipList); } } return sourceUnits;