// run

// Copyright 2021 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 main

import (
	"fmt"
)

type Numeric interface {
	int32 | int64 | float64 | complex64
}

//go:noline
func inc[T Numeric](x T) T {
	x++
	return x
}
func main() {
	if got, want := inc(int32(5)), int32(6); got != want {
		panic(fmt.Sprintf("got %d, want %d", got, want))
	}
	if got, want := inc(float64(5)), float64(6.0); got != want {
		panic(fmt.Sprintf("got %d, want %d", got, want))
	}
	if got, want := inc(complex64(5)), complex64(6.0); got != want {
		panic(fmt.Sprintf("got %d, want %d", got, want))
	}
}
