aboutsummaryrefslogtreecommitdiff
path: root/src/go/types/testdata/issue28251.src
blob: cd79e0e8b5d299e905628654369e8df0db5477fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// Copyright 2018 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.

// This file contains test cases for various forms of
// method receiver declarations, per the spec clarification
// https://golang.org/cl/142757.

package issue28251

// test case from issue28251
type T struct{}

type T0 = *T

func (T0) m() {}

func _() { (&T{}).m() }

// various alternative forms
type (
        T1 = (((T)))
)

func ((*(T1))) m1() {}
func _() { (T{}).m2() }
func _() { (&T{}).m2() }

type (
        T2 = (((T3)))
        T3 = T
)

func (T2) m2() {}
func _() { (T{}).m2() }
func _() { (&T{}).m2() }

type (
        T4 = ((*(T5)))
        T5 = T
)

func (T4) m4() {}
func _() { (T{}).m4 /* ERROR "cannot call pointer method m4 on T" */ () }
func _() { (&T{}).m4() }

type (
        T6 = (((T7)))
        T7 = (*(T8))
        T8 = T
)

func (T6) m6() {}
func _() { (T{}).m6 /* ERROR "cannot call pointer method m6 on T" */ () }
func _() { (&T{}).m6() }

type (
        T9 = *T10
        T10 = *T11
        T11 = T
)

func (T9 /* ERROR invalid receiver \*\*T */ ) m9() {}
func _() { (T{}).m9 /* ERROR has no field or method m9 */ () }
func _() { (&T{}).m9 /* ERROR has no field or method m9 */ () }