// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug331

// Copyright 2011 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

import "os"

func f() (_ string, x float64, err os.Error) {
	return
}

func g() (_ string, x float64, err os.Error) {
	return "hello", 3.14, os.EOF
}

var _ func() (string, float64, os.Error) = f
var _ func() (string, float64, os.Error) = g

func main() {
	x, y, z := g()
	if x != "hello" || y != 3.14 || z != os.EOF {
		println("wrong", x, len(x), y, z)
	}
}

/*
issue 1712

bug331.go:12: cannot use "hello" (type string) as type float64 in assignment
bug331.go:12: cannot use 0 (type float64) as type os.Error in assignment:
	float64 does not implement os.Error (missing String method)
bug331.go:12: error in shape across RETURN
*/
