# Bison Regressions. -*- Autotest -*- # Copyright 2001 Free Software Foundation, Inc. # 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. # 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., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AT_BANNER([[Regression tests.]]) ## ------------------ ## ## Duplicate string. ## ## ------------------ ## AT_SETUP([Duplicate string]) AT_DATA([duplicate.y], [[/* `Bison -v' used to dump core when two tokens are defined with the same string, as LE and GE below. */ %token NUM %token LE "<=" %token GE "<=" %% exp: '(' exp ')' | NUM ; %% ]]) AT_CHECK([bison -v duplicate.y -o duplicate.c], 0, ignore, ignore) AT_CLEANUP([duplicate.*]) ## ---------------------- ## ## %union and --defines. ## ## ---------------------- ## AT_SETUP([%union and --defines]) AT_DATA([union.y], [%union { int integer; char *string ; } %% exp: {}; ]) AT_CHECK([bison --defines union.y]) AT_CLEANUP([union.*]) ## --------------------------------------- ## ## Duplicate '/' in C comments in %union ## ## --------------------------------------- ## AT_SETUP([%union and C comments]) AT_DATA([union-comment.y], [%union { /* The int. */ int integer; /* The string. */ char *string ; } %% exp: {}; ]) AT_CHECK([bison union-comment.y]) AT_CHECK([fgrep '//*' union-comment.tab.c], [1], []) AT_CLEANUP([union-comment.*]) ## --------------- ## ## invalid input. ## ## --------------- ## AT_SETUP([Invalid input]) AT_DATA([input.y], [[%% ? ]]) AT_CHECK([bison input.y], [1], [], [input.y:2: invalid input: `?' input.y:3: fatal error: no rules in the input grammar ]) AT_CLEANUP ## --------------------- ## ## Invalid CPP headers. ## ## --------------------- ## AT_SETUP([Invalid CPP headers]) mkdir input AT_DATA([input/input.y], [%% dummy: ]) AT_CHECK([bison --defines input/input.y]) AT_CHECK([sed 1q input/input.tab.h], 0, [[#ifndef INPUT_INPUT_TAB_H ]]) AT_CLEANUP(input)