From c2ba260487927a4cdf061fae10fdd1b387ca3d95 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Wed, 11 Aug 2021 17:41:27 +0200 Subject: [PATCH] glr.c: fix signature when using custom error messages Reported by Tom Shields . * data/skeletons/glr.c (yypcontext_location): Fix return type. * tests/calc.at: Check the case pure, location, custom error messages. --- TODO | 2 ++ data/skeletons/glr.c | 4 ++-- tests/calc.at | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index d9277255..de240dda 100644 --- a/TODO +++ b/TODO @@ -185,6 +185,8 @@ Line -1 and -3 should mention CATEGORIE, not CATEGORY. * Bison 3.8 ** Rewrite glr.cc (currently glr2.cc) +*** custom error messages + *** Remove jumps We can probably replace setjmp/longjmp with exceptions. That would help tremendously other languages such as D and Java that probably have no diff --git a/data/skeletons/glr.c b/data/skeletons/glr.c index 117c996b..fab3733f 100644 --- a/data/skeletons/glr.c +++ b/data/skeletons/glr.c @@ -2174,10 +2174,10 @@ yypcontext_token (const yyGLRStack *yystackp) } ]b4_locations_if([[/* The location of the lookahead of this context. */ -static YYLTYPE * +static const YYLTYPE * yypcontext_location (const yyGLRStack *yystackp) YY_ATTRIBUTE_UNUSED; -static YYLTYPE * +static const YYLTYPE * yypcontext_location (const yyGLRStack *yystackp) { YY_USE (yystackp); diff --git a/tests/calc.at b/tests/calc.at index cd4b50a1..47ef720c 100644 --- a/tests/calc.at +++ b/tests/calc.at @@ -1469,6 +1469,8 @@ AT_CHECK_CALC_GLR_CC([%debug]) AT_CHECK_CALC_GLR_CC([%define parse.error verbose %debug %name-prefix "calc" %verbose]) AT_CHECK_CALC_GLR_CC([%define parse.error verbose %debug %name-prefix "calc" %define api.token.prefix {TOK_} %verbose]) +AT_CHECK_CALC_GLR_CC([%define parse.error custom %locations %header %name-prefix "calc" %verbose]) + AT_CHECK_CALC_GLR_CC([%locations %header %define parse.error verbose %debug %name-prefix "calc" %verbose %parse-param {semantic_value *result}{int *count}{int *nerrs}]) AT_CHECK_CALC_GLR_CC([%locations %header %define parse.error verbose %debug %define api.prefix {calc} %verbose %parse-param {semantic_value *result}{int *count}{int *nerrs}])