// compile // Copyright 2023 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. // Issue 57955: ARM assembler fails to handle certain cases. package main func main() { Decode[int16](nil) Decode[uint16](nil) Decode[float64](nil) } func DecodeInt16(b []byte) (int16, int) { return 0, 0 } func DecodeUint16(b []byte) (uint16, int) { return 0, 0 } func DecodeFloat64(b []byte) (float64, int) { return 0, 0 } func Decode[T any](b []byte) (T, int) { switch any(*new(T)).(type) { case int16: v, n := DecodeInt16(b) return any(v).(T), n case uint16: v, n := DecodeUint16(b) return any(v).(T), n case float64: v, n := DecodeFloat64(b) return any(v).(T), n default: panic("") } }