public override void ResolveTopLevelElement(string token, ASResult result) { if (topLevel != null && topLevel.Members.Count > 0) { // current class ClassModel inClass = ASContext.Context.CurrentClass; if (token == "this") { result.Member = topLevel.Members.Search("this", 0, 0); if (inClass.IsVoid()) { inClass = ASContext.Context.ResolveType(result.Member.Type, null); } result.Type = inClass; result.InFile = ASContext.Context.CurrentModel; return; } else if (token == "super") { if (inClass.IsVoid()) { MemberModel thisMember = topLevel.Members.Search("this", 0, 0); inClass = ASContext.Context.ResolveType(thisMember.Type, null); } inClass.ResolveExtends(); ClassModel extends = inClass.Extends; if (!extends.IsVoid()) { result.Member = topLevel.Members.Search("super", 0, 0); result.Type = extends; result.InFile = extends.InFile; return; } } else if (token == "global") { return; } // other top-level elements ASComplete.FindMember(token, topLevel, result, 0, 0); if (!result.IsNull()) { return; } } }
static void RenameMember(ClassModel inClass, string name, string newName, bool outputResults) { MemberModel m = inClass.Members.Items.FirstOrDefault(it => it.Name == name); if (m == null) { return; } ASResult result = new ASResult(); ASComplete.FindMember(name, inClass, result, FlagType.Dynamic | FlagType.Function, 0); if (result.Member == null) { return; } queue.Add(new Rename(result, outputResults, newName)); }
internal static ASResult FindGetterSetter(ASResult target, string name) { var inClass = target.InClass; var members = inClass.Members.Items; for (int i = 0, length = members.Count; i < length; i++) { var member = members[i]; if (member.Name == name) { var result = new ASResult(); ASComplete.FindMember(name, inClass, result, FlagType.Dynamic | FlagType.Function, 0); if (result.Member != null) { return(result); } } } return(null); }