From 7f907b9ceecfecb6dfe03878490bd3ae97ba8f2f Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Mon, 16 Sep 2019 11:28:05 -0700 Subject: [PATCH] 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 TryBot-Result: Gobot Gobot Reviewed-by: Robert Griesemer --- src/cmd/compile/internal/gc/align.go | 2 +- src/go/types/stdlib_test.go | 1 + test/fixedbugs/issue34329.go | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 test/fixedbugs/issue34329.go diff --git a/src/cmd/compile/internal/gc/align.go b/src/cmd/compile/internal/gc/align.go index d6251adc7a..bd6176e479 100644 --- a/src/cmd/compile/internal/gc/align.go +++ b/src/cmd/compile/internal/gc/align.go @@ -34,7 +34,7 @@ func expandiface(t *types.Type) { switch prev := seen[m.Sym]; { case prev == nil: seen[m.Sym] = m - case !explicit && types.Identical(m.Type, prev.Type): + case langSupported(1, 14) && !explicit && types.Identical(m.Type, prev.Type): return default: yyerrorl(m.Pos, "duplicate method %s", m.Sym.Name) diff --git a/src/go/types/stdlib_test.go b/src/go/types/stdlib_test.go index 771f54d3f1..a3cbe95b3a 100644 --- a/src/go/types/stdlib_test.go +++ b/src/go/types/stdlib_test.go @@ -181,6 +181,7 @@ func TestStdFixed(t *testing.T) { "issue25507.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) + "issue34329.go", // go/types does not have constraints on language level (-lang=go1.13) (see #31793) ) } diff --git a/test/fixedbugs/issue34329.go b/test/fixedbugs/issue34329.go new file mode 100644 index 0000000000..790686e3dd --- /dev/null +++ b/test/fixedbugs/issue34329.go @@ -0,0 +1,14 @@ +// 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" +}