Thread View: gnu.utils.bug
1 messages
1 total messages
Started by Greg Siebers
Thu, 13 Jul 1989 22:10
GNU-indent bugs (long)
Author: Greg Siebers
Date: Thu, 13 Jul 1989 22:10
Date: Thu, 13 Jul 1989 22:10
418 lines
15415 bytes
15415 bytes
I intended to send this only to Jim Kingdon, but I cannot reach him at
either kingdon@ai.mit.edu or kingdon@prep.ai.mit.edu. Sorry for its length.
I have done some simple comparisons between the new GNU-indent and Sun's version
of indent from SunOS 4.0.1, and I noticed a few places where Sun's version did a
better job. For example, for the Sun version I used the following ~/.indent.pro:
-bap -bacc -bad -bbb -bc -br -nbs -cdb -ce -cli0.5 -d0 -di16
-eei -nfc1 -i4 -nip -l100 -lp -npcs -npsl -sc -nsob -v
and the only changes for GNU-indent were: -cli4 instead of -cli0.5
-ip0 instead of -nip
*********************************************************************************
The sample input file was the following:
=======================================
static int Write(ch)
char ch;
{
extern int write ();
ch &= '\177';
if (write(1, &ch, 1) != 1)
fprintf (stderr, "Unbuffered write failed");
}
/*--------------------------------------------------------------------*/
void CharOut (c)
int c;
{
int m, n;
switch ((char) c) {
case ('\t'):
m = 1;
do {
m += TAB_WIDTH;
} while (m <= next_column);
if (m > screen_width) {
SoftNewLine();
} else {
for (n = m - next_column; n > 0; n--)
CharOut((int) ' ');
}
break;
}
}
*********************************************************************************
The output from Sun's version of indent was:
===========================================
static int Write(ch)
char ch;
{
extern int write();
ch &= '\177';
if (write(1, &ch, 1) != 1)
fprintf(stderr, "Unbuffered write failed");
}
/*--------------------------------------------------------------------*/
void CharOut(c)
int c;
{
int m,
n;
switch ((char) c) {
case ('\t'):
m = 1;
do {
m += TAB_WIDTH;
} while (m <= next_column);
if (m > screen_width) {
SoftNewLine();
} else {
for (n = m - next_column; n > 0; n--)
CharOut((int) ' ');
}
break;
}
}
*********************************************************************************
and the output from GNU-indent was:
==================================
static int Write(ch)
char ch;
{
extern int write();
ch &='\177';
if (write(1, &ch, 1) !=1)
fprintf(stderr, "Unbuffered write failed");
}
/*--------------------------------------------------------------------*/
void CharOut(c)
int c;
{
int m,
n;
switch ((char) c) {
case ('\t'):
m = 1;
do {
m += TAB_WIDTH;
} while (m <= next_column);
if (m > screen_width) {
SoftNewLine();
} else {
for (n = m - next_column; n > 0; n--)
CharOut((int) ' ');
}
break;
}
}
*********************************************************************************
Using "grep -n ch" to locate some critical lines:
================================================
test.SUN:3:char ch;
test.SUN:7: ch &= '\177';
test.SUN:8: if (write(1, &ch, 1) != 1)
test.GNU:3:char ch; NOTE: no indentation
test.GNU:7: ch &='\177'; NOTE: extra indent; no space after =
test.GNU:9: if (write(1, &ch, 1) !=1) NOTE: extra line 8; no space after =
*********************************************************************************
and using "grep while" yields:
=============================
test.SUN: } while (m <= next_column);
test.GNU: } while (m <= next_column); NOTE: extra indentation
*********************************************************************************
I also tried compiling GNU-indent on an Apollo running SR10.1, and I obtained
the following warning and error messages, most of which could be fixed by
running lint and taking note of comments regarding enumeration type clashes:
===========================================================================
parousia(0.73)> make
cc -O -A nansi -A cpu,3000 -A systype,bsd4.3 -A runtype,bsd4.3 -W0,-frnd,-comchk,-std -c indent.c
******** Line 266 of "indent.c": [Warning #159] Variable "last_token_ends_sp" was not
initialized before this use.
******** Line 1277 of "indent.c": [Warning #202] Value assigned to flushed_nl is never
used; assignment eliminated by optimizer.
cc -O -A nansi -A cpu,3000 -A systype,bsd4.3 -A runtype,bsd4.3 -W0,-frnd,-comchk,-std -c io.c
******** Line 244 of "io.c": [Warning #202] Value assigned to cur_col is never used;
assignment eliminated by optimizer.
cc -O -A nansi -A cpu,3000 -A systype,bsd4.3 -A runtype,bsd4.3 -W0,-frnd,-comchk,-std -c lexi.c
(0086) {0, 0}
******** Line 86 of "lexi.c": [Error #079] Illegal type of constant "0" for variable
"rwcode".
*** Exit 1
Stop.
parousia(0.74)> diff -c0 -t lexi.c.bak lexi.c
*** lexi.c.bak Tue Jul 4 21:46:41 1989
--- lexi.c Wed Jul 12 13:03:36 1989
***************
*** 86 ****
! {0, 0}
--- 86 ----
! {0, rw_break} NOTE: just a quick fix to allow it to compile
parousia(0.77)> make
cc -O -A nansi -A cpu,3000 -A systype,bsd4.3 -A runtype,bsd4.3 -W0,-frnd,-comchk,-std -c lexi.c
cc -O -A nansi -A cpu,3000 -A systype,bsd4.3 -A runtype,bsd4.3 -W0,-frnd,-comchk,-std -c parse.c
cc -O -A nansi -A cpu,3000 -A systype,bsd4.3 -A runtype,bsd4.3 -W0,-frnd,-comchk,-std -c pr_comment.c
******** Line 330 of "pr_comment.c": [Warning #202] Value assigned to now_col is never
used; assignment eliminated by optimizer.
******** Line 312 of "pr_comment.c": [Warning #202] Value assigned to now_col is never
used; assignment eliminated by optimizer.
cc -O -A nansi -A cpu,3000 -A systype,bsd4.3 -A runtype,bsd4.3 -W0,-frnd,-comchk,-std -c args.c
(0150) {"T", PRO_KEY, 0, 0, 0, &exp_T},
******** Line 150 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0159) {"bli", PRO_INT, 0, 0, &brace_indent, &exp_bli},
******** Line 159 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0164) {"cd", PRO_INT, 0, 0, &decl_com_ind, &exp_cd},
******** Line 164 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0166) {"ci", PRO_INT, 0, 0, &continuation_indent, &exp_ci},
******** Line 166 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0167) {"cli", PRO_INT, 0, 0, &case_indent, &exp_cli},
******** Line 167 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0168) {"cp", PRO_INT, 33, 0, &else_endif_col, &exp_cp},
******** Line 168 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0169) {"c", PRO_INT, 33, 0, &com_ind, &exp_c},
******** Line 169 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0170) {"di", PRO_INT, 16, 0, &decl_indent, &exp_di},
******** Line 170 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0172) {"d", PRO_INT, 0, 0, &unindent_displace, &exp_d},
******** Line 172 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0175) {"fbc", PRO_FONT, 0, 0, (int *) &blkcomf, &exp_fbc},
******** Line 175 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0176) {"fbx", PRO_FONT, 0, 0, (int *) &boxcomf, &exp_fbx},
******** Line 176 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0177) {"fb", PRO_FONT, 0, 0, (int *) &bodyf, &exp_fb},
******** Line 177 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0180) {"fc", PRO_FONT, 0, 0, (int *) &scomf, &exp_fc},
******** Line 180 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0181) {"fk", PRO_FONT, 0, 0, (int *) &keywordf, &exp_fk},
******** Line 181 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0182) {"fs", PRO_FONT, 0, 0, (int *) &stringf, &exp_fs},
******** Line 182 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0183) {"gnu", PRO_SETTINGS, 0, 0,
******** Line 183 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0188) {"i", PRO_INT, 4, 0, &ind_size, &exp_i},
******** Line 188 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0189) {"kr", PRO_SETTINGS, 0, 0,
******** Line 189 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0193) {"lc", PRO_INT, 0, 0, &block_comment_max_col, &exp_lc},
******** Line 193 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0195) {"l", PRO_INT, 78, 0, &max_col, &exp_l},
******** Line 195 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0214) {"npro", PRO_IGN, 0, 0, 0, &exp_pro},
******** Line 214 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0227) {"st", PRO_STDIN, 0, 0, 0, &exp_st},
******** Line 227 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0229) {"version", PRO_PRSTRING, 0, 0, (int *)"GNU indent 1.0. Based on Berkeley indent 5.11 (9/15/88).", &exp_version},
******** Line 229 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
(0233) {0, 0, 0, 0, 0, 0}
******** Line 233 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_type".
******** Line 233 of "args.c": [Error #079] Illegal type of constant "0" for variable
"p_special".
*** Exit 1
Stop.
parousia(0.78)> diff -c0 -t args.c.bak args.c
*** args.c.bak Tue Jul 11 23:24:25 1989
--- args.c Wed Jul 12 13:34:42 1989
*************** NOTE: more quick fixes for compilation,
*** 150 **** and not necessarily correct
! {"T", PRO_KEY, 0, 0, 0, &exp_T},
--- 150 ----
! {"T", PRO_KEY, 0, OFF, 0, &exp_T},
***************
*** 159 ****
! {"bli", PRO_INT, 0, 0, &brace_indent, &exp_bli},
--- 159 ----
! {"bli", PRO_INT, 0, OFF, &brace_indent, &exp_bli},
***************
*** 164 ****
! {"cd", PRO_INT, 0, 0, &decl_com_ind, &exp_cd},
--- 164 ----
! {"cd", PRO_INT, 0, OFF, &decl_com_ind, &exp_cd},
***************
*** 166,170 ****
! {"ci", PRO_INT, 0, 0, &continuation_indent, &exp_ci},
! {"cli", PRO_INT, 0, 0, &case_indent, &exp_cli},
! {"cp", PRO_INT, 33, 0, &else_endif_col, &exp_cp},
! {"c", PRO_INT, 33, 0, &com_ind, &exp_c},
! {"di", PRO_INT, 16, 0, &decl_indent, &exp_di},
--- 166,170 ----
! {"ci", PRO_INT, 0, OFF, &continuation_indent, &exp_ci},
! {"cli", PRO_INT, 0, OFF, &case_indent, &exp_cli},
! {"cp", PRO_INT, 33, OFF, &else_endif_col, &exp_cp},
! {"c", PRO_INT, 33, OFF, &com_ind, &exp_c},
! {"di", PRO_INT, 16, OFF, &decl_indent, &exp_di},
***************
*** 172 ****
! {"d", PRO_INT, 0, 0, &unindent_displace, &exp_d},
--- 172 ----
! {"d", PRO_INT, 0, OFF, &unindent_displace, &exp_d},
***************
*** 175,177 ****
! {"fbc", PRO_FONT, 0, 0, (int *) &blkcomf, &exp_fbc},
! {"fbx", PRO_FONT, 0, 0, (int *) &boxcomf, &exp_fbx},
! {"fb", PRO_FONT, 0, 0, (int *) &bodyf, &exp_fb},
--- 175,177 ----
! {"fbc", PRO_FONT, 0, OFF, (int *) &blkcomf, &exp_fbc},
! {"fbx", PRO_FONT, 0, OFF, (int *) &boxcomf, &exp_fbx},
! {"fb", PRO_FONT, 0, OFF, (int *) &bodyf, &exp_fb},
***************
*** 180,183 ****
! {"fc", PRO_FONT, 0, 0, (int *) &scomf, &exp_fc},
! {"fk", PRO_FONT, 0, 0, (int *) &keywordf, &exp_fk},
! {"fs", PRO_FONT, 0, 0, (int *) &stringf, &exp_fs},
! {"gnu", PRO_SETTINGS, 0, 0,
--- 180,183 ----
! {"fc", PRO_FONT, 0, OFF, (int *) &scomf, &exp_fc},
! {"fk", PRO_FONT, 0, OFF, (int *) &keywordf, &exp_fk},
! {"fs", PRO_FONT, 0, OFF, (int *) &stringf, &exp_fs},
! {"gnu", PRO_SETTINGS, 0, OFF,
***************
*** 188,189 ****
! {"i", PRO_INT, 4, 0, &ind_size, &exp_i},
! {"kr", PRO_SETTINGS, 0, 0,
--- 188,189 ----
! {"i", PRO_INT, 4, OFF, &ind_size, &exp_i},
! {"kr", PRO_SETTINGS, 0, OFF,
***************
*** 193 ****
! {"lc", PRO_INT, 0, 0, &block_comment_max_col, &exp_lc},
--- 193 ----
! {"lc", PRO_INT, 0, OFF, &block_comment_max_col, &exp_lc},
***************
*** 195 ****
! {"l", PRO_INT, 78, 0, &max_col, &exp_l},
--- 195 ----
! {"l", PRO_INT, 78, OFF, &max_col, &exp_l},
***************
*** 214 ****
! {"npro", PRO_IGN, 0, 0, 0, &exp_pro},
--- 214 ----
! {"npro", PRO_IGN, 0, OFF, 0, &exp_pro},
***************
*** 227 ****
! {"st", PRO_STDIN, 0, 0, 0, &exp_st},
--- 227 ----
! {"st", PRO_STDIN, 0, OFF, 0, &exp_st},
***************
*** 229 ****
! {"version", PRO_PRSTRING, 0, 0, (int *)VERSION_STRING, &exp_version},
--- 229 ----
! {"version", PRO_PRSTRING, 0, OFF, (int *)VERSION_STRING, &exp_version},
***************
*** 233 ****
! {0, 0, 0, 0, 0, 0}
--- 233 ----
! {0, PRO_BOOL, 0, OFF, 0, 0}
parousia(0.81)> make
cc -O -A nansi -A cpu,3000 -A systype,bsd4.3 -A runtype,bsd4.3 -W0,-frnd,-comchk,-std -c args.c
cc -O -A nansi -A cpu,3000 -A systype,bsd4.3 -A runtype,bsd4.3 -W0,-frnd,-comchk,-std -c globs.c
cc -o indent -O -A nansi -A cpu,3000 -A systype,bsd4.3 -A runtype,bsd4.3 -W0,-frnd,-comchk,-std indent.o io.o lexi.o parse.o pr_comment.o args.o globs.o
*********************************************************************************
-----------------------------------------------------------------------
Gregory R. Siebers | MAIL: P.O. Box 200195, Austin, TX 78720
MCC CAD Program | ARPA: siebers@mcc.com
(512) 338-3656 | UUCP: ...!cs.utexas.edu!milano!cadillac!siebers
-----------------------------------------------------------------------
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads