mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-19 17:23:02 +00:00
* tests/regression.at (AT_TEST_CPP_GUARD_H): New.
Check that `9foo.y' produces correct cpp guards. * src/files.c (compute_header_macro): Prepend `BISON_' to CPP guards. Reported by Wwp.
This commit is contained in:
@@ -1,3 +1,11 @@
|
|||||||
|
2001-11-01 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* tests/regression.at (AT_TEST_CPP_GUARD_H): New.
|
||||||
|
Check that `9foo.y' produces correct cpp guards.
|
||||||
|
* src/files.c (compute_header_macro): Prepend `BISON_' to CPP
|
||||||
|
guards.
|
||||||
|
Reported by Wwp.
|
||||||
|
|
||||||
2001-11-01 Akim Demaille <akim@epita.fr>
|
2001-11-01 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* tests/regression.at (Invalid input: 2): New.
|
* tests/regression.at (Invalid input: 2): New.
|
||||||
|
|||||||
26
src/files.c
26
src/files.c
@@ -86,26 +86,36 @@ stringappend (const char *string1, const char *string2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------.
|
/*-----------------------------------------------------------------.
|
||||||
| Computes the macro name used to avoid double inclusion in the |
|
| Computes the macro name used to avoid double inclusion in the |
|
||||||
| header of the parser and store it in header_macro_name. |
|
| header of the parser and store it in header_macro_name. Be sure |
|
||||||
`---------------------------------------------------------------*/
|
| to produce valid CPP names (don't start with digit, remain |
|
||||||
|
| alphanumerical + underscore). |
|
||||||
|
`-----------------------------------------------------------------*/
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
compute_header_macro (void)
|
compute_header_macro (void)
|
||||||
{
|
{
|
||||||
|
const char *prefix = "BISON_";
|
||||||
char *macro_name, *cp;
|
char *macro_name, *cp;
|
||||||
|
|
||||||
if (spec_defines_file)
|
if (spec_defines_file)
|
||||||
macro_name = xstrdup (spec_defines_file);
|
{
|
||||||
|
macro_name = XMALLOC (char,
|
||||||
|
strlen (prefix) +
|
||||||
|
strlen (spec_defines_file) + 1);
|
||||||
|
cp = stpcpy (macro_name, prefix);
|
||||||
|
cp = stpcpy (cp, spec_defines_file);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
macro_name = XMALLOC (char,
|
macro_name = XMALLOC (char,
|
||||||
|
strlen (prefix) +
|
||||||
strlen (base_name) +
|
strlen (base_name) +
|
||||||
strlen (header_extension) + 1);
|
strlen (header_extension) + 1);
|
||||||
|
cp = stpcpy (macro_name, prefix);
|
||||||
stpcpy (macro_name, base_name);
|
cp = stpcpy (cp, base_name);
|
||||||
strcat (macro_name, header_extension);
|
cp = stpcpy (cp, header_extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (cp = macro_name; *cp; ++cp)
|
for (cp = macro_name; *cp; ++cp)
|
||||||
|
|||||||
@@ -148,23 +148,34 @@ AT_CHECK([bison input.y], [1], [],
|
|||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## --------------------- ##
|
## --------------------- ##
|
||||||
## Invalid CPP headers. ##
|
## Invalid CPP headers. ##
|
||||||
## --------------------- ##
|
## --------------------- ##
|
||||||
|
|
||||||
AT_SETUP([Invalid CPP headers])
|
# AT_TEST_CPP_GUARD_H([INPUT-FILE-BASE)
|
||||||
|
# -------------------------------------
|
||||||
|
m4_define([AT_TEST_CPP_GUARD_H],
|
||||||
|
[AT_SETUP([Invalid CPP guards: $1])
|
||||||
|
|
||||||
mkdir input
|
# possibly create and nuke inner directories.
|
||||||
|
m4_bmatch([$1], [[/]],
|
||||||
|
[dirname=`AS_DIRNAME([$1])`
|
||||||
|
AS_MKDIR_P([$dirname])
|
||||||
|
AT_CLEANUP_FILES([$dirname])])
|
||||||
|
|
||||||
AT_DATA([input/input.y],
|
AT_DATA([$1.y],
|
||||||
[%%
|
[%%
|
||||||
dummy:
|
dummy:
|
||||||
])
|
])
|
||||||
|
|
||||||
AT_CHECK([bison --defines input/input.y])
|
AT_CHECK([bison --defines=$1.h $1.y])
|
||||||
|
|
||||||
AT_CHECK([sed 1q input/input.tab.h], 0,
|
# CPP should be happy with it.
|
||||||
[[#ifndef INPUT_INPUT_TAB_H
|
AT_CHECK([$CC -E $1.h], 0, [ignore])
|
||||||
]])
|
|
||||||
|
|
||||||
AT_CLEANUP(input)
|
AT_CLEANUP($1.y)
|
||||||
|
])
|
||||||
|
|
||||||
|
AT_TEST_CPP_GUARD_H([input/input])
|
||||||
|
AT_TEST_CPP_GUARD_H([9foo])
|
||||||
|
|||||||
Reference in New Issue
Block a user