github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/types/testdata/check/expr0.go (about) 1 // Copyright 2012 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 // unary expressions 6 7 package expr0 8 9 type mybool bool 10 11 var ( 12 // bool 13 b0 = true 14 b1 bool = b0 15 b2 = !true 16 b3 = !b1 17 b4 bool = !true 18 b5 bool = !b4 19 b6 = +b0 /* ERROR "not defined" */ 20 b7 = -b0 /* ERROR "not defined" */ 21 b8 = ^b0 /* ERROR "not defined" */ 22 b9 = *b0 /* ERROR "cannot indirect" */ 23 b10 = &true /* ERROR "cannot take address" */ 24 b11 = &b0 25 b12 = <-b0 /* ERROR "cannot receive" */ 26 b13 = & & /* ERROR "cannot take address" */ b0 27 b14 = ~ /* ERROR "cannot use ~ outside of interface or type constraint" */ b0 28 29 // byte 30 _ = byte(0) 31 _ = byte(- /* ERROR "overflows" */ 1) 32 _ = - /* ERROR "-byte(1) (constant -1 of type byte) overflows byte" */ byte(1) // test for issue 11367 33 _ = byte /* ERROR "overflows byte" */ (0) - byte(1) 34 _ = ~ /* ERROR "cannot use ~ outside of interface or type constraint (use ^ for bitwise complement)" */ byte(0) 35 36 // int 37 i0 = 1 38 i1 int = i0 39 i2 = +1 40 i3 = +i0 41 i4 int = +1 42 i5 int = +i4 43 i6 = -1 44 i7 = -i0 45 i8 int = -1 46 i9 int = -i4 47 i10 = !i0 /* ERROR "not defined" */ 48 i11 = ^1 49 i12 = ^i0 50 i13 int = ^1 51 i14 int = ^i4 52 i15 = *i0 /* ERROR "cannot indirect" */ 53 i16 = &i0 54 i17 = *i16 55 i18 = <-i16 /* ERROR "cannot receive" */ 56 i19 = ~ /* ERROR "cannot use ~ outside of interface or type constraint (use ^ for bitwise complement)" */ i0 57 58 // uint 59 u0 = uint(1) 60 u1 uint = u0 61 u2 = +1 62 u3 = +u0 63 u4 uint = +1 64 u5 uint = +u4 65 u6 = -1 66 u7 = -u0 67 u8 uint = - /* ERROR "overflows" */ 1 68 u9 uint = -u4 69 u10 = !u0 /* ERROR "not defined" */ 70 u11 = ^1 71 u12 = ^i0 72 u13 uint = ^ /* ERROR "overflows" */ 1 73 u14 uint = ^u4 74 u15 = *u0 /* ERROR "cannot indirect" */ 75 u16 = &u0 76 u17 = *u16 77 u18 = <-u16 /* ERROR "cannot receive" */ 78 u19 = ^uint(0) 79 u20 = ~ /* ERROR "cannot use ~ outside of interface or type constraint (use ^ for bitwise complement)" */ u0 80 81 // float64 82 f0 = float64(1) 83 f1 float64 = f0 84 f2 = +1 85 f3 = +f0 86 f4 float64 = +1 87 f5 float64 = +f4 88 f6 = -1 89 f7 = -f0 90 f8 float64 = -1 91 f9 float64 = -f4 92 f10 = !f0 /* ERROR "not defined" */ 93 f11 = ^1 94 f12 = ^i0 95 f13 float64 = ^1 96 f14 float64 = ^f4 /* ERROR "not defined" */ 97 f15 = *f0 /* ERROR "cannot indirect" */ 98 f16 = &f0 99 f17 = *u16 100 f18 = <-u16 /* ERROR "cannot receive" */ 101 f19 = ~ /* ERROR "cannot use ~ outside of interface or type constraint" */ f0 102 103 // complex128 104 c0 = complex128(1) 105 c1 complex128 = c0 106 c2 = +1 107 c3 = +c0 108 c4 complex128 = +1 109 c5 complex128 = +c4 110 c6 = -1 111 c7 = -c0 112 c8 complex128 = -1 113 c9 complex128 = -c4 114 c10 = !c0 /* ERROR "not defined" */ 115 c11 = ^1 116 c12 = ^i0 117 c13 complex128 = ^1 118 c14 complex128 = ^c4 /* ERROR "not defined" */ 119 c15 = *c0 /* ERROR "cannot indirect" */ 120 c16 = &c0 121 c17 = *u16 122 c18 = <-u16 /* ERROR "cannot receive" */ 123 c19 = ~ /* ERROR "cannot use ~ outside of interface or type constraint" */ c0 124 125 // string 126 s0 = "foo" 127 s1 = +"foo" /* ERROR "not defined" */ 128 s2 = -s0 /* ERROR "not defined" */ 129 s3 = !s0 /* ERROR "not defined" */ 130 s4 = ^s0 /* ERROR "not defined" */ 131 s5 = *s4 132 s6 = &s4 133 s7 = *s6 134 s8 = <-s7 135 s9 = ~ /* ERROR "cannot use ~ outside of interface or type constraint" */ s0 136 137 // channel 138 ch chan int 139 rc <-chan float64 140 sc chan <- string 141 ch0 = +ch /* ERROR "not defined" */ 142 ch1 = -ch /* ERROR "not defined" */ 143 ch2 = !ch /* ERROR "not defined" */ 144 ch3 = ^ch /* ERROR "not defined" */ 145 ch4 = *ch /* ERROR "cannot indirect" */ 146 ch5 = &ch 147 ch6 = *ch5 148 ch7 = <-ch 149 ch8 = <-rc 150 ch9 = <-sc /* ERROR "cannot receive" */ 151 ch10, ok = <-ch 152 // ok is of type bool 153 ch11, myok = <-ch 154 _ mybool = myok /* ERRORx `cannot use .* in variable declaration` */ 155 ch12 = ~ /* ERROR "cannot use ~ outside of interface or type constraint" */ ch 156 157 ) 158 159 // address of composite literals 160 type T struct{x, y int} 161 162 func f() T { return T{} } 163 164 var ( 165 _ = &T{1, 2} 166 _ = &[...]int{} 167 _ = &[]int{} 168 _ = &[]int{} 169 _ = &map[string]T{} 170 _ = &(T{1, 2}) 171 _ = &((((T{1, 2})))) 172 _ = &f /* ERROR "cannot take address" */ () 173 ) 174 175 // recursive pointer types 176 type P *P 177 178 var ( 179 p1 P = new(P) 180 p2 P = *p1 181 p3 P = &p2 182 ) 183 184 func g() (a, b int) { return } 185 186 func _() { 187 _ = -g /* ERROR "multiple-value g" */ () 188 _ = <-g /* ERROR "multiple-value g" */ () 189 } 190 191 // ~ is accepted as unary operator only permitted in interface type elements 192 var ( 193 _ = ~ /* ERROR "cannot use ~ outside of interface or type constraint" */ 0 194 _ = ~ /* ERROR "cannot use ~ outside of interface or type constraint" */ "foo" 195 _ = ~ /* ERROR "cannot use ~ outside of interface or type constraint" */ i0 196 )