gdb:
PR gdb/1136: * macroexp.c (get_punctuator) <punctuators>: Rearrange to put longer tokens first. gdb/testsuite: * gdb.base/macscp.exp: Add test for macro lexing bug.
This commit is contained in:
parent
d27eff1ca4
commit
ccb3ac8a12
@ -1,3 +1,9 @@
|
|||||||
|
2008-07-26 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
|
PR gdb/1136:
|
||||||
|
* macroexp.c (get_punctuator) <punctuators>: Rearrange to put
|
||||||
|
longer tokens first.
|
||||||
|
|
||||||
2008-07-26 Vladimir Prus <vladimir@codesourcery.com>
|
2008-07-26 Vladimir Prus <vladimir@codesourcery.com>
|
||||||
|
|
||||||
Kill cmd_async_ok.
|
Kill cmd_async_ok.
|
||||||
|
@ -416,16 +416,27 @@ get_punctuator (struct macro_buffer *tok, char *p, char *end)
|
|||||||
{
|
{
|
||||||
/* Here, speed is much less important than correctness and clarity. */
|
/* Here, speed is much less important than correctness and clarity. */
|
||||||
|
|
||||||
/* ISO/IEC 9899:1999 (E) Section 6.4.6 Paragraph 1 */
|
/* ISO/IEC 9899:1999 (E) Section 6.4.6 Paragraph 1.
|
||||||
|
Note that this table is ordered in a special way. A punctuator
|
||||||
|
which is a prefix of another punctuator must appear after its
|
||||||
|
"extension". Otherwise, the wrong token will be returned. */
|
||||||
static const char * const punctuators[] = {
|
static const char * const punctuators[] = {
|
||||||
"[", "]", "(", ")", "{", "}", ".", "->",
|
"[", "]", "(", ")", "{", "}", "?", ";", ",", "~",
|
||||||
"++", "--", "&", "*", "+", "-", "~", "!",
|
"...", ".",
|
||||||
"/", "%", "<<", ">>", "<", ">", "<=", ">=", "==", "!=",
|
"->", "--", "-=", "-",
|
||||||
"^", "|", "&&", "||",
|
"++", "+=", "+",
|
||||||
"?", ":", ";", "...",
|
"*=", "*",
|
||||||
"=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", "&=", "^=", "|=",
|
"!=", "!",
|
||||||
",", "#", "##",
|
"&&", "&=", "&",
|
||||||
"<:", ":>", "<%", "%>", "%:", "%:%:",
|
"/=", "/",
|
||||||
|
"%>", "%:%:", "%:", "%=", "%",
|
||||||
|
"^=", "^",
|
||||||
|
"##", "#",
|
||||||
|
":>", ":",
|
||||||
|
"||", "|=", "|",
|
||||||
|
"<<=", "<<", "<=", "<:", "<%", "<",
|
||||||
|
">>=", ">>", ">=", ">",
|
||||||
|
"==", "=",
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2008-07-26 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
|
* gdb.base/macscp.exp: Add test for macro lexing bug.
|
||||||
|
|
||||||
2008-07-18 Tom Tromey <tromey@redhat.com>
|
2008-07-18 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* gdb.base/macscp.exp: Add macro tests.
|
* gdb.base/macscp.exp: Add macro tests.
|
||||||
|
@ -472,3 +472,8 @@ gdb_test "macro undef M" \
|
|||||||
gdb_test "print M" \
|
gdb_test "print M" \
|
||||||
"No symbol \"M\" in current context\." \
|
"No symbol \"M\" in current context\." \
|
||||||
"print expression with macro after user undef."
|
"print expression with macro after user undef."
|
||||||
|
|
||||||
|
# Regression test; this used to emit the wrong error.
|
||||||
|
gdb_test "macro expand SPLICE(x, y)" \
|
||||||
|
"Token splicing is not implemented yet." \
|
||||||
|
"macro splicing lexes correctly"
|
||||||
|
Loading…
Reference in New Issue
Block a user