// 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()
}
