// Copyright 2018 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. | |
// Check that constants defined as a conversion are accepted. | |
package main | |
import "fmt" | |
type Other int // Imagine this is in another package. | |
const ( | |
alpha Other = iota | |
beta | |
gamma | |
delta | |
) | |
type Conv int | |
const ( | |
Alpha = Conv(alpha) | |
Beta = Conv(beta) | |
Gamma = Conv(gamma) | |
Delta = Conv(delta) | |
) | |
func main() { | |
ck(Alpha, "Alpha") | |
ck(Beta, "Beta") | |
ck(Gamma, "Gamma") | |
ck(Delta, "Delta") | |
ck(42, "Conv(42)") | |
} | |
func ck(c Conv, str string) { | |
if fmt.Sprint(c) != str { | |
panic("conv.go: " + str) | |
} | |
} |