diff --git a/src/libs/clangsupport/modifiedtimechecker.h b/src/libs/clangsupport/modifiedtimechecker.h index 00e8e3ebacf..0b7f97c5a34 100644 --- a/src/libs/clangsupport/modifiedtimechecker.h +++ b/src/libs/clangsupport/modifiedtimechecker.h @@ -83,12 +83,12 @@ public: private: bool compareEntries(const SourceEntries &sourceEntries) const { - return set_intersection_compare( + return !set_intersection_compare( m_currentSourceTimeStamps.begin(), m_currentSourceTimeStamps.end(), sourceEntries.begin(), sourceEntries.end(), - [](auto first, auto second) { return second.timeStamp > first.timeStamp; }, + [](auto first, auto second) { return first.timeStamp > second.timeStamp; }, [](auto first, auto second) { return first.sourceId < second.sourceId; }); } diff --git a/src/libs/clangsupport/set_algorithm.h b/src/libs/clangsupport/set_algorithm.h index 39bd3a2055b..dae2b019335 100644 --- a/src/libs/clangsupport/set_algorithm.h +++ b/src/libs/clangsupport/set_algorithm.h @@ -89,13 +89,13 @@ bool set_intersection_compare( ++first1; } else { if (!comp(*first2, *first1)) { - if (call(*first2, *first1++)) - return false; + if (call(*first1++, *first2)) + return true; } ++first2; } } - return true; + return false; } } // namespace ClangBackEnd diff --git a/tests/unit/unittest/modifiedtimechecker-test.cpp b/tests/unit/unittest/modifiedtimechecker-test.cpp index 0e18228ac3c..a2e97ccadac 100644 --- a/tests/unit/unittest/modifiedtimechecker-test.cpp +++ b/tests/unit/unittest/modifiedtimechecker-test.cpp @@ -50,13 +50,17 @@ protected: NiceMock mockFileSystem; ClangBackEnd::ModifiedTimeChecker<> checker{mockFileSystem}; - SourceEntries upToDateEntries = {{1, SourceType::UserInclude, 100}, + SourceEntries upToDateEntries = {{1, SourceType::UserInclude, 51}, {2, SourceType::SystemInclude, 30}, - {3, SourceType::UserInclude, 100}, - {4, SourceType::SystemInclude, 30}}; + {3, SourceType::UserInclude, 50}, + {4, SourceType::SystemInclude, 31}}; + SourceEntries equalEntries = {{1, SourceType::UserInclude, 50}, + {2, SourceType::SystemInclude, 30}, + {3, SourceType::UserInclude, 50}, + {4, SourceType::SystemInclude, 30}}; SourceEntries notUpToDateEntries = {{1, SourceType::UserInclude, 50}, - {2, SourceType::SystemInclude, 20}, - {3, SourceType::UserInclude, 100}, + {2, SourceType::SystemInclude, 29}, + {3, SourceType::UserInclude, 50}, {4, SourceType::SystemInclude, 30}}; }; @@ -67,6 +71,13 @@ TEST_F(ModifiedTimeChecker, IsUpToDate) ASSERT_TRUE(isUpToDate); } +TEST_F(ModifiedTimeChecker, EqualEntriesAreUpToDate) +{ + auto isUpToDate = checker.isUpToDate(equalEntries); + + ASSERT_TRUE(isUpToDate); +} + TEST_F(ModifiedTimeChecker, IsUpToDateSecondRun) { checker.isUpToDate(upToDateEntries);