1//gofmt -r=(x)->x 2 3// Copyright 2012 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7// Rewriting of parenthesized expressions (x) -> x 8// must not drop parentheses if that would lead to 9// wrong association of the operands. 10// Was issue 1847. 11 12package main 13 14// From example 1 of issue 1847. 15func _() { 16 var t = (&T{1000}).Id() 17} 18 19// From example 2 of issue 1847. 20func _() { 21 fmt.Println((*xpp).a) 22} 23 24// Some more test cases. 25func _() { 26 _ = (-x).f 27 _ = (*x).f 28 _ = (&x).f 29 _ = (!x).f 30 _ = (-x.f) 31 _ = (*x.f) 32 _ = (&x.f) 33 _ = (!x.f) 34 (-x).f() 35 (*x).f() 36 (&x).f() 37 (!x).f() 38 _ = (-x.f()) 39 _ = (*x.f()) 40 _ = (&x.f()) 41 _ = (!x.f()) 42 43 _ = ((-x)).f 44 _ = ((*x)).f 45 _ = ((&x)).f 46 _ = ((!x)).f 47 _ = ((-x.f)) 48 _ = ((*x.f)) 49 _ = ((&x.f)) 50 _ = ((!x.f)) 51 ((-x)).f() 52 ((*x)).f() 53 ((&x)).f() 54 ((!x)).f() 55 _ = ((-x.f())) 56 _ = ((*x.f())) 57 _ = ((&x.f())) 58 _ = ((!x.f())) 59 60 _ = -(x).f 61 _ = *(x).f 62 _ = &(x).f 63 _ = !(x).f 64 _ = -x.f 65 _ = *x.f 66 _ = &x.f 67 _ = !x.f 68 _ = -(x).f() 69 _ = *(x).f() 70 _ = &(x).f() 71 _ = !(x).f() 72 _ = -x.f() 73 _ = *x.f() 74 _ = &x.f() 75 _ = !x.f() 76} 77