diff --git a/gcc/go/gofrontend/parse.cc b/gcc/go/gofrontend/parse.cc index 8c42fa2b24f3d9a731368bee00e8e4686b7e282e..6f7b8f21b24fd11cc7ca0f1192b1509805f81d7c 100644 --- a/gcc/go/gofrontend/parse.cc +++ b/gcc/go/gofrontend/parse.cc @@ -3839,6 +3839,23 @@ Parse::return_stat() if (this->expression_may_start_here()) vals = this->expression_list(NULL, false); this->gogo_->add_statement(Statement::make_return_statement(vals, location)); + + if (vals == NULL + && this->gogo_->current_function()->func_value()->results_are_named()) + { + Named_object* function = this->gogo_->current_function(); + Function::Results* results = function->func_value()->result_variables(); + for (Function::Results::const_iterator p = results->begin(); + p != results->end(); + ++p) + { + Named_object* no = this->gogo_->lookup((*p)->name(), NULL); + go_assert(no != NULL); + if (!no->is_result_variable()) + error_at(location, "%qs is shadowed during return", + (*p)->message_name().c_str()); + } + } } // IfStmt = "if" [ SimpleStmt ";" ] Expression Block diff --git a/libgo/go/crypto/openpgp/s2k/s2k.go b/libgo/go/crypto/openpgp/s2k/s2k.go index da926a76ed28a3c1b5dc9ee1c2e35cfa34d87249..013b15c149724b3fe9462b0fad1fb81f074e59c3 100644 --- a/libgo/go/crypto/openpgp/s2k/s2k.go +++ b/libgo/go/crypto/openpgp/s2k/s2k.go @@ -100,7 +100,7 @@ func Parse(r io.Reader) (f func(out, in []byte), err os.Error) { } return f, nil case 2: - _, err := io.ReadFull(r, buf[:8]) + _, err = io.ReadFull(r, buf[:8]) if err != nil { return } @@ -109,7 +109,7 @@ func Parse(r io.Reader) (f func(out, in []byte), err os.Error) { } return f, nil case 3: - _, err := io.ReadFull(r, buf[:9]) + _, err = io.ReadFull(r, buf[:9]) if err != nil { return } diff --git a/libgo/go/exp/gui/x11/auth.go b/libgo/go/exp/gui/x11/auth.go index d48936ac178a865b9e5de82287e60036c5ca36c7..732f103d669d2feff750cd7e36f4fa6bf291ab51 100644 --- a/libgo/go/exp/gui/x11/auth.go +++ b/libgo/go/exp/gui/x11/auth.go @@ -65,23 +65,25 @@ func readAuth(displayStr string) (name, data string, err os.Error) { return } for { - family, err := readU16BE(br, b[0:2]) + var family uint16 + var addr, disp, name0, data0 string + family, err = readU16BE(br, b[0:2]) if err != nil { return } - addr, err := readStr(br, b[0:]) + addr, err = readStr(br, b[0:]) if err != nil { return } - disp, err := readStr(br, b[0:]) + disp, err = readStr(br, b[0:]) if err != nil { return } - name0, err := readStr(br, b[0:]) + name0, err = readStr(br, b[0:]) if err != nil { return } - data0, err := readStr(br, b[0:]) + data0, err = readStr(br, b[0:]) if err != nil { return } diff --git a/libgo/go/exp/gui/x11/conn.go b/libgo/go/exp/gui/x11/conn.go index 1d237816abf923b53e7a4df71fc085e9381ed810..98c65b95faefa06c69aba11b8743d7867908d044 100644 --- a/libgo/go/exp/gui/x11/conn.go +++ b/libgo/go/exp/gui/x11/conn.go @@ -391,12 +391,13 @@ func checkPixmapFormats(r io.Reader, b []byte, n int) (agree bool, err os.Error) // checkDepths checks that we have an agreeable X Depth (i.e. one that has an agreeable X VisualType). func checkDepths(r io.Reader, b []byte, n int, visual uint32) (agree bool, err os.Error) { for i := 0; i < n; i++ { - depth, err := readU16LE(r, b) + var depth, visualsLen uint16 + depth, err = readU16LE(r, b) if err != nil { return } depth &= 0xff - visualsLen, err := readU16LE(r, b) + visualsLen, err = readU16LE(r, b) if err != nil { return } @@ -408,11 +409,11 @@ func checkDepths(r io.Reader, b []byte, n int, visual uint32) (agree bool, err o for j := 0; j < int(visualsLen); j++ { // Read 24 bytes: visual(4), class(1), bits per rgb value(1), colormap entries(2), // red mask(4), green mask(4), blue mask(4), padding(4). - v, err := readU32LE(r, b) - _, err = readU32LE(r, b) - rm, err := readU32LE(r, b) - gm, err := readU32LE(r, b) - bm, err := readU32LE(r, b) + v, _ := readU32LE(r, b) + _, _ = readU32LE(r, b) + rm, _ := readU32LE(r, b) + gm, _ := readU32LE(r, b) + bm, _ := readU32LE(r, b) _, err = readU32LE(r, b) if err != nil { return @@ -428,7 +429,8 @@ func checkDepths(r io.Reader, b []byte, n int, visual uint32) (agree bool, err o // checkScreens checks that we have an agreeable X Screen. func checkScreens(r io.Reader, b []byte, n int) (root, visual uint32, err os.Error) { for i := 0; i < n; i++ { - root0, err := readU32LE(r, b) + var root0, visual0, x uint32 + root0, err = readU32LE(r, b) if err != nil { return } @@ -438,17 +440,18 @@ func checkScreens(r io.Reader, b []byte, n int) (root, visual uint32, err os.Err if err != nil { return } - visual0, err := readU32LE(r, b) + visual0, err = readU32LE(r, b) if err != nil { return } // Next 4 bytes: backing stores, save unders, root depth, allowed depths length. - x, err := readU32LE(r, b) + x, err = readU32LE(r, b) if err != nil { return } nDepths := int(x >> 24) - agree, err := checkDepths(r, b, nDepths, visual0) + var agree bool + agree, err = checkDepths(r, b, nDepths, visual0) if err != nil { return }