github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/cmd/compile/types2/basic.go (about) 1 // Copyright 2011 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 types2 6 7 // BasicKind describes the kind of basic type. 8 type BasicKind int 9 10 const ( 11 Invalid BasicKind = iota // type is invalid 12 13 // predeclared types 14 Bool 15 Int 16 Int8 17 Int16 18 Int32 19 Int64 20 Uint 21 Uint8 22 Uint16 23 Uint32 24 Uint64 25 Uintptr 26 Float32 27 Float64 28 Complex64 29 Complex128 30 String 31 UnsafePointer 32 33 // types for untyped values 34 UntypedBool 35 UntypedInt 36 UntypedRune 37 UntypedFloat 38 UntypedComplex 39 UntypedString 40 UntypedNil 41 42 // aliases 43 Byte = Uint8 44 Rune = Int32 45 ) 46 47 // BasicInfo is a set of flags describing properties of a basic type. 48 type BasicInfo int 49 50 // Properties of basic types. 51 const ( 52 IsBoolean BasicInfo = 1 << iota 53 IsInteger 54 IsUnsigned 55 IsFloat 56 IsComplex 57 IsString 58 IsUntyped 59 60 IsOrdered = IsInteger | IsFloat | IsString 61 IsNumeric = IsInteger | IsFloat | IsComplex 62 IsConstType = IsBoolean | IsNumeric | IsString 63 ) 64 65 // A Basic represents a basic type. 66 type Basic struct { 67 kind BasicKind 68 info BasicInfo 69 name string 70 } 71 72 // Kind returns the kind of basic type b. 73 func (b *Basic) Kind() BasicKind { return b.kind } 74 75 // Info returns information about properties of basic type b. 76 func (b *Basic) Info() BasicInfo { return b.info } 77 78 // Name returns the name of basic type b. 79 func (b *Basic) Name() string { return b.name } 80 81 func (b *Basic) Underlying() Type { return b } 82 func (b *Basic) String() string { return TypeString(b, nil) }