/
githubmirror
/
go
Обзор
Документация
Войти
/
githubmirror
/
go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/fixedbugs/issue18595.go
53 строки
867 B
Keith Randall
cmd/compile: using CONV instead of CONVNOP for interface conversions
06 фев 2017, 23:00
06 фев 2017, 23:00
807c80f
Код
Авторство
О чём код?
// 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") } }