/// <summary> /// Adds any types and namespaces, imported at the start of the document, to the declarations. /// </summary> private void AddImports(IntellisenseDeclarations declarations, DocumentTreeNode document) { // add imports to declarations foreach (var importNamespace in document.Imports.Keys) { ImportedNamespaceTreeNode importedNodes = document.Imports[importNamespace]; foreach (var member in importedNodes.SourceOrigin.GetMembers(false)) { declarations.Add(member.ToTreeNode()); } declarations.Add(importedNodes); } }
private IntellisenseDeclarations GetScopedIntellisenseDeclarations(int lineNum) { // get the node that the caret is in var scopedParseTree = compiledProject.GetScope(fileName, lineNum); var declarations = new IntellisenseDeclarations(); AddMembersFromScopeTree(declarations, scopedParseTree); AddKeywords(declarations, scopedParseTree); AddImports(declarations, GetDocument(scopedParseTree)); AddReferences(declarations, (ProjectTreeNode)compiledProject.ParseTree); declarations.Sort(); return declarations; }
private void AddReferences(IntellisenseDeclarations declarations, ProjectTreeNode project) { var namespaces = new List<IBooParseTreeNode>(); foreach (var ns in project.ReferencedNamespaces.Keys) { namespaces.Add(project.ReferencedNamespaces[ns]); } declarations.AddRange(namespaces); }
/// <summary> /// Adds members from the current scope (flattened, so all containing scopes are included) to /// the declarations. /// </summary> private void AddMembersFromScopeTree(IntellisenseDeclarations declarations, IBooParseTreeNode scopedParseTree) { var parseTreeFlattener = new BooParseTreeNodeFlatterner(); declarations.AddRange(parseTreeFlattener.FlattenFrom(scopedParseTree)); }
private void AddMemberLookupDeclarations(IntellisenseDeclarations declarations, string lineSource, int line) { var members = GetMembersFromCurrentScope(line, lineSource); members.ForEach(e => { IBooParseTreeNode node = e.ToTreeNode(); if (node != null) declarations.Add(node); }); declarations.Sort(); }
/// <summary> /// Adds keywords based on the current scope to the declarations. /// </summary> private void AddKeywords(IntellisenseDeclarations declarations, IBooParseTreeNode scopedParseTree) { var keywords = new TypeKeywordResolver(); declarations.Add(keywords.GetForScope(scopedParseTree)); }
private void AddSpecialTypes(IntellisenseDeclarations declarations) { ISourceOrigin origin = new TypeSourceOrigin(typeof(string)); declarations.Add(origin.ToTreeNode()); }