go issue18595 源码

  • 2022-07-15
  • 浏览 (833)

golang issue18595 代码

文件路径:/test/fixedbugs/issue18595.go

// run

// Copyright 2017 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.

// This test makes sure that itabs are unique.
// More explicitly, we require that only one itab structure exists for the pair of
// a given compile-time interface type and underlying concrete type.
// Ensuring this invariant enables fixes for 18492 (improve type switch code).

package main

type I interface {
	M()
}
type J interface {
	M()
}

type T struct{}

func (*T) M() {}

func main() {
	test1()
	test2()
}

func test1() {
	t := new(T)
	var i1, i2 I
	var j interface {
		M()
	}
	i1 = t
	j = t
	i2 = j
	if i1 != i2 {
		panic("interfaces not equal")
	}
}

func test2() {
	t := new(T)
	i1 := (I)(t)
	i2 := (I)((interface {
		M()
	})((J)(t)))
	if i1 != i2 {
		panic("interfaces not equal")
	}
}

相关信息

go 源码目录

相关文章

go bug000 源码

go bug002 源码

go bug003 源码

go bug004 源码

go bug005 源码

go bug006 源码

go bug007 源码

go bug008 源码

go bug009 源码

go bug010 源码

0  赞