use errchk in more places.

let errchk exit 0 even if it has reported a BUG.
it echoed BUG and that's all that matters.

R=r
DELTA=143  (1 added, 89 deleted, 53 changed)
OCL=32533
CL=32542
This commit is contained in:
Russ Cox 2009-07-30 16:46:14 -07:00
parent 36ca5fde68
commit 34b277f046
20 changed files with 25 additions and 113 deletions

View file

@ -28,19 +28,18 @@ TMPOUT=/tmp/errchk-out-$$
TMPERR=/tmp/errchk-err-$$
TMPALL=/tmp/errchk-all-$$
TMPTMP=/tmp/errchk-tmp-$$
TMPSTAT=/tmp/errchk-stat-$$
TMPBUG=/tmp/errchk-bug-$$
rm -f $TMPOUT $TMPERR $TMPALL $TMPTMP $TMPSTAT $TMPBUG
rm -f $TMPOUT $TMPERR $TMPALL $TMPTMP $TMPBUG
trap "rm -f $TMPOUT $TMPERR $TMPALL $TMPTMP $TMPSTAT $TMPBUG" 0 1 2 3 14 15
trap "rm -f $TMPOUT $TMPERR $TMPALL $TMPTMP $TMPBUG" 0 1 2 3 14 15
if $* >$TMPOUT 2>$TMPERR; then
echo 1>&2 "BUG: errchk: command succeeded unexpectedly"
cat $TMPOUT
cat 1>&2 $TMPERR
rm -f $TMPOUT $TMPERR
exit 1
exit 0
fi
cat $TMPOUT $TMPERR | grep -v '^ ' > $TMPALL
@ -54,7 +53,6 @@ bug() {
}
header=0
echo 0 > $TMPSTAT
pr -n -t $SOURCEFILE | grep '// ERROR' | while read line; do
lineno=`echo $line | sed -e 's/^[ ]*\([0-9]*\).*$/\1/'`
regexp=`echo $line | sed -e 's|.*// ERROR "\([^"]*\)".*$|\1|'`
@ -64,12 +62,10 @@ pr -n -t $SOURCEFILE | grep '// ERROR' | while read line; do
if test -z "$errmsg"; then
bug
echo 1>&2 "errchk: $SOURCEFILE:$lineno: missing expected error: '$regexp'"
echo 1 > $TMPSTAT
elif ! echo "$errmsg" | egrep -q "$regexp"; then
bug
echo 1>&2 "errchk: $SOURCEFILE:$lineno: error message does not match '$regexp'"
echo 1>&2 $errmsg
echo 1 > $TMPSTAT
fi
done
@ -79,9 +75,6 @@ if test -s $TMPALL; then
echo 1>&2 "=================================================="
cat 1>&2 $TMPALL
echo 1>&2 "=================================================="
echo 1 > $TMPSTAT
fi
status=`cat $TMPSTAT`
exit $status
exit 0

View file

@ -7,7 +7,7 @@
package main
func f9(a int) (i int, f float) {
i := 9; // BUG redeclaration
f := float(9); // BUG redeclaration
i := 9; // ERROR "redecl"
f := float(9); // ERROR "redecl"
return i, f;
}

View file

@ -7,5 +7,5 @@
package main
func main() {
s := vlong(0); // BUG no vlong specified in the language
s := vlong(0); // ERROR "undef"
}

View file

@ -7,5 +7,5 @@
package main
func main (x int) {
var x int; // BUG redeclaration error
var x int; // ERROR "redecl"
}

View file

@ -7,7 +7,7 @@
package main
func atom(s string) {
if s == nil {
if s == nil { // ERROR "nil"
return;
}
}

View file

@ -4,5 +4,5 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
func main() {
func main() { // ERROR "package"
}

View file

@ -11,5 +11,5 @@ func f() int {
}
func main() {
const n = f(); // should report only one error
const n = f(); // ERROR "const"
}

View file

@ -7,5 +7,5 @@
package main
func main() {
var s string = nil; // nil should not be assignment compatible with string
var s string = nil; // ERROR "illegal|invalid"
}

View file

@ -9,7 +9,7 @@
package main
const c = '\''; // this works
const s = "\'"; // this doesn't
const s = "\'"; // ERROR "invalid|escape"
/*
There is no reason why the escapes need to be different inside strings and chars.

View file

@ -7,5 +7,5 @@
package main
func main() {
s := string(bug); // crash
s := string(bug); // ERROR "undef"
}

View file

@ -9,6 +9,6 @@ package main
func main() {
var s int = 0;
var x int = 0;
x = x << s; // should complain that s is not a uint
x = x >> s; // should complain that s is not a uint
x = x << s; // ERROR "illegal|inval|shift"
x = x >> s; // ERROR "illegal|inval|shift"
}

View file

@ -7,6 +7,6 @@
package main
func main() {
x := string{'a', 'b', '\n'};
x := string{'a', 'b', '\n'}; // ERROR "composite"
print(x);
}

View file

@ -10,4 +10,5 @@ import "./bug0"
// visible here in package bug1. The test for failure is in
// ../bug083.go.
var v1 bug0.t0
var v1 bug0.t0; // ERROR "bug0"

View file

@ -6,7 +6,7 @@
package main
func f() int {
func f() int { // ERROR "return"
if false {
return 0;
}

View file

@ -16,8 +16,7 @@ func f2() {
}
func f3() {
i := c; // BUG: compiles but should not. constant is not in scope in this function
goto exit; // BUG: compiles but should not. label is not in this function
i := c; // ERROR "undef"
}
func main() {

View file

@ -9,6 +9,6 @@ package main
func f() /* no return type */ {}
func main() {
x := f(); // should not compile
x := f(); // ERROR "mismatch"
}

View file

@ -8,5 +8,5 @@ package main
func main() {
const a uint64 = 10;
var b int64 = a;
var b int64 = a; // ERROR "convert"
}

View file

@ -12,5 +12,5 @@ type T2 struct { t bug0.T }
func fn(p *T2) int {
// This reference should be invalid, because bug0.T.i is local
// to package bug0 and should not be visible in package bug1.
return p.t.i
return p.t.i; // ERROR "field|undef"
}

View file

@ -10,5 +10,5 @@ func main() {
type Slice []byte;
a := [...]byte{ 0 };
b := Slice(&a); // This should be OK.
c := Slice(a); // ERROR "invalid"
c := Slice(a); // ERROR "invalid|illegal"
}

View file

@ -111,91 +111,21 @@ hi
3 11
4 0
=========== fixedbugs/bug035.go
fixedbugs/bug035.go:6: variable i redeclared in this block
previous declaration at fixedbugs/bug035.go:5
fixedbugs/bug035.go:7: variable f redeclared in this block
previous declaration at fixedbugs/bug035.go:5
=========== fixedbugs/bug037.go
fixedbugs/bug037.go:6: undefined: vlong
fixedbugs/bug037.go:6: undefined: s
=========== fixedbugs/bug039.go
fixedbugs/bug039.go:6: variable x redeclared in this block
previous declaration at fixedbugs/bug039.go:5
=========== fixedbugs/bug049.go
fixedbugs/bug049.go:6: invalid operation: s == nil
fixedbugs/bug049.go:6: illegal types for operand: EQ
string
nil
=========== fixedbugs/bug050.go
fixedbugs/bug050.go:3: package statement must be first
=========== fixedbugs/bug051.go
fixedbugs/bug051.go:10: const initializer must be constant
=========== fixedbugs/bug062.go
fixedbugs/bug062.go:6: illegal types for operand: AS
string
nil
=========== fixedbugs/bug067.go
ok
=========== fixedbugs/bug068.go
fixedbugs/bug068.go:8: unknown escape sequence: '
=========== fixedbugs/bug070.go
outer loop top k 0
inner loop top i 0
do break
broke
=========== fixedbugs/bug072.go
fixedbugs/bug072.go:6: undefined: bug
=========== fixedbugs/bug073.go
fixedbugs/bug073.go:8: illegal types for operand: LSH
int
int
fixedbugs/bug073.go:8: illegal types for operand: AS
int
fixedbugs/bug073.go:9: illegal types for operand: RSH
int
int
fixedbugs/bug073.go:9: illegal types for operand: AS
int
=========== fixedbugs/bug074.go
fixedbugs/bug074.go:6: invalid type for composite literal: string
fixedbugs/bug074.go:6: invalid type for composite literal: string
=========== fixedbugs/bug081.go
fixedbugs/bug081.go:5: fatal error: loop
=========== fixedbugs/bug083.go
fixedbugs/bug083.dir/bug1.go:9: cannot refer to bug0.t0
=========== fixedbugs/bug086.go
fixedbugs/bug086.go:5: function ends without a return statement
=========== fixedbugs/bug091.go
fixedbugs/bug091.go:15: undefined: c
fixedbugs/bug091.go:15: illegal types for operand: AS
undefined
=========== fixedbugs/bug093.go
M
=========== fixedbugs/bug103.go
fixedbugs/bug103.go:8: assignment count mismatch: 1 = 0
fixedbugs/bug103.go:8: function requires a return type
fixedbugs/bug103.go:8: illegal types for operand: AS
int
=========== fixedbugs/bug113.go
interface is int, not int32
throw: interface conversion
@ -209,17 +139,6 @@ fixedbugs/bug121.go:20: illegal types for operand: AS
I
*S
=========== fixedbugs/bug131.go
fixedbugs/bug131.go:7: cannot convert uint64 constant to int64
fixedbugs/bug131.go:7: illegal types for operand: AS
int64
uint64
=========== fixedbugs/bug133.go
fixedbugs/bug133.dir/bug2.go:11: undefined: bug0.T field i
fixedbugs/bug133.dir/bug2.go:11: illegal types for operand: RETURN
int
=========== fixedbugs/bug148.go
2 3
interface is main.T, not main.T·bug148·1