You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mesos.apache.org by "Gavin (JIRA)" <ji...@apache.org> on 2019/04/29 09:28:09 UTC

[jira] [Issue Comment Deleted] (MESOS-9030) mock_slave.cpp fails to build with GCC 8.

     [ https://issues.apache.org/jira/browse/MESOS-9030?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gavin updated MESOS-9030:
-------------------------
    Comment: was deleted

(was: www.rtat.net)

> mock_slave.cpp fails to build with GCC 8.
> -----------------------------------------
>
>                 Key: MESOS-9030
>                 URL: https://issues.apache.org/jira/browse/MESOS-9030
>             Project: Mesos
>          Issue Type: Task
>          Components: build, test
>            Reporter: James Peach
>            Priority: Major
>
> {noformat}
> In file included from ../../include/mesos/authentication/secret_generator.hpp:22,
>                  from ../../src/tests/mock_slave.cpp:19:
> ../../3rdparty/libprocess/include/process/future.hpp: In instantiation of ‘process::Future<T>::Future(const U&) [with U = testing::Matcher<const std::tuple<const process::Future<Nothing>&>&>; T = Nothing]’:
> /usr/include/c++/8/type_traits:932:12:   required from ‘struct std::is_constructible<const process::Future<Nothing>&, testing::Matcher<const std::tuple<const process::Future<Nothing>&>&>&&>’
> /usr/include/c++/8/type_traits:138:12:   required from ‘struct std::__and_<std::is_constructible<const process::Future<Nothing>&, testing::Matcher<const std::tuple<const process::Future<Nothing>&>&>&&> >’
> /usr/include/c++/8/tuple:485:68:   required from ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_MoveConstructibleTuple() [with _UElements = {testing::Matcher<const std::tuple<const process::Future<Nothing>&>&>}; bool <anonymous> = true; _Elements = {const process::Future<Nothing>&}]’
> /usr/include/c++/8/tuple:641:59:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<((std::_TC<((1 == sizeof... (_UElements)) && std::_TC<(sizeof... (_UElements) == 1), const process::Future<Nothing>&>::_NotSameTuple<_UElements ...>()), const process::Future<Nothing>&>::_MoveConstructibleTuple<_UElements ...>() && std::_TC<((1 == sizeof... (_UElements)) && std::_TC<(sizeof... (_UElements) == 1), const process::Future<Nothing>&>::_NotSameTuple<_UElements ...>()), const process::Future<Nothing>&>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (1 >= 1)), bool>::type <anonymous> > constexpr std::tuple<const process::Future<Nothing>&>::tuple(_UElements&& ...) [with _UElements = {testing::Matcher<const std::tuple<const process::Future<Nothing>&>&>}; typename std::enable_if<((std::_TC<((1 == sizeof... (_UElements)) && std::_TC<(sizeof... (_UElements) == 1), const process::Future<Nothing>&>::_NotSameTuple<_UElements ...>()), const process::Future<Nothing>&>::_MoveConstructibleTuple<_UElements ...>() && std::_TC<((1 == sizeof... (_UElements)) && std::_TC<(sizeof... (_UElements) == 1), const process::Future<Nothing>&>::_NotSameTuple<_UElements ...>()), const process::Future<Nothing>&>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (1 >= 1)), bool>::type <anonymous> = 1]’
> ../3rdparty/googletest-release-1.8.0/googlemock/include/gmock/gmock-spec-builders.h:894:37:   required from ‘testing::internal::TypedExpectation<F>::TypedExpectation(testing::internal::FunctionMockerBase<F>*, const char*, int, const string&, const ArgumentMatcherTuple&) [with F = void(const process::Future<Nothing>&); testing::internal::string = std::__cxx11::basic_string<char>; testing::internal::TypedExpectation<F>::ArgumentMatcherTuple = std::tuple<testing::Matcher<const process::Future<Nothing>&> >]’
> ../3rdparty/googletest-release-1.8.0/googlemock/include/gmock/gmock-spec-builders.h:1609:9:   required from ‘testing::internal::TypedExpectation<F>& testing::internal::FunctionMockerBase<F>::AddNewExpectation(const char*, int, const string&, const ArgumentMatcherTuple&) [with F = void(const process::Future<Nothing>&); testing::internal::string = std::__cxx11::basic_string<char>; testing::internal::FunctionMockerBase<F>::ArgumentMatcherTuple = std::tuple<testing::Matcher<const process::Future<Nothing>&> >]’
> ../3rdparty/googletest-release-1.8.0/googlemock/include/gmock/gmock-spec-builders.h:1273:43:   required from ‘testing::internal::TypedExpectation<F>& testing::internal::MockSpec<F>::InternalExpectedAt(const char*, int, const char*, const char*) [with F = void(const process::Future<Nothing>&)]’
> ../../src/tests/mock_slave.cpp:139:3:   required from here
> ../../3rdparty/libprocess/include/process/future.hpp:1092:3: error: no matching function for call to ‘process::Future<Nothing>::set(const testing::Matcher<const std::tuple<const process::Future<Nothing>&>&>&)’
>    set(u);
>    ^~~
> ../../3rdparty/libprocess/include/process/future.hpp:1761:6: note: candidate: ‘bool process::Future<T>::set(const T&) [with T = Nothing]’
>  bool Future<T>::set(const T& t)
>       ^~~~~~~~~
> ../../3rdparty/libprocess/include/process/future.hpp:1761:6: note:   no known conversion for argument 1 from ‘const testing::Matcher<const std::tuple<const process::Future<Nothing>&>&>’ to ‘const Nothing&’
> ../../3rdparty/libprocess/include/process/future.hpp:1754:6: note: candidate: ‘bool process::Future<T>::set(T&&) [with T = Nothing]’
>  bool Future<T>::set(T&& t)
>       ^~~~~~~~~
> ../../3rdparty/libprocess/include/process/future.hpp:1754:6: note:   no known conversion for argument 1 from ‘const testing::Matcher<const std::tuple<const process::Future<Nothing>&>&>’ to ‘Nothing&&’
> ../../3rdparty/libprocess/include/process/future.hpp: In instantiation of ‘process::Future<T>::Future(const U&) [with U = const testing::MatcherInterface<const std::tuple<const process::Future<Nothing>&>&>*; T = Nothing]’:
> /usr/include/c++/8/type_traits:932:12:   required from ‘struct std::is_constructible<const process::Future<Nothing>&, const testing::MatcherInterface<const std::tuple<const process::Future<Nothing>&>&>*&>’
> /usr/include/c++/8/type_traits:138:12:   required from ‘struct std::__and_<std::is_constructible<const process::Future<Nothing>&, const testing::MatcherInterface<const std::tuple<const process::Future<Nothing>&>&>*&> >’
> /usr/include/c++/8/tuple:485:68:   required from ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_MoveConstructibleTuple() [with _UElements = {const testing::MatcherInterface<const std::tuple<const process::Future<Nothing>&>&>*&}; bool <anonymous> = true; _Elements = {const process::Future<Nothing>&}]’
> /usr/include/c++/8/tuple:641:59:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<((std::_TC<((1 == sizeof... (_UElements)) && std::_TC<(sizeof... (_UElements) == 1), const process::Future<Nothing>&>::_NotSameTuple<_UElements ...>()), const process::Future<Nothing>&>::_MoveConstructibleTuple<_UElements ...>() && std::_TC<((1 == sizeof... (_UElements)) && std::_TC<(sizeof... (_UElements) == 1), const process::Future<Nothing>&>::_NotSameTuple<_UElements ...>()), const process::Future<Nothing>&>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (1 >= 1)), bool>::type <anonymous> > constexpr std::tuple<const process::Future<Nothing>&>::tuple(_UElements&& ...) [with _UElements = {const testing::MatcherInterface<const std::tuple<const process::Future<Nothing>&>&>*&}; typename std::enable_if<((std::_TC<((1 == sizeof... (_UElements)) && std::_TC<(sizeof... (_UElements) == 1), const process::Future<Nothing>&>::_NotSameTuple<_UElements ...>()), const process::Future<Nothing>&>::_MoveConstructibleTuple<_UElements ...>() && std::_TC<((1 == sizeof... (_UElements)) && std::_TC<(sizeof... (_UElements) == 1), const process::Future<Nothing>&>::_NotSameTuple<_UElements ...>()), const process::Future<Nothing>&>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (1 >= 1)), bool>::type <anonymous> = 1]’
> ../3rdparty/googletest-release-1.8.0/googlemock/include/gmock/gmock-matchers.h:485:10:   required from ‘testing::Matcher<A1> testing::MakeMatcher(const testing::MatcherInterface<T>*) [with T = const std::tuple<const process::Future<Nothing>&>&]’
> ../3rdparty/googletest-release-1.8.0/googlemock/include/gmock/gmock-matchers.h:3732:43:   required from ‘testing::Matcher<A1> testing::A() [with T = const std::tuple<const process::Future<Nothing>&>&]’
> ../3rdparty/googletest-release-1.8.0/googlemock/include/gmock/gmock-spec-builders.h:893:47:   required from ‘testing::internal::TypedExpectation<F>::TypedExpectation(testing::internal::FunctionMockerBase<F>*, const char*, int, const string&, const ArgumentMatcherTuple&) [with F = void(const process::Future<Nothing>&); testing::internal::string = std::__cxx11::basic_string<char>; testing::internal::TypedExpectation<F>::ArgumentMatcherTuple = std::tuple<testing::Matcher<const process::Future<Nothing>&> >]’
> ../3rdparty/googletest-release-1.8.0/googlemock/include/gmock/gmock-spec-builders.h:1609:9:   required from ‘testing::internal::TypedExpectation<F>& testing::internal::FunctionMockerBase<F>::AddNewExpectation(const char*, int, const string&, const ArgumentMatcherTuple&) [with F = void(const process::Future<Nothing>&); testing::internal::string = std::__cxx11::basic_string<char>; testing::internal::FunctionMockerBase<F>::ArgumentMatcherTuple = std::tuple<testing::Matcher<const process::Future<Nothing>&> >]’
> ../3rdparty/googletest-release-1.8.0/googlemock/include/gmock/gmock-spec-builders.h:1273:43:   required from ‘testing::internal::TypedExpectation<F>& testing::internal::MockSpec<F>::InternalExpectedAt(const char*, int, const char*, const char*) [with F = void(const process::Future<Nothing>&)]’
> ../../src/tests/mock_slave.cpp:139:3:   required from here
> ../../3rdparty/libprocess/include/process/future.hpp:1092:3: error: no matching function for call to ‘process::Future<Nothing>::set(const testing::MatcherInterface<const std::tuple<const process::Future<Nothing>&>&>* const&)’
>    set(u);
>    ^~~
> ../../3rdparty/libprocess/include/process/future.hpp:1761:6: note: candidate: ‘bool process::Future<T>::set(const T&) [with T = Nothing]’
>  bool Future<T>::set(const T& t)
>       ^~~~~~~~~
> ../../3rdparty/libprocess/include/process/future.hpp:1761:6: note:   no known conversion for argument 1 from ‘const testing::MatcherInterface<const std::tuple<const process::Future<Nothing>&>&>* const’ to ‘const Nothing&’
> ../../3rdparty/libprocess/include/process/future.hpp:1754:6: note: candidate: ‘bool process::Future<T>::set(T&&) [with T = Nothing]’
>  bool Future<T>::set(T&& t)
>       ^~~~~~~~~
> ../../3rdparty/libprocess/include/process/future.hpp:1754:6: note:   no known conversion for argument 1 from ‘const testing::MatcherInterface<const std::tuple<const process::Future<Nothing>&>&>* const’ to ‘Nothing&&’
> {noformat}
> The call the GCC 8 can't resolve is
> {code}
> 139   EXPECT_CALL(*this, __recover(_))
> 140     .WillRepeatedly(Invoke(this, &MockSlave::unmocked___recover));
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)