+++ /dev/null
-// Copyright 2020 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.
-
-// This file contains tests for the ifaceassert checker.
-
-package a
-
-import "io"
-
-func InterfaceAssertionTest() {
- var (
- a io.ReadWriteSeeker
- b interface {
- Read()
- Write()
- }
- )
- _ = a.(io.Reader)
- _ = a.(io.ReadWriter)
- _ = b.(io.Reader) // want `^impossible type assertion: no type can implement both interface{Read\(\); Write\(\)} and io.Reader \(conflicting types for Read method\)$`
- _ = b.(interface { // want `^impossible type assertion: no type can implement both interface{Read\(\); Write\(\)} and interface{Read\(p \[\]byte\) \(n int, err error\)} \(conflicting types for Read method\)$`
- Read(p []byte) (n int, err error)
- })
-
- switch a.(type) {
- case io.ReadWriter:
- case interface { // want `^impossible type assertion: no type can implement both io.ReadWriteSeeker and interface{Write\(\)} \(conflicting types for Write method\)$`
- Write()
- }:
- default:
- }
-
- switch b := b.(type) {
- case io.ReadWriter, interface{ Read() }: // want `^impossible type assertion: no type can implement both interface{Read\(\); Write\(\)} and io.ReadWriter \(conflicting types for Read method\)$`
- case io.Writer: // want `^impossible type assertion: no type can implement both interface{Read\(\); Write\(\)} and io.Writer \(conflicting types for Write method\)$`
- default:
- _ = b
- }
-}