|
View:
New views
2 Messages
—
Rating Filter:
Alert me
|
|
|
[PATCH] pick up symbols in enumerator-list more correctlyCurrently, all symbols in enumerator-list are picked up as definition.
This patch makes symbols in expression be picked up as "reference or other symbol". diffstat: libparser/C.c | 142 ++++++++++++++++++++++++++++++++------------------------ libparser/Cpp.c | 141 +++++++++++++++++++++++++++++++------------------------ 2 files changed, 163 insertions(+), 120 deletions(-) === example === $ cat -n a.c 1 #define FRUIT_BASE (1 << 16) 2 enum { APPLE = FRUIT_BASE }; 3 typedef enum { APPLE = FRUIT_BASE } FOOD; 4 #define ENUM_BASE(x) ((x) << 16) 5 enum { FRUIT = 1 }; 6 enum { APPLE = ENUM_BASE(FRUIT) }; 7 typedef enum { APPLE = ENUM_BASE(FRUIT) } FOOD; 8 #define ENUM_BASE2(d, x) ((x) << 16) 9 enum { APPLE = ENUM_BASE2(0, FRUIT) }; 10 typedef enum { APPLE = ENUM_BASE2(0, FRUIT) } FOOD; [ current CVS version ] $ global -f a.c FRUIT_BASE 1 a.c #define FRUIT_BASE (1 << 16) APPLE 2 a.c enum { APPLE = FRUIT_BASE }; FRUIT_BASE 2 a.c enum { APPLE = FRUIT_BASE }; APPLE 3 a.c typedef enum { APPLE = FRUIT_BASE } FOOD; FRUIT_BASE 3 a.c typedef enum { APPLE = FRUIT_BASE } FOOD; FOOD 3 a.c typedef enum { APPLE = FRUIT_BASE } FOOD; ENUM_BASE 4 a.c #define ENUM_BASE(x) ((x) << 16) FRUIT 5 a.c enum { FRUIT = 1 }; APPLE 6 a.c enum { APPLE = ENUM_BASE(FRUIT) }; ENUM_BASE 6 a.c enum { APPLE = ENUM_BASE(FRUIT) }; FRUIT 6 a.c enum { APPLE = ENUM_BASE(FRUIT) }; APPLE 7 a.c typedef enum { APPLE = ENUM_BASE(FRUIT) } FOOD; ENUM_BASE 7 a.c typedef enum { APPLE = ENUM_BASE(FRUIT) } FOOD; FRUIT 7 a.c typedef enum { APPLE = ENUM_BASE(FRUIT) } FOOD; FOOD 7 a.c typedef enum { APPLE = ENUM_BASE(FRUIT) } FOOD; ENUM_BASE2 8 a.c #define ENUM_BASE2(d, x) ((x) << 16) APPLE 9 a.c enum { APPLE = ENUM_BASE2(0, FRUIT) }; ENUM_BASE2 9 a.c enum { APPLE = ENUM_BASE2(0, FRUIT) }; FRUIT 9 a.c enum { APPLE = ENUM_BASE2(0, FRUIT) }; APPLE 10 a.c typedef enum { APPLE = ENUM_BASE2(0, FRUIT) } FOOD; ENUM_BASE2 10 a.c typedef enum { APPLE = ENUM_BASE2(0, FRUIT) } FOOD; FRUIT 10 a.c typedef enum { APPLE = ENUM_BASE2(0, FRUIT) } FOOD; FOOD 10 a.c typedef enum { APPLE = ENUM_BASE2(0, FRUIT) } FOOD; $ global -frs a.c x 4 a.c #define ENUM_BASE(x) ((x) << 16) x 4 a.c #define ENUM_BASE(x) ((x) << 16) d 8 a.c #define ENUM_BASE2(d, x) ((x) << 16) x 8 a.c #define ENUM_BASE2(d, x) ((x) << 16) x 8 a.c #define ENUM_BASE2(d, x) ((x) << 16) [ patched version ] $ global -f a.c FRUIT_BASE 1 a.c #define FRUIT_BASE (1 << 16) APPLE 2 a.c enum { APPLE = FRUIT_BASE }; APPLE 3 a.c typedef enum { APPLE = FRUIT_BASE } FOOD; FOOD 3 a.c typedef enum { APPLE = FRUIT_BASE } FOOD; ENUM_BASE 4 a.c #define ENUM_BASE(x) ((x) << 16) FRUIT 5 a.c enum { FRUIT = 1 }; APPLE 6 a.c enum { APPLE = ENUM_BASE(FRUIT) }; APPLE 7 a.c typedef enum { APPLE = ENUM_BASE(FRUIT) } FOOD; FOOD 7 a.c typedef enum { APPLE = ENUM_BASE(FRUIT) } FOOD; ENUM_BASE2 8 a.c #define ENUM_BASE2(d, x) ((x) << 16) APPLE 9 a.c enum { APPLE = ENUM_BASE2(0, FRUIT) }; APPLE 10 a.c typedef enum { APPLE = ENUM_BASE2(0, FRUIT) } FOOD; FOOD 10 a.c typedef enum { APPLE = ENUM_BASE2(0, FRUIT) } FOOD; $ global -frs a.c FRUIT_BASE 2 a.c enum { APPLE = FRUIT_BASE }; FRUIT_BASE 3 a.c typedef enum { APPLE = FRUIT_BASE } FOOD; x 4 a.c #define ENUM_BASE(x) ((x) << 16) x 4 a.c #define ENUM_BASE(x) ((x) << 16) ENUM_BASE 6 a.c enum { APPLE = ENUM_BASE(FRUIT) }; FRUIT 6 a.c enum { APPLE = ENUM_BASE(FRUIT) }; ENUM_BASE 7 a.c typedef enum { APPLE = ENUM_BASE(FRUIT) } FOOD; FRUIT 7 a.c typedef enum { APPLE = ENUM_BASE(FRUIT) } FOOD; d 8 a.c #define ENUM_BASE2(d, x) ((x) << 16) x 8 a.c #define ENUM_BASE2(d, x) ((x) << 16) x 8 a.c #define ENUM_BASE2(d, x) ((x) << 16) ENUM_BASE2 9 a.c enum { APPLE = ENUM_BASE2(0, FRUIT) }; FRUIT 9 a.c enum { APPLE = ENUM_BASE2(0, FRUIT) }; ENUM_BASE2 10 a.c typedef enum { APPLE = ENUM_BASE2(0, FRUIT) } FOOD; FRUIT 10 a.c typedef enum { APPLE = ENUM_BASE2(0, FRUIT) } FOOD; -- Hideki IWAMOTO <h-iwamoto@...> _______________________________________________ Bug-global mailing list Bug-global@... https://lists.gnu.org/mailman/listinfo/bug-global |
|
|
Re: [PATCH] pick up symbols in enumerator-list more correctlyHello,
> Currently, all symbols in enumerator-list are picked up as definition. > This patch makes symbols in expression be picked up as "reference or > other symbol". Great! It should be so. -- Shigio YAMAGUCHI <shigio@...> PGP fingerprint: D1CB 0B89 B346 4AB6 5663 C4B6 3CA5 BBB3 57BE DDA3 _______________________________________________ Bug-global mailing list Bug-global@... https://lists.gnu.org/mailman/listinfo/bug-global |
| Free embeddable forum powered by Nabble | Forum Help |