1
0
mirror of https://github.com/golang/go synced 2024-11-25 12:57:58 -07:00

6g currently accepts setting a string value to an integer

constant without an explicit conversion.  I think that is a
bug.  This adds a test case for it.

Also, change errchk to include the string BUG in error
messages, so that failures are included in the count reported
by the run shell script.

R=r,ken
DELTA=11  (7 added, 0 deleted, 4 changed)
OCL=15857
CL=15880
This commit is contained in:
Ian Lance Taylor 2008-09-25 15:08:52 -07:00
parent c51195386e
commit b70d42f323
3 changed files with 16 additions and 4 deletions

10
test/bugs/bug104.go Normal file
View File

@ -0,0 +1,10 @@
// errchk $G $D/$F.go
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
func f() string {
return 0 // ERROR "conversion|type"
}

View File

@ -34,7 +34,7 @@ rm -f $TMPOUT $TMPERR $TMPALL $TMPTMP $TMPSTAT
trap "rm -f $TMPOUT $TMPERR $TMPALL $TMPTMP $TMPSTAT" 0 1 2 3 14 15 trap "rm -f $TMPOUT $TMPERR $TMPALL $TMPTMP $TMPSTAT" 0 1 2 3 14 15
if $* >$TMPOUT 2>$TMPERR; then if $* >$TMPOUT 2>$TMPERR; then
echo 1>&2 "errchk: command succeeded unexpectedly: " "$@" echo 1>&2 "BUG: errchk: command succeeded unexpectedly: " "$@"
cat $TMPOUT cat $TMPOUT
cat 1>&2 $TMPERR cat 1>&2 $TMPERR
rm -f $TMPOUT $TMPERR rm -f $TMPOUT $TMPERR
@ -52,17 +52,17 @@ pr -n -t $SOURCEFILE | grep '// ERROR' | while read line; do
grep -v "$SOURCEFILE:$lineno" < $TMPALL > $TMPTMP grep -v "$SOURCEFILE:$lineno" < $TMPALL > $TMPTMP
mv -f $TMPTMP $TMPALL mv -f $TMPTMP $TMPALL
if test -z "$errmsg"; then if test -z "$errmsg"; then
echo 1>&2 "errchk: $SOURCEFILE: missing expected error message on line $lineno: '$regexp'" echo 1>&2 "BUG: errchk: $SOURCEFILE: missing expected error message on line $lineno: '$regexp'"
echo 1 > $TMPSTAT echo 1 > $TMPSTAT
elif ! echo "$errmsg" | egrep -q "$regexp"; then elif ! echo "$errmsg" | egrep -q "$regexp"; then
echo 1>&2 "errchk: $SOURCEFILE: error message on line $lineno does not match '$regexp'" echo 1>&2 "BUG: errchk: $SOURCEFILE: error message on line $lineno does not match '$regexp'"
echo 1>&2 $errmsg echo 1>&2 $errmsg
echo 1 > $TMPSTAT echo 1 > $TMPSTAT
fi fi
done done
if test -s $TMPALL; then if test -s $TMPALL; then
echo 1>&2 "errchk: $SOURCEFILE: unmatched error messages:" echo 1>&2 "BUG: errchk: $SOURCEFILE: unmatched error messages:"
echo 1>&2 "==================================================" echo 1>&2 "=================================================="
cat 1>&2 $TMPALL cat 1>&2 $TMPALL
echo 1>&2 "==================================================" echo 1>&2 "=================================================="

View File

@ -166,6 +166,8 @@ SIGSEGV: segmentation violation
Faulting address: 0x0 Faulting address: 0x0
pc: xxx pc: xxx
=========== bugs/bug104.go
BUG: errchk: command succeeded unexpectedly: 6g bugs/bug104.go
=========== fixedbugs/bug016.go =========== fixedbugs/bug016.go
fixedbugs/bug016.go:7: overflow converting constant to <uint32>UINT32 fixedbugs/bug016.go:7: overflow converting constant to <uint32>UINT32