Initial commit: Go 1.23 release state
This commit is contained in:
57
test/fixedbugs/issue9017.go
Normal file
57
test/fixedbugs/issue9017.go
Normal file
@@ -0,0 +1,57 @@
|
||||
// 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.
|
||||
|
||||
// Issue 9017: Method selector shouldn't automatically dereference a named pointer type.
|
||||
|
||||
package main
|
||||
|
||||
type T struct{ x int }
|
||||
|
||||
func (T) mT() {}
|
||||
|
||||
type S struct {
|
||||
T
|
||||
}
|
||||
|
||||
func (S) mS() {}
|
||||
|
||||
type P *S
|
||||
|
||||
type I interface {
|
||||
mT()
|
||||
}
|
||||
|
||||
func main() {
|
||||
var s S
|
||||
s.T.mT()
|
||||
s.mT() // == s.T.mT()
|
||||
|
||||
var i I
|
||||
_ = i
|
||||
i = s.T
|
||||
i = s
|
||||
|
||||
var ps = &s
|
||||
ps.mS()
|
||||
ps.T.mT()
|
||||
ps.mT() // == ps.T.mT()
|
||||
|
||||
i = ps.T
|
||||
i = ps
|
||||
|
||||
var p P = ps
|
||||
(*p).mS()
|
||||
p.mS() // ERROR "undefined"
|
||||
|
||||
i = *p
|
||||
i = p // ERROR "cannot use|incompatible types"
|
||||
|
||||
p.T.mT()
|
||||
p.mT() // ERROR "undefined"
|
||||
|
||||
i = p.T
|
||||
i = p // ERROR "cannot use|incompatible types"
|
||||
}
|
||||
Reference in New Issue
Block a user