override public Symbol Lookup(InputElement id, MessageWriter msg) { MethodSuite methods = null; int i = 0; for (InterfaceType c = this; c != null; c = i < interfaces.Count ? interfaces[i++] : null) { Symbol t = c.members[id.str]; if (t != null && t is MethodSuite) { if (methods == null) { methods = new MethodSuite(t.id); } // add methods in t to methods foreach (Method m in ((MethodSuite)t).methods) { if (methods.Contains(m.signature) == null) { methods.Add(m); } } } else if (t != null && methods == null) { return(t); } } if (methods != null) { return(methods); } return(declSpace.Owner.Lookup(id, msg)); }
public virtual Method AddMethod(InputElement id, MessageWriter msg) { MethodSuite t = members[id.str] as MethodSuite; if (t == null) { t = new MethodSuite(id, members); t.Add(id, msg); } return(t.Add(new Method(id, members))); }
public virtual Constructor AddConstructor(InputElement id, MessageWriter msg) { MethodSuite t = members[id.str] as MethodSuite; if (t == null) { t = new MethodSuite(id, members); t.Add(id, msg); } return((Constructor)t.Add(new Constructor(id, members))); }
public virtual Method FindMethod(string name, params Type[] args) { for (ClassType c = this; c != null; c = c.baseClass) { Method m; MethodSuite t = c.members[name] as MethodSuite; if (t != null && (m = t.FindMethod(args)) != null) { return(m); } } return(null); }
DelegateType GetDelegate(MetaDataTypeDefinition d, SymbolTable bindings, string path) { DelegateType t = new DelegateType(new InputElement(d.Name), bindings); bindings.Add(t.Name, t); FillIn(t, d, path); MethodSuite m = t.members["Invoke"] as MethodSuite; if (m != null && m.Count == 1) { t.invoke = m[0]; } return(t); }
DelegateType GetDelegate(System.Type type, SymbolTable bindings) { string name = GetName(type); DelegateType t = new DelegateType(new InputElement(name), bindings); bindings.Add(t.Name, t); FillIn(t, type); MethodSuite m = t.members["Invoke"] as MethodSuite; if (m != null && m.Count == 1) { t.invoke = m[0]; } return(t); }
override public Symbol Lookup(InputElement id, MessageWriter msg) { MethodSuite methods = null; for (ClassType c = this; c != null; c = c.baseClass) { if (methods == null && id.str == c.id.str) { return(c); } Symbol t = c.members[id.str]; if (t != null && t.Is("override")) { t = null; } if (t != null && t is MethodSuite) { if (methods == null) { methods = new MethodSuite(t.id); } // add methods in t to methods foreach (Method m in ((MethodSuite)t).methods) { if (methods.Contains(m.signature) == null) { methods.Add(m); } } } else if (t != null && methods == null) { return(t); } } if (methods != null) { return(methods); } return(declSpace.Owner.Lookup(id, msg)); }