diff options
author | Russ Cox <rsc@golang.org> | 2010-07-15 15:17:42 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-07-15 15:17:42 -0700 |
commit | 8536d0e602e9175c9cddd99ae89ed67ee2e6262c (patch) | |
tree | 7a8d9d9114f216b750ca787457b9841cb6c45527 | |
parent | f99c623082c65374f3282f2abb6f8a88e7ebca88 (diff) | |
download | go-8536d0e602e9175c9cddd99ae89ed67ee2e6262c.tar.gz |
gc: bug291
Fixes issue 915.
R=ken2
CC=golang-dev
http://codereview.appspot.com/1856042
-rw-r--r-- | src/cmd/gc/sinit.c | 10 | ||||
-rw-r--r-- | test/fixedbugs/bug291.go | 23 | ||||
-rw-r--r-- | test/golden.out | 3 |
3 files changed, 25 insertions, 11 deletions
diff --git a/src/cmd/gc/sinit.c b/src/cmd/gc/sinit.c index 5ac14a537..e984e99c3 100644 --- a/src/cmd/gc/sinit.c +++ b/src/cmd/gc/sinit.c @@ -92,15 +92,9 @@ init1(Node *n, NodeList **out) break; case OAS2FUNC: - if(n->defn->initorder) - break; - n->defn->initorder = 1; - for(l=n->defn->rlist; l; l=l->next) - init1(l->n, out); - *out = list(*out, n->defn); - break; - case OAS2MAPR: + case OAS2DOTTYPE: + case OAS2RECV: if(n->defn->initorder) break; n->defn->initorder = 1; diff --git a/test/fixedbugs/bug291.go b/test/fixedbugs/bug291.go new file mode 100644 index 000000000..09334c921 --- /dev/null +++ b/test/fixedbugs/bug291.go @@ -0,0 +1,23 @@ +// $G $D/$F.go && $L $F.$A && ./$A.out + +// Copyright 2010 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. + +// http://code.google.com/p/go/issues/detail?id=915 + +package main + +type T struct { + x int +} + +var t = &T{42} +var i interface{} = t +var tt, ok = i.(*T) + +func main() { + if tt == nil || tt.x != 42 { + println("BUG") + } +} diff --git a/test/golden.out b/test/golden.out index 1bed6599a..49bca4b87 100644 --- a/test/golden.out +++ b/test/golden.out @@ -177,6 +177,3 @@ panic PC=xxx =========== bugs/bug260.go FAIL BUG: bug260 failed - -=========== bugs/bug274.go -BUG: errchk: command succeeded unexpectedly |