X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/c1d19e10c32844d17122b473840752003521d21b..c373bf8bb8da68ed12b1e73aaa2d777f6c701e46:/tests/input.at diff --git a/tests/input.at b/tests/input.at index d21ca41d..883b2011 100644 --- a/tests/input.at +++ b/tests/input.at @@ -2,20 +2,18 @@ # Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, # Inc. -# This program is free software; you can redistribute it and/or modify +# This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. - +# # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program. If not, see . AT_BANNER([[Input Processing.]]) @@ -811,7 +809,9 @@ start: ; AT_CHECK([[bison input.y]], [0], [], [[input.y:2.9-11: warning: %define variable `var' redefined +input.y:1.9-11: warning: previous definition input.y:3.10-12: warning: %define variable `var' redefined +input.y:2.9-11: warning: previous definition input.y:1.9-11: warning: %define variable `var' is not used input.y:2.9-11: warning: %define variable `var' is not used input.y:3.10-12: warning: %define variable `var' is not used @@ -822,10 +822,10 @@ input.y:5.9-16: warning: %define variable `special2' is not used AT_CLEANUP ## --------------------------- ## -## Boolean %define variables. ## +## %define Boolean variables. ## ## --------------------------- ## -AT_SETUP([Boolean %define variables]) +AT_SETUP([[%define Boolean variables]]) AT_DATA([Input.y], [[%language "Java" @@ -836,7 +836,74 @@ start: ; ]]) AT_CHECK([[bison Input.y]], [1], [], -[[Input.y: invalid value for %define variable `public' +[[Input.y:2.9-14: invalid value for %define Boolean variable `public' +]]) + +AT_CLEANUP + +## ------------------------ ## +## %define enum variables. ## +## ------------------------ ## + +AT_SETUP([[%define enum variables]]) + +AT_DATA([[input.y]], +[[%define api.push_pull "neither" +%% +start: ; ]]) +AT_CHECK([[bison input.y]], [1], [], +[[input.y:1.9-21: invalid value for %define variable `api.push_pull': `neither' +]]) + +AT_CLEANUP + +## -------------------------------- ## +## C++ namespace reference errors. ## +## -------------------------------- ## + +AT_SETUP([[C++ namespace reference errors]]) + +# AT_CHECK_NAMESPACE_ERROR(NAMESPACE-DECL, ERROR, [ERROR], ...) +# ------------------------------------------------------------- +# Make sure Bison reports all ERROR's for %define namespace "NAMESPACE-DECL". +m4_define([AT_CHECK_NAMESPACE_ERROR], +[ +AT_DATA([[input.y]], +[[%language "C++" +%defines +%define namespace "]$1[" +%% +start: ; +]]) + +AT_CHECK([[bison input.y]], [1], [], +[m4_foreach([b4_arg], m4_dquote(m4_shift($@)), +[[input.y:3.9-17: ]b4_arg[ +]])]) +]) + +AT_CHECK_NAMESPACE_ERROR([[]], + [[namespace reference is empty]]) +AT_CHECK_NAMESPACE_ERROR([[ ]], + [[namespace reference is empty]]) +AT_CHECK_NAMESPACE_ERROR([[foo::::bar]], + [[namespace reference has consecutive "::"]]) +AT_CHECK_NAMESPACE_ERROR([[foo:: ::bar]], + [[namespace reference has consecutive "::"]]) +AT_CHECK_NAMESPACE_ERROR([[::::bar]], + [[namespace reference has consecutive "::"]]) +AT_CHECK_NAMESPACE_ERROR([[:: ::bar]], + [[namespace reference has consecutive "::"]]) +AT_CHECK_NAMESPACE_ERROR([[foo::bar:: ::]], + [[namespace reference has consecutive "::"]], + [[namespace reference has a trailing "::"]]) +AT_CHECK_NAMESPACE_ERROR([[foo::bar::]], + [[namespace reference has a trailing "::"]]) +AT_CHECK_NAMESPACE_ERROR([[foo::bar:: ]], + [[namespace reference has a trailing "::"]]) +AT_CHECK_NAMESPACE_ERROR([[::]], + [[namespace reference has a trailing "::"]]) + AT_CLEANUP