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