(parse_union_decl): Define YYSTYPE_IS_TRIVIAL if we use our YYSTYPE.

It must be trivial, or our own union wouldn't be valid C++ anyway.
(readgram): Define YYSTYPE_IS_TRIVIAL if it is int.
(reader_output_yylsp): Define YYLTYPE_IS_TRIVIAL if we use our YYLTYPE.
This commit is contained in:
Paul Eggert
2002-03-18 21:53:05 +00:00
parent 8afe2396ab
commit a6624adaee

View File

@@ -745,6 +745,7 @@ typedef union";
const char *epilogue = "\ const char *epilogue = "\
yystype;\n\ yystype;\n\
# define YYSTYPE yystype\n\ # define YYSTYPE yystype\n\
# define YYSTYPE_IS_TRIVIAL 1\n\
#endif\n"; #endif\n";
if (typed) if (typed)
@@ -1617,12 +1618,16 @@ readgram (void)
/* We used to use `unsigned long' as YYSTYPE on MSDOS, /* We used to use `unsigned long' as YYSTYPE on MSDOS,
but it seems better to be consistent. but it seems better to be consistent.
Most programs should declare their own type anyway. */ Most programs should declare their own type anyway. */
obstack_sgrow (&attrs_obstack, obstack_sgrow (&attrs_obstack, "\
"#ifndef YYSTYPE\n#define YYSTYPE int\n#endif\n"); #ifndef YYSTYPE\n\
# define YYSTYPE int\n\
# define YYSTYPE_IS_TRIVIAL 1\n\
#endif\n");
if (defines_flag) if (defines_flag)
obstack_sgrow (&defines_obstack, "\ obstack_sgrow (&defines_obstack, "\
# ifndef YYSTYPE\n\ # ifndef YYSTYPE\n\
# define YYSTYPE int\n\ # define YYSTYPE int\n\
# define YYSTYPE_IS_TRIVIAL 1\n\
# endif\n"); # endif\n");
} }
@@ -2043,6 +2048,7 @@ typedef struct yyltype\n\
} yyltype;\n\ } yyltype;\n\
\n\ \n\
# define YYLTYPE yyltype\n\ # define YYLTYPE yyltype\n\
# define YYLTYPE_IS_TRIVIAL 1\n\
#endif\n\ #endif\n\
\n"); \n");
} }