Mercurial > projects > dang
diff sema/ScopeCheck.d @ 158:57b0b4464a0b
Parsing "new", putting it in AST and performs some tests on it. Eg. if the contructor exists and the params matches.
author | Anders Johnsen <skabet@gmail.com> |
---|---|
date | Tue, 22 Jul 2008 00:33:58 +0200 |
parents | a14ac9e5c858 |
children | 7982eb63c0eb |
line wrap: on
line diff
--- a/sema/ScopeCheck.d Mon Jul 21 22:14:06 2008 +0200 +++ b/sema/ScopeCheck.d Tue Jul 22 00:33:58 2008 +0200 @@ -80,34 +80,34 @@ auto target = cast(Identifier)m.target; auto child = m.child; auto st = target.getSymbol; - auto res = st.findMember(child.get); + auto res = st.findMembers(child.get); - if(!res) + if(!res.length) messages.report(MissingMember, m.loc) .arg(st.type.name) .arg(target.get) .arg(child.get); else - internalCheckProtection(res, child); + internalCheckProtection(res[0], child); - return res; + return res.length ? res[0] : null; case ExpType.MemberReference: Symbol s = internalVisitMemberRef(cast(MemberReference)m.target); if(!s) return null; auto target = cast(Identifier)m.target; auto child = m.child; - auto res = s.findMember(child.get); + auto res = s.findMembers(child.get); - if(!res) + if(!res.length) messages.report(MissingMember, m.loc) .arg(s.type.name) - .arg(s.getFQN) + .arg(target.get) .arg(child.get); else - internalCheckProtection(res, child); + internalCheckProtection(res[0], child); - return res; + return res.length ? res[0] : null; } }