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:
William S Fulton 2018-01-15 08:09:14 +00:00
commit 532999f4f2
3 changed files with 31 additions and 8 deletions

View file

@ -1,5 +1,7 @@
%module xxx
/* Note: needs -Wextra to see these warnings */
/* Divide by zero */
#define ZERO 0
#if 1%ZERO
@ -11,3 +13,14 @@
#endif
#if 2/(55-55)
#endif
/* Floating point */
#if 1.2
#endif
#if 2e3
#endif
#if 0
#elif 8.8
#endif

View file

@ -1,8 +1,14 @@
pp_expressions_bad.i:5: 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: Could not evaluate expression '2/ZERO'
pp_expressions_bad.i:7: 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:10: 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:12: Warning 202: Error: 'Division by zero in expression'
pp_expressions_bad.i:7: Warning 202: Could not evaluate expression '1%ZERO'
pp_expressions_bad.i:7: Warning 202: Error: 'Modulo by zero in expression'
pp_expressions_bad.i:9: Warning 202: Could not evaluate expression '2/ZERO'
pp_expressions_bad.i:9: Warning 202: Error: 'Division by zero in expression'
pp_expressions_bad.i:12: Warning 202: Could not evaluate expression '1%(5-5)'
pp_expressions_bad.i:12: Warning 202: Error: 'Modulo by zero in expression'
pp_expressions_bad.i:14: Warning 202: Could not evaluate expression '2/(55-55)'
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'

View file

@ -319,6 +319,10 @@ int Preprocessor_expr(DOH *s, int *error) {
stack[sp].value = 0;
stack[sp].svalue = 0;
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
goto syntax_error;
break;