diff options
| author | Russ Cox <rsc@golang.org> | 2010-06-08 18:50:02 -0700 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2010-06-08 18:50:02 -0700 |
| commit | 0b814afd0a2fa1dded3eaf4d2f79b20438842955 (patch) | |
| tree | 19d1ab733d194831a2bf78d352fc92bb71e86f7a /test/interface/receiver1.go | |
| parent | 11704e355aa8f39669a36fe56c01d17deab60658 (diff) | |
| download | golang-0b814afd0a2fa1dded3eaf4d2f79b20438842955.tar.gz | |
gc: new typechecking rules
* Code for assignment, conversions now mirrors spec.
* Changed some snprint -> smprint.
* Renamed runtime functions to separate
interface conversions from type assertions:
convT2I, assertI2T, etc.
* Correct checking of \U sequences.
Fixes issue 840.
Fixes issue 830.
Fixes issue 778.
R=ken2
CC=golang-dev
http://codereview.appspot.com/1303042
Diffstat (limited to 'test/interface/receiver1.go')
| -rw-r--r-- | test/interface/receiver1.go | 71 |
1 files changed, 40 insertions, 31 deletions
diff --git a/test/interface/receiver1.go b/test/interface/receiver1.go index 8ce96424e..51312d000 100644 --- a/test/interface/receiver1.go +++ b/test/interface/receiver1.go @@ -9,41 +9,50 @@ package main type T int + func (t T) V() func (t *T) P() -type V interface { V() } -type P interface { P(); V() } +type V interface { + V() +} +type P interface { + P() + V() +} -type S struct { T; } -type SP struct { *T; } +type S struct { + T +} +type SP struct { + *T +} func main() { - var t T; - var v V; - var p P; - var s S; - var sp SP; - - v = t; - p = t; // ERROR "is not|requires a pointer" - _, _= v, p; - v = &t; - p = &t; - _, _= v, p; - - v = s; - p = s; // ERROR "is not|requires a pointer" - _, _= v, p; - v = &s; - p = &s; - _, _= v, p; - - v = sp; - p = sp; // no error! - _, _= v, p; - v = &sp; - p = &sp; - _, _= v, p; + var t T + var v V + var p P + var s S + var sp SP + + v = t + p = t // ERROR "does not implement|requires a pointer" + _, _ = v, p + v = &t + p = &t + _, _ = v, p + + v = s + p = s // ERROR "does not implement|requires a pointer" + _, _ = v, p + v = &s + p = &s + _, _ = v, p + + v = sp + p = sp // no error! + _, _ = v, p + v = &sp + p = &sp + _, _ = v, p } - |
