// { dg-do run } // Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 21 Nov 1999 // make sure __FUNCTION__ and __PRETTY_FUNCTION__ work in member functions #include #include static bool bad = false; struct X { X (); ~X (); void fn (); operator int (); }; X::X () { char const *function = __FUNCTION__; char const *pretty = __PRETTY_FUNCTION__; printf ("ctor\n"); printf ("__FUNCTION__ %s\n", function); printf ("__PRETTY_FUNCTION__ %s\n", pretty); if (strcmp (function, "X")) bad = true; if (strcmp (pretty, "X::X()")) bad = true; } X::~X () { char const *function = __FUNCTION__; char const *pretty = __PRETTY_FUNCTION__; printf ("dtor\n"); printf ("__FUNCTION__ %s\n", function); printf ("__PRETTY_FUNCTION__ %s\n", pretty); if (strcmp (function, "~X")) bad = true; if (strcmp (pretty, "X::~X()")) bad = true; } void X::fn () { char const *function = __FUNCTION__; char const *pretty = __PRETTY_FUNCTION__; printf ("member fn\n"); printf ("__FUNCTION__ %s\n", function); printf ("__PRETTY_FUNCTION__ %s\n", pretty); if (strcmp (function, "fn")) bad = true; if (strcmp (pretty, "void X::fn()")) bad = true; } X::operator int () { char const *function = __FUNCTION__; char const *pretty = __PRETTY_FUNCTION__; printf ("conversion\n"); printf ("__FUNCTION__ %s\n", function); printf ("__PRETTY_FUNCTION__ %s\n", pretty); if (strcmp (pretty, "X::operator int()")) bad = true; return 0; } int main () { { X x; x.fn (); (void)int (x); } return bad; }