コード例 #1
0
ファイル: Context2.cs プロジェクト: mryp/kkefz
        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;
                }
            }
        }
コード例 #2
0
        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));
        }
コード例 #3
0
ファイル: RenamingHelper.cs プロジェクト: KqSMea8/gueslang
        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);
        }