mirror of
https://github.com/golang/go
synced 2024-11-18 01:54:45 -07:00
abf9b112fd
This CL re-introduces useLHS because we don't want to suppress correct "declared but not used" errors for variables that only appear on the LHS of an assignment (using Checker.use would mark them as used). This CL also adjusts a couple of places where types2 differed from go/types (and suppressed valid "declared and not used" errors). Now those errors are surfaced. Adjusted a handful of tests accordingly. Change-Id: Ia555139a05049887aeeec9e5221b1f41432c1a57 Reviewed-on: https://go-review.googlesource.com/c/go/+/478635 Reviewed-by: Robert Griesemer <gri@google.com> Auto-Submit: Robert Griesemer <gri@google.com> Reviewed-by: Robert Findley <rfindley@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Robert Griesemer <gri@google.com>
38 lines
758 B
Go
38 lines
758 B
Go
// errorcheck
|
|
|
|
// Copyright 2009 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.
|
|
|
|
// Test that interface{M()} = *interface{M()} produces a compiler error.
|
|
// Does not compile.
|
|
|
|
package main
|
|
|
|
type Inst interface {
|
|
Next() *Inst
|
|
}
|
|
|
|
type Regexp struct {
|
|
code []Inst
|
|
start Inst
|
|
}
|
|
|
|
type Start struct {
|
|
foo *Inst
|
|
}
|
|
|
|
func (start *Start) Next() *Inst { return nil }
|
|
|
|
func AddInst(Inst) *Inst {
|
|
print("ok in addinst\n")
|
|
return nil
|
|
}
|
|
|
|
func main() {
|
|
print("call addinst\n")
|
|
var _ Inst = AddInst(new(Start)) // ERROR "pointer to interface|incompatible type"
|
|
print("return from addinst\n")
|
|
var _ *Inst = new(Start) // ERROR "pointer to interface|incompatible type"
|
|
}
|