// Copyright 2009 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 expressions type T struct { x, y, z int } var ( a, b, c, d, e int under_bar int longIdentifier1, longIdentifier2, longIdentifier3 int t0, t1, t2 T s string p *int ) func _() { // no spaces around simple or parenthesized expressions _ = (a + 0) _ = a + b _ = a + b + c _ = a + b - c _ = a - b - c _ = a + (b * c) _ = a + (b / c) _ = a - (b % c) _ = 1 + a _ = a + 1 _ = a + b + 1 _ = s[a] _ = s[a:] _ = s[:b] _ = s[1:2] _ = s[a:b] _ = s[0:len(s)] _ = s[0] << 1 _ = (s[0] << 1) & 0xf _ = s[0]<<2 | s[1]>>4 _ = "foo" + s _ = s + "foo" _ = 'a' + 'b' _ = len(s) / 2 _ = len(t0.x) / a // spaces around expressions of different precedence or expressions containing spaces _ = a + -b _ = a - ^b _ = a / *p _ = a + b*c _ = 1 + b*c _ = a + 2*c _ = a + c*2 _ = 1 + 2*3 _ = s[1 : 2*3] _ = s[a : b-c] _ = s[0:] _ = s[a+b] _ = s[:b-c] _ = s[a+b:] _ = a[a< b _ = a >= b _ = a < b _ = a <= b _ = a < b && c > d _ = a < b || c > d // spaces around "long" operands _ = a + longIdentifier1 _ = longIdentifier1 + a _ = longIdentifier1 + longIdentifier2*longIdentifier3 _ = s + "a longer string" // some selected cases _ = a + t0.x _ = a + t0.x + t1.x*t2.x _ = a + b + c + d + e + 2*3 _ = a + b + c + 2*3 + d + e _ = (a + b + c) * 2 _ = a - b + c - d + (a + b + c) + d&e _ = under_bar - 1 _ = Open(dpath+"/file", O_WRONLY|O_CREAT, 0666) _ = int(c0&_Mask4)<<18 | int(c1&_Maskx)<<12 | int(c2&_Maskx)<<6 | int(c3&_Maskx) // test case for issue 8021 // want: // ([]bool{})[([]int{})[((1)+(((1)+((((1)*(((1)+(1))+(1)))+(1))*(1)))+(1)))]] _ = ([]bool{})[([]int{})[((1)+(((1)+((((1)*(((1)+(1))+(1)))+(1))*(1)))+(1)))]] // the parser does not restrict expressions that may appear as statements true 42 "foo" x (x) a + b a + b + c a + (b * c) a + (b / c) 1 + a a + 1 s[a] x << 1 (s[0] << 1) & 0xf "foo" + s x == y x < y || z > 42 } // slice expressions with cap func _() { _ = x[a:b:c] _ = x[a : b : c+d] _ = x[a : b+d : c] _ = x[a : b+d : c+d] _ = x[a+d : b : c] _ = x[a+d : b : c+d] _ = x[a+d : b+d : c] _ = x[a+d : b+d : c+d] _ = x[:b:c] _ = x[: b : c+d] _ = x[: b+d : c] _ = x[: b+d : c+d] } func issue22111() { _ = x[:] _ = x[:b] _ = x[:b+1] _ = x[a:] _ = x[a+1:] _ = x[a:b] _ = x[a+1 : b] _ = x[a : b+1] _ = x[a+1 : b+1] _ = x[:b:c] _ = x[: b+1 : c] _ = x[: b : c+1] _ = x[: b+1 : c+1] _ = x[a:b:c] _ = x[a+1 : b : c] _ = x[a : b+1 : c] _ = x[a+1 : b+1 : c] _ = x[a : b : c+1] _ = x[a+1 : b : c+1] _ = x[a : b+1 : c+1] _ = x[a+1 : b+1 : c+1] } func _() { _ = a + b _ = a + b + c _ = a + b*c _ = a + (b * c) _ = (a + b) * c _ = a + (b * c * d) _ = a + (b*c + d) _ = 1 << x _ = -1 << x _ = 1<>4 b.buf = b.buf[0 : b.off+m+n] b.buf = b.buf[0 : b.off+m*n] f(b.buf[0 : b.off+m+n]) signed += ' ' * 8 tw.octal(header[148:155], chksum) _ = x > 0 && i >= 0 x1, x0 := x>>w2, x&m2 z0 = t1<>w2) >> w2 q1, r1 := x1/d1, x1%d1 r1 = r1*b2 | x0>>w2 x1 = (x1 << z) | (x0 >> (uint(w) - z)) x1 = x1<>(uint(w)-z) _ = buf[0 : len(buf)+1] _ = buf[0 : n+1] a, b = b, a a = b + c a = b*c + d _ = a*b + c _ = a - b - c _ = a - (b - c) _ = a - b*c _ = a - (b * c) _ = a * b / c _ = a / *b _ = x[a|^b] _ = x[a / *b] _ = a & ^b _ = a + +b _ = a - -b _ = x[a*-b] _ = x[a + +b] _ = x ^ y ^ z _ = b[a>>24] ^ b[(a>>16)&0xFF] ^ b[(a>>8)&0xFF] ^ b[a&0xFF] _ = len(longVariableName) * 2 _ = token(matchType + xlength<