Improve error message when preprocessor expressions result in a floating point constant
Instead of a syntax error, the error is now: Warning 202: Error: 'Floating point constant in preprocessor expression'
This commit is contained in:
parent
ea5b55ecf4
commit
532999f4f2
3 changed files with 31 additions and 8 deletions
|
|
@ -1,5 +1,7 @@
|
||||||
%module xxx
|
%module xxx
|
||||||
|
/* Note: needs -Wextra to see these warnings */
|
||||||
|
|
||||||
|
/* Divide by zero */
|
||||||
#define ZERO 0
|
#define ZERO 0
|
||||||
|
|
||||||
#if 1%ZERO
|
#if 1%ZERO
|
||||||
|
|
@ -11,3 +13,14 @@
|
||||||
#endif
|
#endif
|
||||||
#if 2/(55-55)
|
#if 2/(55-55)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Floating point */
|
||||||
|
#if 1.2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 2e3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#elif 8.8
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,14 @@
|
||||||
pp_expressions_bad.i:5: Warning 202: Could not evaluate expression '1%ZERO'
|
pp_expressions_bad.i:7: Warning 202: Could not evaluate expression '1%ZERO'
|
||||||
pp_expressions_bad.i:5: Warning 202: Error: 'Modulo by zero in expression'
|
pp_expressions_bad.i:7: Warning 202: Error: 'Modulo by zero in expression'
|
||||||
pp_expressions_bad.i:7: Warning 202: Could not evaluate expression '2/ZERO'
|
pp_expressions_bad.i:9: Warning 202: Could not evaluate expression '2/ZERO'
|
||||||
pp_expressions_bad.i:7: Warning 202: Error: 'Division by zero in expression'
|
pp_expressions_bad.i:9: Warning 202: Error: 'Division by zero in expression'
|
||||||
pp_expressions_bad.i:10: Warning 202: Could not evaluate expression '1%(5-5)'
|
pp_expressions_bad.i:12: Warning 202: Could not evaluate expression '1%(5-5)'
|
||||||
pp_expressions_bad.i:10: Warning 202: Error: 'Modulo by zero in expression'
|
pp_expressions_bad.i:12: Warning 202: Error: 'Modulo by zero in expression'
|
||||||
pp_expressions_bad.i:12: Warning 202: Could not evaluate expression '2/(55-55)'
|
pp_expressions_bad.i:14: Warning 202: Could not evaluate expression '2/(55-55)'
|
||||||
pp_expressions_bad.i:12: Warning 202: Error: 'Division by zero in expression'
|
pp_expressions_bad.i:14: Warning 202: Error: 'Division by zero in expression'
|
||||||
|
pp_expressions_bad.i:18: Warning 202: Could not evaluate expression '1.2'
|
||||||
|
pp_expressions_bad.i:18: Warning 202: Error: 'Floating point constant in preprocessor expression'
|
||||||
|
pp_expressions_bad.i:21: Warning 202: Could not evaluate expression '2e3'
|
||||||
|
pp_expressions_bad.i:21: Warning 202: Error: 'Floating point constant in preprocessor expression'
|
||||||
|
pp_expressions_bad.i:25: Warning 202: Could not evaluate expression '8.8'
|
||||||
|
pp_expressions_bad.i:25: Warning 202: Error: 'Floating point constant in preprocessor expression'
|
||||||
|
|
|
||||||
|
|
@ -319,6 +319,10 @@ int Preprocessor_expr(DOH *s, int *error) {
|
||||||
stack[sp].value = 0;
|
stack[sp].value = 0;
|
||||||
stack[sp].svalue = 0;
|
stack[sp].svalue = 0;
|
||||||
stack[sp].op = EXPR_VALUE;
|
stack[sp].op = EXPR_VALUE;
|
||||||
|
} else if ((token == SWIG_TOKEN_FLOAT) || (token == SWIG_TOKEN_DOUBLE)) {
|
||||||
|
errmsg = "Floating point constant in preprocessor expression";
|
||||||
|
*error = 1;
|
||||||
|
return 0;
|
||||||
} else
|
} else
|
||||||
goto syntax_error;
|
goto syntax_error;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue