| // Copyright 2012 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. |
| |
| // unary expressions |
| |
| package expr0 |
| |
| type mybool bool |
| |
| var ( |
| // bool |
| b0 = true |
| b1 bool = b0 |
| b2 = !true |
| b3 = !b1 |
| b4 bool = !true |
| b5 bool = !b4 |
| b6 = +b0 /* ERROR "not defined" */ |
| b7 = -b0 /* ERROR "not defined" */ |
| b8 = ^b0 /* ERROR "not defined" */ |
| b9 = *b0 /* ERROR "cannot indirect" */ |
| b10 = &true /* ERROR "cannot take address" */ |
| b11 = &b0 |
| b12 = <-b0 /* ERROR "cannot receive" */ |
| b13 = & & /* ERROR "cannot take address" */ b0 |
| |
| // byte |
| _ = byte(0) |
| _ = byte(- /* ERROR "cannot convert" */ 1) |
| _ = - /* ERROR "-byte\(1\) \(constant -1 of type byte\) overflows byte" */ byte(1) // test for issue 11367 |
| _ = byte /* ERROR "overflows byte" */ (0) - byte(1) |
| |
| // int |
| i0 = 1 |
| i1 int = i0 |
| i2 = +1 |
| i3 = +i0 |
| i4 int = +1 |
| i5 int = +i4 |
| i6 = -1 |
| i7 = -i0 |
| i8 int = -1 |
| i9 int = -i4 |
| i10 = !i0 /* ERROR "not defined" */ |
| i11 = ^1 |
| i12 = ^i0 |
| i13 int = ^1 |
| i14 int = ^i4 |
| i15 = *i0 /* ERROR "cannot indirect" */ |
| i16 = &i0 |
| i17 = *i16 |
| i18 = <-i16 /* ERROR "cannot receive" */ |
| |
| // uint |
| u0 = uint(1) |
| u1 uint = u0 |
| u2 = +1 |
| u3 = +u0 |
| u4 uint = +1 |
| u5 uint = +u4 |
| u6 = -1 |
| u7 = -u0 |
| u8 uint = - /* ERROR "overflows" */ 1 |
| u9 uint = -u4 |
| u10 = !u0 /* ERROR "not defined" */ |
| u11 = ^1 |
| u12 = ^i0 |
| u13 uint = ^ /* ERROR "overflows" */ 1 |
| u14 uint = ^u4 |
| u15 = *u0 /* ERROR "cannot indirect" */ |
| u16 = &u0 |
| u17 = *u16 |
| u18 = <-u16 /* ERROR "cannot receive" */ |
| u19 = ^uint(0) |
| |
| // float64 |
| f0 = float64(1) |
| f1 float64 = f0 |
| f2 = +1 |
| f3 = +f0 |
| f4 float64 = +1 |
| f5 float64 = +f4 |
| f6 = -1 |
| f7 = -f0 |
| f8 float64 = -1 |
| f9 float64 = -f4 |
| f10 = !f0 /* ERROR "not defined" */ |
| f11 = ^1 |
| f12 = ^i0 |
| f13 float64 = ^1 |
| f14 float64 = ^f4 /* ERROR "not defined" */ |
| f15 = *f0 /* ERROR "cannot indirect" */ |
| f16 = &f0 |
| f17 = *u16 |
| f18 = <-u16 /* ERROR "cannot receive" */ |
| |
| // complex128 |
| c0 = complex128(1) |
| c1 complex128 = c0 |
| c2 = +1 |
| c3 = +c0 |
| c4 complex128 = +1 |
| c5 complex128 = +c4 |
| c6 = -1 |
| c7 = -c0 |
| c8 complex128 = -1 |
| c9 complex128 = -c4 |
| c10 = !c0 /* ERROR "not defined" */ |
| c11 = ^1 |
| c12 = ^i0 |
| c13 complex128 = ^1 |
| c14 complex128 = ^c4 /* ERROR "not defined" */ |
| c15 = *c0 /* ERROR "cannot indirect" */ |
| c16 = &c0 |
| c17 = *u16 |
| c18 = <-u16 /* ERROR "cannot receive" */ |
| |
| // string |
| s0 = "foo" |
| s1 = +"foo" /* ERROR "not defined" */ |
| s2 = -s0 /* ERROR "not defined" */ |
| s3 = !s0 /* ERROR "not defined" */ |
| s4 = ^s0 /* ERROR "not defined" */ |
| s5 = *s4 |
| s6 = &s4 |
| s7 = *s6 |
| s8 = <-s7 |
| |
| // channel |
| ch chan int |
| rc <-chan float64 |
| sc chan <- string |
| ch0 = +ch /* ERROR "not defined" */ |
| ch1 = -ch /* ERROR "not defined" */ |
| ch2 = !ch /* ERROR "not defined" */ |
| ch3 = ^ch /* ERROR "not defined" */ |
| ch4 = *ch /* ERROR "cannot indirect" */ |
| ch5 = &ch |
| ch6 = *ch5 |
| ch7 = <-ch |
| ch8 = <-rc |
| ch9 = <-sc /* ERROR "cannot receive" */ |
| ch10, ok = <-ch |
| // ok is of type bool |
| ch11, myok = <-ch |
| _ mybool = myok /* ERROR "cannot use .* in variable declaration" */ |
| ) |
| |
| // address of composite literals |
| type T struct{x, y int} |
| |
| func f() T { return T{} } |
| |
| var ( |
| _ = &T{1, 2} |
| _ = &[...]int{} |
| _ = &[]int{} |
| _ = &[]int{} |
| _ = &map[string]T{} |
| _ = &(T{1, 2}) |
| _ = &((((T{1, 2})))) |
| _ = &f /* ERROR "cannot take address" */ () |
| ) |
| |
| // recursive pointer types |
| type P *P |
| |
| var ( |
| p1 P = new(P) |
| p2 P = *p1 |
| p3 P = &p2 |
| ) |
| |
| func g() (a, b int) { return } |
| |
| func _() { |
| _ = -g /* ERROR 2-valued g */ () |
| _ = <-g /* ERROR 2-valued g */ () |
| } |