Commit 7f907b9c authored by Matthew Dempsky's avatar Matthew Dempsky

cmd/compile: require -lang=go1.14 for overlapping interfaces

Support for overlapping interfaces is a new (proposed) Go language
feature to be supported in Go 1.14, so it shouldn't be supported under
-lang=go1.13 or earlier.

Fixes #34329.

Change-Id: I5fea5716b7d135476980bc40b4f6e8c611b67735
Reviewed-on: https://go-review.googlesource.com/c/go/+/195678
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
parent c2facbe9
...@@ -34,7 +34,7 @@ func expandiface(t *types.Type) { ...@@ -34,7 +34,7 @@ func expandiface(t *types.Type) {
switch prev := seen[m.Sym]; { switch prev := seen[m.Sym]; {
case prev == nil: case prev == nil:
seen[m.Sym] = m seen[m.Sym] = m
case !explicit && types.Identical(m.Type, prev.Type): case langSupported(1, 14) && !explicit && types.Identical(m.Type, prev.Type):
return return
default: default:
yyerrorl(m.Pos, "duplicate method %s", m.Sym.Name) yyerrorl(m.Pos, "duplicate method %s", m.Sym.Name)
......
...@@ -181,6 +181,7 @@ func TestStdFixed(t *testing.T) { ...@@ -181,6 +181,7 @@ func TestStdFixed(t *testing.T) {
"issue25507.go", // go/types does not have constraints on stack size "issue25507.go", // go/types does not have constraints on stack size
"issue20780.go", // go/types does not have constraints on stack size "issue20780.go", // go/types does not have constraints on stack size
"issue31747.go", // go/types does not have constraints on language level (-lang=go1.12) (see #31793) "issue31747.go", // go/types does not have constraints on language level (-lang=go1.12) (see #31793)
"issue34329.go", // go/types does not have constraints on language level (-lang=go1.13) (see #31793)
) )
} }
......
// errorcheck -lang=go1.13
// Copyright 2019 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 p
type I interface { M() }
type _ interface {
I
I // ERROR "duplicate method M"
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment