mirror of
https://github.com/cc65/cc65.git
synced 2025-01-14 16:33:00 +00:00
Fixed false "Non constant initializers" error messages on wrong places, which could be resulted from failed array declarations etc.
This commit is contained in:
parent
2564aaa12c
commit
94dfc08c0e
@ -4305,8 +4305,13 @@ ExprDesc NoCodeConstExpr (void (*Func) (ExprDesc*))
|
|||||||
if (!ED_IsConst (&Expr) || !ED_CodeRangeIsEmpty (&Expr)) {
|
if (!ED_IsConst (&Expr) || !ED_CodeRangeIsEmpty (&Expr)) {
|
||||||
Error ("Constant expression expected");
|
Error ("Constant expression expected");
|
||||||
/* To avoid any compiler errors, make the expression a valid const */
|
/* To avoid any compiler errors, make the expression a valid const */
|
||||||
Expr.Flags &= E_MASK_RTYPE | E_MASK_KEEP_RESULT;
|
Expr.Flags &= E_MASK_RTYPE | E_MASK_KEEP_MAKE;
|
||||||
Expr.Flags |= E_LOC_NONE;
|
Expr.Flags |= E_LOC_NONE;
|
||||||
|
|
||||||
|
/* Remove any non-constant code generated */
|
||||||
|
if (!ED_CodeRangeIsEmpty (&Expr)) {
|
||||||
|
RemoveCodeRange (&Expr.Start, &Expr.End);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return by value */
|
/* Return by value */
|
||||||
@ -4331,6 +4336,11 @@ ExprDesc NoCodeConstAbsIntExpr (void (*Func) (ExprDesc*))
|
|||||||
Error ("Constant integer expression expected");
|
Error ("Constant integer expression expected");
|
||||||
/* To avoid any compiler errors, make the expression a valid const */
|
/* To avoid any compiler errors, make the expression a valid const */
|
||||||
ED_MakeConstAbsInt (&Expr, 1);
|
ED_MakeConstAbsInt (&Expr, 1);
|
||||||
|
|
||||||
|
/* Remove any non-constant code generated */
|
||||||
|
if (!ED_CodeRangeIsEmpty (&Expr)) {
|
||||||
|
RemoveCodeRange (&Expr.Start, &Expr.End);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return by value */
|
/* Return by value */
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
typedef short return_t;
|
typedef short return_t;
|
||||||
#error /* produce an error */
|
#error This is an/* produce an error */error
|
||||||
|
|
||||||
return_t main(int argc, char* argv[])
|
return_t main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
@ -22,3 +22,6 @@ return_t main(int argc, char* argv[])
|
|||||||
n = 0; /* produce an error */
|
n = 0; /* produce an error */
|
||||||
/* produce a warning */
|
/* produce a warning */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int arr[main(0, 0)]; /* produce an error */
|
||||||
|
int b = 0;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
custom-reference-error.c:17: Error: #error
|
custom-reference-error.c:17: Error: #error: This is an error
|
||||||
custom-reference-error.c:21: Error: Call to undeclared function 'printf'
|
custom-reference-error.c:21: Error: Call to undeclared function 'printf'
|
||||||
custom-reference-error.c:22: Error: Undeclared identifier 'n'
|
custom-reference-error.c:22: Error: Undeclared identifier 'n'
|
||||||
custom-reference-error.c:24: Warning: Control reaches end of non-void function [-Wreturn-type]
|
custom-reference-error.c:24: Warning: Control reaches end of non-void function [-Wreturn-type]
|
||||||
custom-reference-error.c:24: Warning: Parameter 'argc' is never used
|
custom-reference-error.c:24: Warning: Parameter 'argc' is never used
|
||||||
custom-reference-error.c:24: Warning: Parameter 'argv' is never used
|
custom-reference-error.c:24: Warning: Parameter 'argv' is never used
|
||||||
|
custom-reference-error.c:26: Error: Constant integer expression expected
|
||||||
|
Loading…
x
Reference in New Issue
Block a user