summaryrefslogtreecommitdiffstats
path: root/test/fixedbugs/bug054.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/fixedbugs/bug054.go')
-rw-r--r--test/fixedbugs/bug054.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/fixedbugs/bug054.go b/test/fixedbugs/bug054.go
new file mode 100644
index 0000000..0159058
--- /dev/null
+++ b/test/fixedbugs/bug054.go
@@ -0,0 +1,41 @@
+// run
+
+// Copyright 2009 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.
+
+package main
+
+type Element interface {
+}
+
+type Vector struct {
+ elem []Element;
+}
+
+func (v *Vector) At(i int) Element {
+ return v.elem[i];
+}
+
+type TStruct struct {
+ name string;
+ fields *Vector;
+}
+
+func (s *TStruct) field(i int) *TStruct {
+ return s.fields.At(i).(*TStruct);
+}
+
+func main() {
+ v := new(Vector);
+ v.elem = make([]Element, 10);
+ t := new(TStruct);
+ t.name = "hi";
+ v.elem[0] = t;
+ s := new(TStruct);
+ s.name = "foo";
+ s.fields = v;
+ if s.field(0).name != "hi" {
+ panic("bad name")
+ }
+}