]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/compile: add two error position tests for the typechecker
authorTobias Klauser <tklauser@distanz.ch>
Thu, 12 Oct 2017 11:49:49 +0000 (13:49 +0200)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 12 Oct 2017 20:50:20 +0000 (20:50 +0000)
Follow CL 41477 and add two more line position tests for yyerror calls
in the typechecker which are currently not tested.

Update #19683

Change-Id: Iacd865195a3bfba87d8c22655382af267aba47a9
Reviewed-on: https://go-review.googlesource.com/70251
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>

test/method2.go
test/method6.go [new file with mode: 0644]

index e55aee429b4f7c990b4df833f9edfed00883ecac..a45a943156ffab6fa7e106bf3beffe9c4a19c4ff 100644 (file)
@@ -35,3 +35,7 @@ var pv = &v
 
 var _ = pv.val() // ERROR "pv.val undefined"
 var _ = pv.val   // ERROR "pv.val undefined"
+
+func (t *T) g() int { return t.a }
+
+var _ = (T).g() // ERROR "needs pointer receiver|undefined"
diff --git a/test/method6.go b/test/method6.go
new file mode 100644 (file)
index 0000000..20eccce
--- /dev/null
@@ -0,0 +1,22 @@
+// errorcheck
+
+// Copyright 2017 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.
+
+// Verify that pointer method calls are caught during typechecking.
+// Reproducer extracted and adapted from method.go
+
+package foo
+
+type A struct {
+       B
+}
+type B int
+
+func (*B) g() {}
+
+var _ = func() {
+       var a A
+       A(a).g() // ERROR "cannot call pointer method on|cannot take the address of"
+}