// 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 (
	"bufio"
	"./io"
	goio "io"
)

func main() {
	// The errors here complain that io.X != io.X
	// for different values of io so they should be
	// showing the full import path, which for the
	// "./io" import is really ..../go/test/io.
	// For example:
	//
	// main.go:25: cannot use w (type "/Users/rsc/g/go/test/fixedbugs/bug345.dir/io".Writer) as type "io".Writer in function argument:
	//	io.Writer does not implement io.Writer (missing Write method)
	// main.go:27: cannot use &x (type *"io".SectionReader) as type *"/Users/rsc/g/go/test/fixedbugs/bug345.dir/io".SectionReader in function argument

	var w io.Writer
	bufio.NewWriter(w)  // ERROR "test/io|has incompatible type"
	var x goio.SectionReader
	io.SR(&x)  // ERROR "test/io|has incompatible type"
}
