| // Copyright 2012 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. |
| |
| // Rewriting of parenthesized expressions (x) -> x |
| // must not drop parentheses if that would lead to |
| // wrong association of the operands. |
| // Was issue 1847. |
| |
| package main |
| |
| // From example 1 of issue 1847. |
| func _() { |
| var t = (&T{1000}).Id() |
| } |
| |
| // From example 2 of issue 1847. |
| func _() { |
| fmt.Println((*xpp).a) |
| } |
| |
| // Some more test cases. |
| func _() { |
| _ = (-x).f |
| _ = (*x).f |
| _ = (&x).f |
| _ = (!x).f |
| _ = (-x.f) |
| _ = (*x.f) |
| _ = (&x.f) |
| _ = (!x.f) |
| (-x).f() |
| (*x).f() |
| (&x).f() |
| (!x).f() |
| _ = (-x.f()) |
| _ = (*x.f()) |
| _ = (&x.f()) |
| _ = (!x.f()) |
| |
| _ = ((-x)).f |
| _ = ((*x)).f |
| _ = ((&x)).f |
| _ = ((!x)).f |
| _ = ((-x.f)) |
| _ = ((*x.f)) |
| _ = ((&x.f)) |
| _ = ((!x.f)) |
| ((-x)).f() |
| ((*x)).f() |
| ((&x)).f() |
| ((!x)).f() |
| _ = ((-x.f())) |
| _ = ((*x.f())) |
| _ = ((&x.f())) |
| _ = ((!x.f())) |
| |
| _ = -(x).f |
| _ = *(x).f |
| _ = &(x).f |
| _ = !(x).f |
| _ = -x.f |
| _ = *x.f |
| _ = &x.f |
| _ = !x.f |
| _ = -(x).f() |
| _ = *(x).f() |
| _ = &(x).f() |
| _ = !(x).f() |
| _ = -x.f() |
| _ = *x.f() |
| _ = &x.f() |
| _ = !x.f() |
| } |