Skip to content

[Bug]: Master fails to build after recent breaking commits: gmock-actions.h: error: C++ requires a type specifier for all declarations etc. #4860

@barracuda156

Description

@barracuda156

Describe the issue

gtest fails to build from the current master and that breaks ports which use it via git fetch. Example: macports/macports-ports#29657

And locally:

[  7%] Building CXX object googletest-build/googlemock/CMakeFiles/gmock.dir/src/gmock-all.cc.o
cd /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-build/googlemock && /opt/local/bin/ccache /usr/bin/clang++  -I/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include -I/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock -isystem /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googletest/include -isystem /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googletest -pipe -Os -DNDEBUG -I/opt/local/include -I/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/parallel-hashmap-2.0.0 -stdlib=libc++ -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -std=c++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -mmacosx-version-min=10.15  -DGTEST_HAS_PTHREAD=1   -MD -MT googletest-build/googlemock/CMakeFiles/gmock.dir/src/gmock-all.cc.o -MF CMakeFiles/gmock.dir/src/gmock-all.cc.o.d -o CMakeFiles/gmock.dir/src/gmock-all.cc.o -c /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/src/gmock-all.cc
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/src/gmock-all.cc:39:
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock.h:56:
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-actions.h:1884:1: error: C++ requires a type specifier for all declarations
GTEST_INTERNAL_DEPRECATE_AND_INLINE("Avoid using DoAll() for single actions")
^
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-actions.h:1884:78: error: expected ';' at end of declaration
GTEST_INTERNAL_DEPRECATE_AND_INLINE("Avoid using DoAll() for single actions")
                                                                             ^
                                                                             ;
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-actions.h:1885:21: error: use of class template 'Action' requires template arguments
typename std::decay<Action>::type DoAll(Action&& action) {
                    ^
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-actions.h:724:7: note: template is declared here
class Action;
      ^
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-actions.h:1885:30: error: expected a qualified name after 'typename'
typename std::decay<Action>::type DoAll(Action&& action) {
                             ^
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-actions.h:1885:34: error: expected ';' after top level declarator
typename std::decay<Action>::type DoAll(Action&& action) {
                                 ^
                                 ;
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-actions.h:2056:1: error: C++ requires a type specifier for all declarations
GTEST_INTERNAL_DEPRECATE_AND_INLINE(
^
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-actions.h:2058:46: error: expected ';' at end of declaration
    "create wrapper objects using Invoke().")
                                             ^
                                             ;
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-actions.h:2059:21: error: use of undeclared identifier 'FunctionImpl'
typename std::decay<FunctionImpl>::type Invoke(FunctionImpl&& function_impl) {
                    ^
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-actions.h:2059:36: error: definition or redeclaration of 'type' cannot name the global scope
typename std::decay<FunctionImpl>::type Invoke(FunctionImpl&& function_impl) {
                                 ~~^
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-actions.h:2059:36: error: no member named 'type' in the global namespace
typename std::decay<FunctionImpl>::type Invoke(FunctionImpl&& function_impl) {
                                 ~~^
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-actions.h:2059:40: error: expected ';' after top level declarator
typename std::decay<FunctionImpl>::type Invoke(FunctionImpl&& function_impl) {
                                       ^
                                       ;
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/src/gmock-all.cc:39:
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock.h:58:
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-function-mocker.h:44:
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-spec-builders.h:78:
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-matchers.h:386:14: warning: use of function template name with no prior declaration in function call with explicit template arguments is a C++2a extension [-Wc++2a-extensions]
      return ImplicitCastEqMatcher<NoRefT, std::decay_t<const M&>>(value);
             ^
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/src/gmock-all.cc:39:
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock.h:58:
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-function-mocker.h:44:
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-spec-builders.h:1533:19: error: no member named 'unlock' in 'testing::internal::MutexBase'; did you mean 'Unlock'?
    g_gmock_mutex.unlock();
                  ^~~~~~
                  Unlock
/opt/local/include/gtest/internal/gtest-port.h:1696:8: note: 'Unlock' declared here
  void Unlock() {
       ^
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/src/gmock-all.cc:39:
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock.h:58:
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-function-mocker.h:44:
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/include/gmock/gmock-spec-builders.h:1541:19: error: no member named 'lock' in 'testing::internal::MutexBase'; did you mean 'Lock'?
    g_gmock_mutex.lock();
                  ^~~~
                  Lock
/opt/local/include/gtest/internal/gtest-port.h:1689:8: note: 'Lock' declared here
  void Lock() {
       ^
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/src/gmock-all.cc:45:
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/src/gmock-spec-builders.cc:439:17: error: no member named 'unlock' in 'testing::internal::MutexBase'; did you mean 'Unlock'?
  g_gmock_mutex.unlock();
                ^~~~~~
                Unlock
/opt/local/include/gtest/internal/gtest-port.h:1696:8: note: 'Unlock' declared here
  void Unlock() {
       ^
In file included from /opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/src/gmock-all.cc:45:
/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build/googletest-src/googlemock/src/gmock-spec-builders.cc:441:17: error: no member named 'lock' in 'testing::internal::MutexBase'; did you mean 'Lock'?
  g_gmock_mutex.lock();
                ^~~~
                Lock
/opt/local/include/gtest/internal/gtest-port.h:1689:8: note: 'Lock' declared here
  void Lock() {
       ^
1 warning and 15 errors generated.
make[2]: *** [googletest-build/googlemock/CMakeFiles/gmock.dir/src/gmock-all.cc.o] Error 1
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build'
make[1]: *** [googletest-build/googlemock/CMakeFiles/gmock.dir/all] Error 2
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build'
make: *** [all] Error 2
make: Leaving directory `/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build'
Command failed:  cd "/opt/local/var/macports/build/_opt_CatalinaPorts_devel_parallel-hashmap/parallel-hashmap/work/build" && /usr/bin/make -j8 -w all VERBOSE=ON 
Exit code: 2

Steps to reproduce the problem

Run the build

What version of GoogleTest are you using?

Master branch

What operating system and version are you using?

macOS 10.15.7

What compiler and version are you using?

% clang -v
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: x86_64-apple-darwin19.6.0
Thread model: posix

What build system are you using?

MacPorts

Additional context

The following commits have introduced the breakage, from what it looks:
a05c091
9df216c

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions