C/C++ parser cannot handle typedef of the form of typedef enum tag_name TYPEDEF_NAME; correctly. The attached patch corrects this bug.
diffstat:
libparser/C.c | 7 +++++--
libparser/Cpp.c | 7 +++++--
2 files changed, 10 insertions(+), 4 deletions(-)
=== example ===
$ cat -n b.c
1 typedef enum { X } BAR, *BAZ;
2 typedef enum foo { X } BAR, *BAZ;
3 typedef enum foo BAR, *BAZ;
[ version 6.2 and current CVS version ]
$ global -f b.c
X 1 b.c typedef enum { X } BAR, *BAZ;
BAR 1 b.c typedef enum { X } BAR, *BAZ;
BAZ 1 b.c typedef enum { X } BAR, *BAZ;
foo 2 b.c typedef enum foo { X } BAR, *BAZ;
X 2 b.c typedef enum foo { X } BAR, *BAZ;
BAR 2 b.c typedef enum foo { X } BAR, *BAZ;
BAZ 2 b.c typedef enum foo { X } BAR, *BAZ;
$ global -frs b.c
foo 3 b.c typedef enum foo BAR, *BAZ;
BAR 3 b.c typedef enum foo BAR, *BAZ;
BAZ 3 b.c typedef enum foo BAR, *BAZ;
[ patched version ]
$ global -f b.c
X 1 b.c typedef enum { X } BAR, *BAZ;
BAR 1 b.c typedef enum { X } BAR, *BAZ;
BAZ 1 b.c typedef enum { X } BAR, *BAZ;
foo 2 b.c typedef enum foo { X } BAR, *BAZ;
X 2 b.c typedef enum foo { X } BAR, *BAZ;
BAR 2 b.c typedef enum foo { X } BAR, *BAZ;
BAZ 2 b.c typedef enum foo { X } BAR, *BAZ;
BAR 3 b.c typedef enum foo BAR, *BAZ;
BAZ 3 b.c typedef enum foo BAR, *BAZ;
$ global -frs b.c
foo 3 b.c typedef enum foo BAR, *BAZ;
--
Hideki IWAMOTO <[email protected]>
20120217-enum_typedef.patch
Description: Binary data
_______________________________________________ Bug-global mailing list [email protected] https://lists.gnu.org/mailman/listinfo/bug-global
