mirror of
https://github.com/cc65/cc65.git
synced 2025-01-26 02:30:17 +00:00
A label must always be followed by a statement. Check for this.
git-svn-id: svn://svn.cc65.org/cc65/trunk@3860 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
64ec376140
commit
357118697d
@ -71,6 +71,19 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void CheckLabelWithoutStatement (void)
|
||||||
|
/* Called from Statement() after a label definition. Will check for a
|
||||||
|
* following closing curly brace. This means that a label is not followed
|
||||||
|
* by a statement which is required by the standard. Output an error if so.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
if (CurTok.Tok == TOK_RCURLY) {
|
||||||
|
Error ("Label at end of compound statement");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void CheckTok (token_t Tok, const char* Msg, int* PendingToken)
|
static void CheckTok (token_t Tok, const char* Msg, int* PendingToken)
|
||||||
/* Helper function for Statement. Will check for Tok and print Msg if not
|
/* Helper function for Statement. Will check for Tok and print Msg if not
|
||||||
* found. If PendingToken is NULL, it will the skip the token, otherwise
|
* found. If PendingToken is NULL, it will the skip the token, otherwise
|
||||||
@ -534,6 +547,7 @@ int Statement (int* PendingToken)
|
|||||||
|
|
||||||
/* Special handling for a label */
|
/* Special handling for a label */
|
||||||
DoLabel ();
|
DoLabel ();
|
||||||
|
CheckLabelWithoutStatement ();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -595,10 +609,12 @@ int Statement (int* PendingToken)
|
|||||||
|
|
||||||
case TOK_CASE:
|
case TOK_CASE:
|
||||||
CaseLabel ();
|
CaseLabel ();
|
||||||
|
CheckLabelWithoutStatement ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TOK_DEFAULT:
|
case TOK_DEFAULT:
|
||||||
DefaultLabel ();
|
DefaultLabel ();
|
||||||
|
CheckLabelWithoutStatement ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user