golang.org/x/tools/gopls@v0.15.3/internal/util/constraints/constraint.go (about) 1 // Copyright 2021 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Package constraints defines a set of useful constraints to be used 6 // with type parameters. 7 package constraints 8 9 // Copied from x/exp/constraints. 10 11 // Signed is a constraint that permits any signed integer type. 12 // If future releases of Go add new predeclared signed integer types, 13 // this constraint will be modified to include them. 14 type Signed interface { 15 ~int | ~int8 | ~int16 | ~int32 | ~int64 16 } 17 18 // Unsigned is a constraint that permits any unsigned integer type. 19 // If future releases of Go add new predeclared unsigned integer types, 20 // this constraint will be modified to include them. 21 type Unsigned interface { 22 ~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr 23 } 24 25 // Integer is a constraint that permits any integer type. 26 // If future releases of Go add new predeclared integer types, 27 // this constraint will be modified to include them. 28 type Integer interface { 29 Signed | Unsigned 30 } 31 32 // Float is a constraint that permits any floating-point type. 33 // If future releases of Go add new predeclared floating-point types, 34 // this constraint will be modified to include them. 35 type Float interface { 36 ~float32 | ~float64 37 } 38 39 // Complex is a constraint that permits any complex numeric type. 40 // If future releases of Go add new predeclared complex numeric types, 41 // this constraint will be modified to include them. 42 type Complex interface { 43 ~complex64 | ~complex128 44 } 45 46 // Ordered is a constraint that permits any ordered type: any type 47 // that supports the operators < <= >= >. 48 // If future releases of Go add new ordered types, 49 // this constraint will be modified to include them. 50 type Ordered interface { 51 Integer | Float | ~string 52 }