protected void ResolveDeclarations(QualifiedModuleName module, IParseTree tree, CancellationToken token) { var stopwatch = Stopwatch.StartNew(); try { var projectDeclaration = GetOrCreateProjectDeclaration(module); Logger.Debug("Creating declarations for module {0}.", module.Name); var declarationsListener = new DeclarationSymbolsListener(_state, module, _state.GetModuleAnnotations(module), _state.GetModuleAttributes(module), _state.GetMembersAllowingAttributes(module), projectDeclaration); ParseTreeWalker.Default.Walk(declarationsListener, tree); foreach (var createdDeclaration in declarationsListener.CreatedDeclarations) { _state.AddDeclaration(createdDeclaration); } } catch (Exception exception) { Logger.Error(exception, "Exception thrown acquiring declarations for '{0}' (thread {1}).", module.Name, Thread.CurrentThread.ManagedThreadId); _parserStateManager.SetModuleState(module, ParserState.ResolverError, token); } stopwatch.Stop(); Logger.Debug("{0}ms to resolve declarations for component {1}", stopwatch.ElapsedMilliseconds, module.Name); }
public void CreateProjectDeclarations(IReadOnlyCollection <string> projectIds) { var existingProjectDeclarations = ProjectDeclarations(); foreach (var projectId in projectIds) { if (existingProjectDeclarations.ContainsKey(projectId)) { continue; } var projectDeclaration = CreateProjectDeclaration(projectId); _state.AddDeclaration(projectDeclaration); } }
private void AddNewUndeclaredVariablesToDeclarations() { var undeclared = _state.DeclarationFinder.FreshUndeclared; foreach (var declaration in undeclared) { _state.AddDeclaration(declaration); } }
private static void AddTestLibrary(RubberduckParserState state, SerializableProject deserialized) { var declarations = deserialized.Unwrap(); foreach (var declaration in declarations) { state.AddDeclaration(declaration); } }
private static void AddTestLibrary(RubberduckParserState state, SerializableProject deserialized) { var declarations = deserialized.Unwrap(); foreach (var members in declarations.Where(d => d.DeclarationType != DeclarationType.Project && d.ParentDeclaration.DeclarationType == DeclarationType.ClassModule && ProceduralTypes.Contains(d.DeclarationType)) .GroupBy(d => d.ParentDeclaration)) { state.CoClasses.TryAdd(members.Select(m => m.IdentifierName).ToList(), members.First().ParentDeclaration); } foreach (var declaration in declarations) { state.AddDeclaration(declaration); } }
private void LoadProjects(IEnumerable <string> projectIds) { foreach (var projectId in projectIds) { var comProject = _userComProjectProvider.UserProject(projectId); if (comProject == null) { continue; } var declarations = _declarationsFromComProjectLoader.LoadDeclarations(comProject, projectId); foreach (var declaration in declarations) { _state.AddDeclaration(declaration); } _currentlyLoadedProjectIds.Add(projectId); _lastSyncLoadedDeclaration = true; } }