| // { dg-do run } |
| // Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc. |
| // Contributed by Nathan Sidwell 21 Nov 1999 <nathan@acm.org> |
| |
| // make sure __FUNCTION__ and __PRETTY_FUNCTION__ work in member functions |
| |
| #include <stdio.h> |
| #include <string.h> |
| |
| 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; |
| } |