mirror of
https://github.com/golang/go
synced 2024-11-14 13:20:30 -07:00
53c4c17b09
The files below had conflicts that required manual resolution. The unresolved conflict in noder.go was just in the import declaration (trivial). All the other conflicts are in tests where the ERROR regex patterns changed to accomodate gccgo error messages (incoming from dev.regabi), and to accomodate types2 in dev.typeparams. They were resolved by accepting the dev.regabi changes (so as not to lose them) and then by re- applying whatever changes needed to make them pass with types2. Finally, the new test mainsig.go was excluded from run.go when using types2 due to issue #43308. src/cmd/compile/internal/gc/noder.go test/fixedbugs/bug13343.go test/fixedbugs/bug462.go test/fixedbugs/issue10975.go test/fixedbugs/issue11326.go test/fixedbugs/issue11361.go test/fixedbugs/issue11371.go test/fixedbugs/issue11674.go test/fixedbugs/issue13365.go test/fixedbugs/issue13471.go test/fixedbugs/issue14136.go test/fixedbugs/issue14321.go test/fixedbugs/issue14729.go test/fixedbugs/issue15898.go test/fixedbugs/issue16439.go test/fixedbugs/issue17588.go test/fixedbugs/issue19323.go test/fixedbugs/issue19482.go test/fixedbugs/issue19880.go test/fixedbugs/issue20185.go test/fixedbugs/issue20227.go test/fixedbugs/issue20415.go test/fixedbugs/issue20749.go test/fixedbugs/issue22794.go test/fixedbugs/issue22822.go test/fixedbugs/issue22921.go test/fixedbugs/issue23823.go test/fixedbugs/issue25727.go test/fixedbugs/issue26616.go test/fixedbugs/issue28079c.go test/fixedbugs/issue28450.go test/fixedbugs/issue30085.go test/fixedbugs/issue30087.go test/fixedbugs/issue35291.go test/fixedbugs/issue38745.go test/fixedbugs/issue41247.go test/fixedbugs/issue41440.go test/fixedbugs/issue41500.go test/fixedbugs/issue4215.go test/fixedbugs/issue6402.go test/fixedbugs/issue6772.go test/fixedbugs/issue7129.go test/fixedbugs/issue7150.go test/fixedbugs/issue7153.go test/fixedbugs/issue7310.go test/fixedbugs/issue8183.go test/fixedbugs/issue8385.go test/fixedbugs/issue8438.go test/fixedbugs/issue8440.go test/fixedbugs/issue8507.go test/fixedbugs/issue9370.go test/fixedbugs/issue9521.go Change-Id: I26e6e326fde6e3fca5400711a253834d710ab7f4
128 lines
5.0 KiB
Go
128 lines
5.0 KiB
Go
// errorcheck
|
|
|
|
// Copyright 2014 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.
|
|
|
|
// Verify that concrete/interface comparisons are
|
|
// typechecked correctly by the compiler.
|
|
|
|
package main
|
|
|
|
type I interface {
|
|
Method()
|
|
}
|
|
|
|
type C int
|
|
|
|
func (C) Method() {}
|
|
|
|
type G func()
|
|
|
|
func (G) Method() {}
|
|
|
|
var (
|
|
e interface{}
|
|
i I
|
|
c C
|
|
n int
|
|
f func()
|
|
g G
|
|
)
|
|
|
|
var (
|
|
_ = e == c
|
|
_ = e != c
|
|
_ = e >= c // ERROR "invalid operation.*not defined|invalid comparison|cannot compare"
|
|
_ = c == e
|
|
_ = c != e
|
|
_ = c >= e // ERROR "invalid operation.*not defined|invalid comparison|cannot compare"
|
|
|
|
_ = i == c
|
|
_ = i != c
|
|
_ = i >= c // ERROR "invalid operation.*not defined|invalid comparison|cannot compare"
|
|
_ = c == i
|
|
_ = c != i
|
|
_ = c >= i // ERROR "invalid operation.*not defined|invalid comparison|cannot compare"
|
|
|
|
_ = e == n
|
|
_ = e != n
|
|
_ = e >= n // ERROR "invalid operation.*not defined|invalid comparison|cannot compare"
|
|
_ = n == e
|
|
_ = n != e
|
|
_ = n >= e // ERROR "invalid operation.*not defined|invalid comparison|cannot compare"
|
|
|
|
// i and n are not assignable to each other
|
|
_ = i == n // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = i != n // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = i >= n // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = n == i // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = n != i // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = n >= i // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
|
|
_ = e == 1
|
|
_ = e != 1
|
|
_ = e >= 1 // ERROR "invalid operation.*not defined|invalid comparison"
|
|
_ = 1 == e
|
|
_ = 1 != e
|
|
_ = 1 >= e // ERROR "invalid operation.*not defined|invalid comparison"
|
|
|
|
_ = i == 1 // ERROR "invalid operation.*mismatched types|incompatible types|cannot convert"
|
|
_ = i != 1 // ERROR "invalid operation.*mismatched types|incompatible types|cannot convert"
|
|
_ = i >= 1 // ERROR "invalid operation.*mismatched types|incompatible types|cannot convert"
|
|
_ = 1 == i // ERROR "invalid operation.*mismatched types|incompatible types|cannot convert"
|
|
_ = 1 != i // ERROR "invalid operation.*mismatched types|incompatible types|cannot convert"
|
|
_ = 1 >= i // ERROR "invalid operation.*mismatched types|incompatible types|cannot convert"
|
|
|
|
_ = e == f // ERROR "invalid operation.*not defined|invalid operation"
|
|
_ = e != f // ERROR "invalid operation.*not defined|invalid operation"
|
|
_ = e >= f // ERROR "invalid operation.*not defined|invalid comparison"
|
|
_ = f == e // ERROR "invalid operation.*not defined|invalid operation"
|
|
_ = f != e // ERROR "invalid operation.*not defined|invalid operation"
|
|
_ = f >= e // ERROR "invalid operation.*not defined|invalid comparison"
|
|
|
|
_ = i == f // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = i != f // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = i >= f // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = f == i // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = f != i // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = f >= i // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
|
|
_ = e == g // ERROR "invalid operation.*not defined|invalid operation"
|
|
_ = e != g // ERROR "invalid operation.*not defined|invalid operation"
|
|
_ = e >= g // ERROR "invalid operation.*not defined|invalid comparison"
|
|
_ = g == e // ERROR "invalid operation.*not defined|invalid operation"
|
|
_ = g != e // ERROR "invalid operation.*not defined|invalid operation"
|
|
_ = g >= e // ERROR "invalid operation.*not defined|invalid comparison"
|
|
|
|
_ = i == g // ERROR "invalid operation.*not defined|invalid operation"
|
|
_ = i != g // ERROR "invalid operation.*not defined|invalid operation"
|
|
_ = i >= g // ERROR "invalid operation.*not defined|invalid comparison"
|
|
_ = g == i // ERROR "invalid operation.*not defined|invalid operation"
|
|
_ = g != i // ERROR "invalid operation.*not defined|invalid operation"
|
|
_ = g >= i // ERROR "invalid operation.*not defined|invalid comparison"
|
|
|
|
_ = _ == e // ERROR "cannot use .*_.* as value"
|
|
_ = _ == i // ERROR "cannot use .*_.* as value"
|
|
_ = _ == c // ERROR "cannot use .*_.* as value"
|
|
_ = _ == n // ERROR "cannot use .*_.* as value"
|
|
_ = _ == f // ERROR "cannot use .*_.* as value"
|
|
_ = _ == g // ERROR "cannot use .*_.* as value"
|
|
|
|
_ = e == _ // ERROR "cannot use .*_.* as value"
|
|
_ = i == _ // ERROR "cannot use .*_.* as value"
|
|
_ = c == _ // ERROR "cannot use .*_.* as value"
|
|
_ = n == _ // ERROR "cannot use .*_.* as value"
|
|
_ = f == _ // ERROR "cannot use .*_.* as value"
|
|
_ = g == _ // ERROR "cannot use .*_.* as value"
|
|
|
|
_ = _ == _ // ERROR "cannot use .*_.* as value"
|
|
|
|
_ = e ^ c // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = c ^ e // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = 1 ^ e // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = e ^ 1 // ERROR "invalid operation.*mismatched types|incompatible types"
|
|
_ = 1 ^ c
|
|
_ = c ^ 1
|
|
)
|