Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        private void AddNewUndeclaredVariablesToDeclarations()
        {
            var undeclared = _state.DeclarationFinder.FreshUndeclared;

            foreach (var declaration in undeclared)
            {
                _state.AddDeclaration(declaration);
            }
        }
Ejemplo n.º 4
0
        private static void AddTestLibrary(RubberduckParserState state, SerializableProject deserialized)
        {
            var declarations = deserialized.Unwrap();

            foreach (var declaration in declarations)
            {
                state.AddDeclaration(declaration);
            }
        }
Ejemplo n.º 5
0
        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;
            }
        }