...
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}
View as plain text