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
-~----------~----~----~----~------~----~------~--~---

Reply via email to