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;
         }
     }