On Tue, Mar 3, 2009 at 3:55 PM, Scott Hess <sh...@chromium.org> wrote: > > On the Mac, code like this: > > namespace { > class MyTest : public testing::Test { > }; > } // namespace > > TEST_F(MyTest, ATest) { > } > > generates errors like this: > warning: ‘MyTest_ATest_Test’ has a field > ‘MyTest_ATest_Test::<anonymous>’ whose type uses the anonymous > namespace > warning: ‘MyTest_ATest_Test’ has a base ‘<unnamed>::MyTest’ whose type > uses the anonymous namespace > > Removing the namespace fixes it, which is poor because we seem to want > to move towards more anonymous namespace use. Putting the test case > inside the namespace also fixes it, but is incompatible with > FRIEND_TEST(). This seems to be a gcc 4.2 addition, per: > http://gcc.gnu.org/gcc-4.2/changes.html > > "Members of the anonymous namespace are now local to a particular > translation unit, along with any other declarations which use them, > though they are still treated as having external linkage for language > semantics." > > At this point, I'm sort of at the bleeding edge of my knowledge. For > FRIEND_TEST() cases, it seems like the anonymous namespace needs to > go, but elsewhere it can be changed to enclose the entire file. Does > that seem reasonable for now?
In this case the solution is easy. Erase the class MyTest definition and use TEST instead of TEST_F. Brett --~--~---------~--~----~------------~-------~--~----~ Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~----------~----~----~----~------~----~------~--~---