Tests of various n-ary result function cases.

-- go.mod --
module testdata
go 1.12

-- a/a.go --
package a

func _() {
	println(f1()) //@ inline(re"f1", f1)
}

func f1() (int, int) { return 1, 1 }

-- f1 --
package a

func _() {
	println(1, 1) //@ inline(re"f1", f1)
}

func f1() (int, int) { return 1, 1 }

-- b/b.go --
package b

func _() {
	f2() //@ inline(re"f2", f2)
}

func f2() (int, int) { return 2, 2 }

-- f2 --
package b

func _() {
	_, _ = 2, 2 //@ inline(re"f2", f2)
}

func f2() (int, int) { return 2, 2 }

-- c/c.go --
package c

func _() {
	_, _ = f3() //@ inline(re"f3", f3)
}

func f3() (int, int) { return f3A() }
func f3A() (x, y int)

-- f3 --
package c

func _() {
	_, _ = f3A() //@ inline(re"f3", f3)
}

func f3() (int, int) { return f3A() }
func f3A() (x, y int)

-- d/d.go --
package d

func _() {
	println(-f4()) //@ inline(re"f4", f4)
}

func f4() int { return 2 + 2 }

-- f4 --
package d

func _() {
	println(-(2 + 2)) //@ inline(re"f4", f4)
}

func f4() int { return 2 + 2 }
-- e/e.go --
package e

func _() {
	switch {
	case true:
		a, b := f5() //@ inline(re"f5", f5)
		_, _ = a, b
	}
}

func f5() (int, int) { return 2, 2}

-- f5 --
package e

func _() {
	switch {
	case true:
		a, b := 2, 2 //@ inline(re"f5", f5)
		_, _ = a, b
	}
}

func f5() (int, int) { return 2, 2 }
