java: prefer errors to fatal errors

Fatal errors are inconvenient, and should be reserved to cases where
we cannot continue.  Here, it could even be warnings actually: these
directives will simply be ignored.

* data/skeletons/lalr1.java: Prefer error (b4_complain) to fatal
errors (b4_fatal).
* tests/java.at (Java invalid directives): New.
This commit is contained in:
Akim Demaille
2019-04-01 08:33:29 +02:00
parent 0b42cf8a36
commit 507c679b9b
2 changed files with 24 additions and 2 deletions

View File

@@ -17,7 +17,7 @@
m4_include(b4_skeletonsdir/[java.m4])
b4_defines_if([b4_fatal([%s: %%defines does not make sense in Java],
b4_defines_if([b4_complain([%s: %%defines does not make sense in Java],
[b4_skeleton])])
# We do not depend on %debug in Java, but pacify warnings about
@@ -26,7 +26,7 @@ b4_parse_trace_if([0], [0])
m4_define([b4_symbol_no_destructor_assert],
[b4_symbol_if([$1], [has_destructor],
[b4_fatal([%s: %s: %%destructor does not make sense in Java],
[b4_complain([%s: %s: %%destructor does not make sense in Java],
[b4_skeleton],
[b4_symbol_action_location([$1], [destructor])])])])
b4_symbol_foreach([b4_symbol_no_destructor_assert])

View File

@@ -18,6 +18,28 @@
AT_BANNER([[Java Calculator.]])
# ------------------------- #
# Java invalid directives. #
# ------------------------- #
AT_SETUP([Java invalid directives])
AT_DATA([[YYParser.y]], [
%language "Java"
%defines
%destructor { /* Nothing. */ } exp
%%
exp:
])
AT_BISON_CHECK([[-fcaret YYParser.y]], [1], [],
[[YYParser.y: error: "lalr1.java": %defines does not make sense in Java
YYParser.y: error: "lalr1.java": "YYParser.y":/* :4 */: %destructor does not make sense in Java
]])
AT_CLEANUP
# ------------------------- #
# Helping Autotest macros. #
# ------------------------- #