On Mon, 2016-08-29 at 23:53 +0200, Bernd Schmidt wrote: > On 08/25/2016 03:13 AM, David Malcolm wrote: > > Split out a new base class for temp_source_file, named_temp_file, > > moving the deletion to the base class dtor, so that we can write > > out temporary files in other ways in selftests. > > > > gcc/ChangeLog: > > * selftest.c (selftest::named_temp_file::named_temp_file): New > > ctor. > > (selftest::temp_source_file::~temp_source_file): Move to... > > (selftest::named_temp_file::~named_temp_file): ...here. > > (selftest::test_named_temp_file): New function. > > (selftest::selftest_c_tests): Call test_named_temp_file. > > * selftest.h (class named_temp_file): New class. > > (class temp_source_file): Convert to a subclass of > > named_temp_file. > > Ok. > > > +selftest::named_temp_file::named_temp_file (const char *suffix) > > Any reason these aren't inside namespace selftest to shorten these > declarations?
I was being consistent with the rest of the file, but I no longer remember why I used explicit namespace selftest:: prefixes there. The following follow-up patch removes them, moving the "namespace selftest {" to the top of the file so it covers everything. Successfully bootstrapped®rtested on x86_64-pc-linux-gnu. OK for trunk? gcc/ChangeLog: * selftest.c: Move "namespace selftest {" to top of file, removing explicit "selftest::" qualifiers throughout. --- gcc/selftest.c | 78 +++++++++++++++++++++++++++------------------------------- 1 file changed, 36 insertions(+), 42 deletions(-) diff --git a/gcc/selftest.c b/gcc/selftest.c index e6c9510..69d9931 100644 --- a/gcc/selftest.c +++ b/gcc/selftest.c @@ -24,12 +24,14 @@ along with GCC; see the file COPYING3. If not see #if CHECKING_P -int selftest::num_passes; +namespace selftest { + +int num_passes; /* Record the successful outcome of some aspect of a test. */ void -selftest::pass (const location &/*loc*/, const char */*msg*/) +pass (const location &/*loc*/, const char */*msg*/) { num_passes++; } @@ -37,7 +39,7 @@ selftest::pass (const location &/*loc*/, const char */*msg*/) /* Report the failed outcome of some aspect of a test and abort. */ void -selftest::fail (const location &loc, const char *msg) +fail (const location &loc, const char *msg) { fprintf (stderr,"%s:%i: %s: FAIL: %s\n", loc.m_file, loc.m_line, loc.m_function, msg); @@ -47,7 +49,7 @@ selftest::fail (const location &loc, const char *msg) /* As "fail", but using printf-style formatted output. */ void -selftest::fail_formatted (const location &loc, const char *fmt, ...) +fail_formatted (const location &loc, const char *fmt, ...) { va_list ap; @@ -65,26 +67,23 @@ selftest::fail_formatted (const location &loc, const char *fmt, ...) to be non-NULL; fail gracefully if either are NULL. */ void -selftest::assert_streq (const location &loc, - const char *desc_expected, const char *desc_actual, - const char *val_expected, const char *val_actual) +assert_streq (const location &loc, + const char *desc_expected, const char *desc_actual, + const char *val_expected, const char *val_actual) { /* If val_expected is NULL, the test is buggy. Fail gracefully. */ if (val_expected == NULL) - ::selftest::fail_formatted - (loc, "ASSERT_STREQ (%s, %s) expected=NULL", - desc_expected, desc_actual); + fail_formatted (loc, "ASSERT_STREQ (%s, %s) expected=NULL", + desc_expected, desc_actual); /* If val_actual is NULL, fail with a custom error message. */ if (val_actual == NULL) - ::selftest::fail_formatted - (loc, "ASSERT_STREQ (%s, %s) expected=\"%s\" actual=NULL", - desc_expected, desc_actual, val_expected); + fail_formatted (loc, "ASSERT_STREQ (%s, %s) expected=\"%s\" actual=NULL", + desc_expected, desc_actual, val_expected); if (0 == strcmp (val_expected, val_actual)) - ::selftest::pass (loc, "ASSERT_STREQ"); + pass (loc, "ASSERT_STREQ"); else - ::selftest::fail_formatted - (loc, "ASSERT_STREQ (%s, %s) expected=\"%s\" actual=\"%s\"", - desc_expected, desc_actual, val_expected, val_actual); + fail_formatted (loc, "ASSERT_STREQ (%s, %s) expected=\"%s\" actual=\"%s\"", + desc_expected, desc_actual, val_expected, val_actual); } /* Implementation detail of ASSERT_STR_CONTAINS. @@ -93,36 +92,35 @@ selftest::assert_streq (const location &loc, ::selftest::fail if it is not found. */ void -selftest::assert_str_contains (const location &loc, - const char *desc_haystack, - const char *desc_needle, - const char *val_haystack, - const char *val_needle) +assert_str_contains (const location &loc, + const char *desc_haystack, + const char *desc_needle, + const char *val_haystack, + const char *val_needle) { /* If val_haystack is NULL, fail with a custom error message. */ if (val_haystack == NULL) - ::selftest::fail_formatted - (loc, "ASSERT_STR_CONTAINS (%s, %s) haystack=NULL", - desc_haystack, desc_needle); + fail_formatted (loc, "ASSERT_STR_CONTAINS (%s, %s) haystack=NULL", + desc_haystack, desc_needle); /* If val_needle is NULL, fail with a custom error message. */ if (val_needle == NULL) - ::selftest::fail_formatted - (loc, "ASSERT_STR_CONTAINS (%s, %s) haystack=\"%s\" needle=NULL", - desc_haystack, desc_needle, val_haystack); + fail_formatted (loc, + "ASSERT_STR_CONTAINS (%s, %s) haystack=\"%s\" needle=NULL", + desc_haystack, desc_needle, val_haystack); const char *test = strstr (val_haystack, val_needle); if (test) - ::selftest::pass (loc, "ASSERT_STR_CONTAINS"); + pass (loc, "ASSERT_STR_CONTAINS"); else - ::selftest::fail_formatted + fail_formatted (loc, "ASSERT_STR_CONTAINS (%s, %s) haystack=\"%s\" needle=\"%s\"", desc_haystack, desc_needle, val_haystack, val_needle); } /* Constructor. Generate a name for the file. */ -selftest::named_temp_file::named_temp_file (const char *suffix) +named_temp_file::named_temp_file (const char *suffix) { m_filename = make_temp_file (suffix); ASSERT_NE (m_filename, NULL); @@ -130,7 +128,7 @@ selftest::named_temp_file::named_temp_file (const char *suffix) /* Destructor. Delete the tempfile. */ -selftest::named_temp_file::~named_temp_file () +named_temp_file::~named_temp_file () { unlink (m_filename); diagnostics_file_cache_forcibly_evict_file (m_filename); @@ -141,23 +139,20 @@ selftest::named_temp_file::~named_temp_file () it. Abort if anything goes wrong, using LOC as the effective location in the problem report. */ -selftest::temp_source_file::temp_source_file (const location &loc, - const char *suffix, - const char *content) +temp_source_file::temp_source_file (const location &loc, + const char *suffix, + const char *content) : named_temp_file (suffix) { FILE *out = fopen (get_filename (), "w"); if (!out) - ::selftest::fail_formatted (loc, "unable to open tempfile: %s", - get_filename ()); + fail_formatted (loc, "unable to open tempfile: %s", get_filename ()); fprintf (out, "%s", content); fclose (out); } /* Selftests for the selftest system itself. */ -namespace selftest { - /* Sanity-check the ASSERT_ macros with various passing cases. */ static void @@ -181,9 +176,8 @@ test_named_temp_file () named_temp_file t (".txt"); FILE *f = fopen (t.get_filename (), "w"); if (!f) - selftest::fail_formatted (SELFTEST_LOCATION, - "unable to open %s for writing", - t.get_filename ()); + fail_formatted (SELFTEST_LOCATION, + "unable to open %s for writing", t.get_filename ()); fclose (f); } -- 1.8.5.3