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 12 package main 13 14 // From example 1 of issue 1847. 15 func _() { 16 var t = (&T{1000}).Id() 17 } 18 19 // From example 2 of issue 1847. 20 func _() { 21 fmt.Println((*xpp).a) 22 } 23 24 // Some more test cases. 25 func _() { 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