Ejemplo n.º 1
0
        /// <summary>
        /// Get global/local declaration of element, if exists.
        /// </summary>
        /// <param name="element">CodeElement.</param>
        /// <param name="parentElement">Parent of CodeElement.</param>
        /// <returns>Return null if global declaration not found else the specified Variable.</returns>
        private CodeElement GetDeclaration(CodeElement element, CodeElement parentElement)
        {
            var codeDomElement = element as ICodeDomElement;

            if (codeDomElement != null && codeDomElement.ParentElement is LuaCodeClass)
            {
                return(element);
            }
            var parent = LuaCodeDomNavigator.GetParentElement(element as ICodeDomElement);

            if (parent is LuaCodeFunction)//Check for local declaration
            {
                var navigator = new LuaCodeDomNavigator(parent);
                codeElements = new List <SimpleCodeElement>(
                    navigator.WalkMembers <LuaCodeVariable>());
                CodeElement declaration;
                if (codeElements.Count > 0)
                {
                    declaration = codeElements.FirstOrDefault(child => child.Name == element.Name);
                    if (declaration != null)
                    {
                        CheckLocalDeclaration(declaration as LuaCodeVariable);
                        return(declaration);
                    }
                }
                //Check for parameter declaration
                declaration = ((LuaCodeFunction)parent).Parameters.OfType <LuaCodeElement <Identifier> >()
                              .FirstOrDefault(parameter => parameter.Name == element.Name);
                if (declaration != null)
                {
                    IsLocalDeclaration  = true;
                    isFunctionParameter = true;
                    return(declaration);
                }
                parent = LuaCodeDomNavigator.GetParentElement(parent as ICodeDomElement);
            }
            if (parent is LuaCodeClass)//Check for global declaration
            {
                var navigator = new LuaCodeDomNavigator(parentElement);
                codeElements = new List <SimpleCodeElement>(navigator.WalkTopLevelMembers <LuaCodeVariable>());

                if (codeElements.Count > 0)
                {
                    var declaration = codeElements.FirstOrDefault(child => child.Name == element.Name);

                    CheckLocalDeclaration(declaration as LuaCodeVariable);

                    return(declaration);
                }
            }
            return(null);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Get global/local declaration of element, if exists.
        /// </summary>
        /// <param name="elementName">Name of CodeElement.</param>
        /// <param name="parentElement">Parent of CodeElement.</param>
        /// <returns>Return null if global declaration not found else the specified Variable.</returns>
        private CodeElement GetDeclaration(string elementName, CodeElement parentElement)
        {
            var navigator = new LuaCodeDomNavigator(parentElement);

            codeElements = new List <SimpleCodeElement>(
                navigator.WalkTopLevelMembers <LuaCodeVariable>());
            if (codeElements.Count > 0)
            {
                var declaration = codeElements.FirstOrDefault(child => child.Name == elementName);
                CheckLocalDeclaration(declaration as LuaCodeVariable);
                return(declaration);
            }
            return(null);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Finds the conflicts.
        /// </summary>
        /// <param name="element">The element.</param>
        /// <param name="newName">The new name.</param>
        /// <returns></returns>
        public override IEnumerable<CodeElement> FindConflicts(CodeElement element, string newName)
        {
            CodeConflictType = ConflictType.None;
            var elements = new List<CodeElement>();
            var navigator = new LuaCodeDomNavigator(fileCodeModel);
            var results = navigator.WalkTopLevelMembers<LuaCodeFunction>();
            results.ForEach(item =>
                                {
                                    if (element != item && newName == item.Name)
                                    {
                                        elements.Add(item);
                                        CodeConflictType = ConflictType.Function;
                                    }
                                });

            return elements;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Finds the conflicts.
        /// </summary>
        /// <param name="element">The element.</param>
        /// <param name="newName">The new name.</param>
        /// <returns></returns>
        public override IEnumerable <CodeElement> FindConflicts(CodeElement element, string newName)
        {
            CodeConflictType = ConflictType.None;
            var elements  = new List <CodeElement>();
            var navigator = new LuaCodeDomNavigator(fileCodeModel);
            var results   = navigator.WalkTopLevelMembers <LuaCodeFunction>();

            results.ForEach(item =>
            {
                if (element != item && newName == item.Name)
                {
                    elements.Add(item);
                    CodeConflictType = ConflictType.Function;
                }
            });

            return(elements);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Get global/local declaration of element, if exists.
        /// </summary>
        /// <param name="element">CodeElement.</param>
        /// <param name="parentElement">Parent of CodeElement.</param>
        /// <returns>Return null if global declaration not found else the specified Variable.</returns>
        private CodeElement GetDeclaration(CodeElement element, CodeElement parentElement)
        {
            var codeDomElement = element as ICodeDomElement;
            if (codeDomElement != null && codeDomElement.ParentElement is LuaCodeClass)
            {
                return element;
            }
            var parent = LuaCodeDomNavigator.GetParentElement(element as ICodeDomElement);
            if (parent is LuaCodeFunction)//Check for local declaration
            {
                var navigator = new LuaCodeDomNavigator(parent);
                codeElements = new List<SimpleCodeElement>(
                    navigator.WalkMembers<LuaCodeVariable>());
                CodeElement declaration;
                if (codeElements.Count > 0)
                {
                    declaration = codeElements.FirstOrDefault(child => child.Name == element.Name);
                    if (declaration != null)
                    {
                        CheckLocalDeclaration(declaration as LuaCodeVariable);
                        return declaration;
                    }
                }
                //Check for parameter declaration
                declaration = ((LuaCodeFunction) parent).Parameters.OfType<LuaCodeElement<Identifier>>()
                    .FirstOrDefault(parameter => parameter.Name == element.Name);
                if (declaration != null)
                {
                    IsLocalDeclaration = true;
                    isFunctionParameter = true;
                    return declaration;
                }
                parent = LuaCodeDomNavigator.GetParentElement(parent as ICodeDomElement);
            }
            if (parent is LuaCodeClass)//Check for global declaration
            {
                var navigator = new LuaCodeDomNavigator(parentElement);
                codeElements = new List<SimpleCodeElement>(navigator.WalkTopLevelMembers<LuaCodeVariable>());

                if (codeElements.Count > 0)
                {
                    var declaration = codeElements.FirstOrDefault(child => child.Name == element.Name);

                    CheckLocalDeclaration(declaration as LuaCodeVariable);

                    return declaration;
                }
            }
            return null;
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Get global/local declaration of element, if exists.
 /// </summary>
 /// <param name="elementName">Name of CodeElement.</param>
 /// <param name="parentElement">Parent of CodeElement.</param>
 /// <returns>Return null if global declaration not found else the specified Variable.</returns>
 private CodeElement GetDeclaration(string elementName, CodeElement parentElement)
 {
     var navigator = new LuaCodeDomNavigator(parentElement);
     codeElements = new List<SimpleCodeElement>(
         navigator.WalkTopLevelMembers<LuaCodeVariable>());
     if (codeElements.Count > 0)
     {
         var declaration = codeElements.FirstOrDefault(child => child.Name == elementName);
         CheckLocalDeclaration(declaration as LuaCodeVariable);
         return declaration;
     }
     return null;
 }