1// run
2
3// Copyright 2009 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7package main
8
9type Element interface {
10}
11
12type Vector struct {
13	elem []Element;
14}
15
16func (v *Vector) At(i int) Element {
17	return v.elem[i];
18}
19
20type TStruct struct {
21	name string;
22	fields *Vector;
23}
24
25func (s *TStruct) field(i int) *TStruct {
26	return s.fields.At(i).(*TStruct);
27}
28
29func main() {
30	v := new(Vector);
31	v.elem = make([]Element, 10);
32	t := new(TStruct);
33	t.name = "hi";
34	v.elem[0] = t;
35	s := new(TStruct);
36	s.name = "foo";
37	s.fields = v;
38	if s.field(0).name != "hi" {
39		panic("bad name")
40	}
41}
42