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