mirror of
https://github.com/cc65/cc65.git
synced 2025-02-26 07:29:25 +00:00
Make the warning "statement has no effect" switchable.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4823 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
d1f5b74f01
commit
e048d2aeba
@ -471,6 +471,8 @@ Here is a description of all the command line options:
|
|||||||
<descrip>
|
<descrip>
|
||||||
<tag><tt/error/</tag>
|
<tag><tt/error/</tag>
|
||||||
Treat all warnings as errors.
|
Treat all warnings as errors.
|
||||||
|
<tag><tt/no-effect/</tag>
|
||||||
|
Warn about statements that don't have an effect.
|
||||||
<tag><tt/unknown-pragma/</tag>
|
<tag><tt/unknown-pragma/</tag>
|
||||||
Warn about known #pragmas.
|
Warn about known #pragmas.
|
||||||
<tag><tt/unused-label/</tag>
|
<tag><tt/unused-label/</tag>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* (C) 1998-2009, Ullrich von Bassewitz */
|
/* (C) 1998-2010, Ullrich von Bassewitz */
|
||||||
/* Roemerstrasse 52 */
|
/* Roemerstrasse 52 */
|
||||||
/* D-70794 Filderstadt */
|
/* D-70794 Filderstadt */
|
||||||
/* EMail: uz@cc65.org */
|
/* EMail: uz@cc65.org */
|
||||||
@ -63,11 +63,13 @@ unsigned WarningCount = 0;
|
|||||||
/* Warning and error options */
|
/* Warning and error options */
|
||||||
IntStack WarnEnable = INTSTACK(1); /* Enable warnings */
|
IntStack WarnEnable = INTSTACK(1); /* Enable warnings */
|
||||||
IntStack WarningsAreErrors = INTSTACK(0); /* Treat warnings as errors */
|
IntStack WarningsAreErrors = INTSTACK(0); /* Treat warnings as errors */
|
||||||
IntStack WarnStructParam = INTSTACK(1); /* Warn about structs passed by val */
|
/* Warn about: */
|
||||||
IntStack WarnUnusedLabel = INTSTACK(1); /* Warn about unused labels */
|
IntStack WarnNoEffect = INTSTACK(1); /* ... statements without an effect */
|
||||||
IntStack WarnUnusedParam = INTSTACK(1); /* Warn about unused parameters */
|
IntStack WarnStructParam = INTSTACK(1); /* ... structs passed by val */
|
||||||
IntStack WarnUnusedVar = INTSTACK(1); /* Warn about unused variables */
|
IntStack WarnUnusedLabel = INTSTACK(1); /* ... unused labels */
|
||||||
IntStack WarnUnknownPragma = INTSTACK(1); /* Warn about unknown #pragmas */
|
IntStack WarnUnusedParam = INTSTACK(1); /* ... unused parameters */
|
||||||
|
IntStack WarnUnusedVar = INTSTACK(1); /* ... unused variables */
|
||||||
|
IntStack WarnUnknownPragma = INTSTACK(1); /* ... unknown #pragmas */
|
||||||
|
|
||||||
/* Map the name of a warning to the intstack that holds its state */
|
/* Map the name of a warning to the intstack that holds its state */
|
||||||
typedef struct WarnMapEntry WarnMapEntry;
|
typedef struct WarnMapEntry WarnMapEntry;
|
||||||
@ -78,6 +80,7 @@ struct WarnMapEntry {
|
|||||||
static WarnMapEntry WarnMap[] = {
|
static WarnMapEntry WarnMap[] = {
|
||||||
/* Keep sorted, even if this isn't used for now */
|
/* Keep sorted, even if this isn't used for now */
|
||||||
{ &WarningsAreErrors, "error" },
|
{ &WarningsAreErrors, "error" },
|
||||||
|
{ &WarnNoEffect, "no-effect" },
|
||||||
{ &WarnStructParam, "struct-param" },
|
{ &WarnStructParam, "struct-param" },
|
||||||
{ &WarnUnknownPragma, "unknown-pragma" },
|
{ &WarnUnknownPragma, "unknown-pragma" },
|
||||||
{ &WarnUnusedLabel, "unused-label" },
|
{ &WarnUnusedLabel, "unused-label" },
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* (C) 1998-2009, Ullrich von Bassewitz */
|
/* (C) 1998-2010, Ullrich von Bassewitz */
|
||||||
/* Roemerstrasse 52 */
|
/* Roemerstrasse 52 */
|
||||||
/* D-70794 Filderstadt */
|
/* D-70794 Filderstadt */
|
||||||
/* EMail: uz@cc65.org */
|
/* EMail: uz@cc65.org */
|
||||||
@ -60,11 +60,13 @@ extern unsigned WarningCount;
|
|||||||
/* Warning and error options */
|
/* Warning and error options */
|
||||||
extern IntStack WarnEnable; /* Enable warnings */
|
extern IntStack WarnEnable; /* Enable warnings */
|
||||||
extern IntStack WarningsAreErrors; /* Treat warnings as errors */
|
extern IntStack WarningsAreErrors; /* Treat warnings as errors */
|
||||||
extern IntStack WarnStructParam; /* Warn about structs passed by val */
|
/* Warn about: */
|
||||||
extern IntStack WarnUnusedLabel; /* Warn about unused labels */
|
extern IntStack WarnNoEffect; /* ... statements without an effect */
|
||||||
extern IntStack WarnUnusedParam; /* Warn about unused parameters */
|
extern IntStack WarnStructParam; /* ... structs passed by val */
|
||||||
extern IntStack WarnUnusedVar; /* Warn about unused variables */
|
extern IntStack WarnUnusedLabel; /* ... unused labels */
|
||||||
extern IntStack WarnUnknownPragma; /* Warn about unknown #pragmas */
|
extern IntStack WarnUnusedParam; /* ... unused parameters */
|
||||||
|
extern IntStack WarnUnusedVar; /* ... unused variables */
|
||||||
|
extern IntStack WarnUnknownPragma; /* ... unknown #pragmas */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -238,7 +238,7 @@ static IntStack* GetWarning (StrBuf* B)
|
|||||||
|
|
||||||
/* Done */
|
/* Done */
|
||||||
return S;
|
return S;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -490,7 +490,7 @@ static void WarnPragma (StrBuf* B)
|
|||||||
int Push;
|
int Push;
|
||||||
|
|
||||||
/* A warning name must follow */
|
/* A warning name must follow */
|
||||||
IntStack* S =GetWarning (B);
|
IntStack* S = GetWarning (B);
|
||||||
if (S == 0) {
|
if (S == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* (C) 1998-2009, Ullrich von Bassewitz */
|
/* (C) 1998-2010, Ullrich von Bassewitz */
|
||||||
/* Roemerstrasse 52 */
|
/* Roemerstrasse 52 */
|
||||||
/* D-70794 Filderstadt */
|
/* D-70794 Filderstadt */
|
||||||
/* EMail: uz@cc65.org */
|
/* EMail: uz@cc65.org */
|
||||||
@ -653,7 +653,9 @@ int Statement (int* PendingToken)
|
|||||||
* void, emit a warning.
|
* void, emit a warning.
|
||||||
*/
|
*/
|
||||||
GetCodePos (&End);
|
GetCodePos (&End);
|
||||||
if (CodeRangeIsEmpty (&Start, &End) && !IsTypeVoid (Expr.Type)) {
|
if (CodeRangeIsEmpty (&Start, &End) &&
|
||||||
|
!IsTypeVoid (Expr.Type) &&
|
||||||
|
IS_Get (&WarnNoEffect)) {
|
||||||
Warning ("Statement has no effect");
|
Warning ("Statement has no effect");
|
||||||
}
|
}
|
||||||
CheckSemi (PendingToken);
|
CheckSemi (PendingToken);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user