Mercurial > projects > dang
comparison sema/ScopeBuilder.d @ 168:7982eb63c0eb
Some changes to get function overloading to work. Also class inherit works now - to some extend. needs vtables and all the complex stuff of it.
author | Anders Johnsen <skabet@gmail.com> |
---|---|
date | Thu, 24 Jul 2008 12:06:48 +0200 |
parents | 362265427838 |
children | 01c2c49775ef |
comparison
equal
deleted
inserted
replaced
166:9cfa33517526 | 168:7982eb63c0eb |
---|---|
62 visitExp(d.init); | 62 visitExp(d.init); |
63 | 63 |
64 DType t = typeOf(d.varType, d.env); | 64 DType t = typeOf(d.varType, d.env); |
65 d.sym = current.symbol.createAlias( | 65 d.sym = current.symbol.createAlias( |
66 d.identifier.get, | 66 d.identifier.get, |
67 d.env.find(d.varType.get).sym, | 67 d.env.find(d.varType.get)[0].sym, |
68 d); | 68 d); |
69 d.sym.type = t; | 69 d.sym.type = t; |
70 } | 70 } |
71 | 71 |
72 override void visitStructDecl(StructDecl s) | 72 override void visitStructDecl(StructDecl s) |
129 { | 129 { |
130 auto st = s.env.findType(s.identifier.get).asStruct; | 130 auto st = s.env.findType(s.identifier.get).asStruct; |
131 s.sym = current.symbol.createMember( | 131 s.sym = current.symbol.createMember( |
132 s.identifier.get, | 132 s.identifier.get, |
133 st, | 133 st, |
134 s.env.find(s.identifier.get)); | 134 s.env.find(s.identifier.get)[0]); |
135 | 135 |
136 foreach (decl; s.decls) | 136 foreach (decl; s.decls) |
137 { | 137 { |
138 DType type; | 138 DType type; |
139 char[] name; | 139 char[] name; |
156 { | 156 { |
157 auto st = s.env.findType(s.identifier.get).asClass; | 157 auto st = s.env.findType(s.identifier.get).asClass; |
158 s.sym = current.symbol.createMember( | 158 s.sym = current.symbol.createMember( |
159 s.identifier.get, | 159 s.identifier.get, |
160 st, | 160 st, |
161 s.env.find(s.identifier.get)); | 161 s.env.find(s.identifier.get)[0]); |
162 | 162 |
163 foreach (decl; s.decls) | 163 foreach (decl; s.decls) |
164 { | 164 { |
165 DType type; | 165 DType type; |
166 char[] name; | 166 char[] name; |
183 { | 183 { |
184 auto st = s.env.findType(s.identifier.get).asInterface; | 184 auto st = s.env.findType(s.identifier.get).asInterface; |
185 s.sym = current.symbol.createMember( | 185 s.sym = current.symbol.createMember( |
186 s.identifier.get, | 186 s.identifier.get, |
187 st, | 187 st, |
188 s.env.find(s.identifier.get)); | 188 s.env.find(s.identifier.get)[0]); |
189 | 189 |
190 foreach (decl; s.decls) | 190 foreach (decl; s.decls) |
191 { | 191 { |
192 DType type; | 192 DType type; |
193 char[] name; | 193 char[] name; |