1 //
2 // Copyright (c) 2006, Brian Frank and Andy Frank
3 // Licensed under the Academic Free License version 3.0
4 //
5 // History:
6 // 5 Jul 06 Brian Frank Creation
7 //
8
9 **
10 ** TypeRef models a type reference such as an extends clause or a
11 ** method parameter. Really it is just an AST node wrapper for a
12 ** CType that let's us keep track of the source code Location.
13 **
14 class TypeRef : Node, CType
15 {
16
17 //////////////////////////////////////////////////////////////////////////
18 // Construction
19 //////////////////////////////////////////////////////////////////////////
20
21 new make(Location location, CType t)
22 : super(location)
23 {
24 this.t = t
25 }
26
27 //////////////////////////////////////////////////////////////////////////
28 // CType
29 //////////////////////////////////////////////////////////////////////////
30
31 override Namespace ns() { return t.ns }
32 override CPod pod() { return t.pod }
33 override Str name() { return t.name }
34 override Str qname() { return t.qname }
35 override Str signature() { return t.signature }
36 override CType deref() { return t }
37 override Int flags() { return t.flags }
38
39 override CType base() { return t.base }
40 override CType[] mixins() { return t.mixins }
41 override Bool fits(CType that) { return t.fits(that) }
42
43 override Bool isGeneric() { return t.isGeneric }
44 override Bool isParameterized() { return t.isParameterized }
45 override Bool isGenericParameter() { return t.isGenericParameter }
46 override ListType toListOf() { return t.toListOf }
47
48 override Str:CSlot slots() { return t.slots }
49
50 override Str toStr() { return signature }
51
52 //////////////////////////////////////////////////////////////////////////
53 // Debug
54 //////////////////////////////////////////////////////////////////////////
55
56 override Void print(AstWriter out)
57 {
58 out.w(t.toStr)
59 }
60
61 //////////////////////////////////////////////////////////////////////////
62 // Fields
63 //////////////////////////////////////////////////////////////////////////
64
65 readonly CType t
66
67 }
2 // Copyright (c) 2006, Brian Frank and Andy Frank
3 // Licensed under the Academic Free License version 3.0
4 //
5 // History:
6 // 5 Jul 06 Brian Frank Creation
7 //
8
9 **
10 ** TypeRef models a type reference such as an extends clause or a
11 ** method parameter. Really it is just an AST node wrapper for a
12 ** CType that let's us keep track of the source code Location.
13 **
14 class TypeRef : Node, CType
15 {
16
17 //////////////////////////////////////////////////////////////////////////
18 // Construction
19 //////////////////////////////////////////////////////////////////////////
20
21 new make(Location location, CType t)
22 : super(location)
23 {
24 this.t = t
25 }
26
27 //////////////////////////////////////////////////////////////////////////
28 // CType
29 //////////////////////////////////////////////////////////////////////////
30
31 override Namespace ns() { return t.ns }
32 override CPod pod() { return t.pod }
33 override Str name() { return t.name }
34 override Str qname() { return t.qname }
35 override Str signature() { return t.signature }
36 override CType deref() { return t }
37 override Int flags() { return t.flags }
38
39 override CType base() { return t.base }
40 override CType[] mixins() { return t.mixins }
41 override Bool fits(CType that) { return t.fits(that) }
42
43 override Bool isGeneric() { return t.isGeneric }
44 override Bool isParameterized() { return t.isParameterized }
45 override Bool isGenericParameter() { return t.isGenericParameter }
46 override ListType toListOf() { return t.toListOf }
47
48 override Str:CSlot slots() { return t.slots }
49
50 override Str toStr() { return signature }
51
52 //////////////////////////////////////////////////////////////////////////
53 // Debug
54 //////////////////////////////////////////////////////////////////////////
55
56 override Void print(AstWriter out)
57 {
58 out.w(t.toStr)
59 }
60
61 //////////////////////////////////////////////////////////////////////////
62 // Fields
63 //////////////////////////////////////////////////////////////////////////
64
65 readonly CType t
66
67 }