Ejemplo n.º 1
0
 void TestCollectFiles(Project project, IEnumerable <IEntity> entities, IEnumerable <Tuple <Project, IEnumerable <FilePath> > > expected)
 {
     VerifyResult(SearchCollector.CollectFiles(project, entities).ToList(), expected.ToList());
 }
Ejemplo n.º 2
0
        static IEnumerable <SearchCollector.FileList> GetFileNames(Solution solution, object node, RefactoryScope scope,
                                                                   IProgressMonitor monitor, IEnumerable <object> searchNodes)
        {
            if (!(node is IField) && node is IVariable || scope == RefactoryScope.File)
            {
                string fileName;
                if (node is IEntity)
                {
                    fileName = ((IEntity)node).Region.FileName;
                }
                else if (node is ITypeParameter)
                {
                    fileName = ((ITypeParameter)node).Region.FileName;
                }
                else
                {
                    fileName = ((IVariable)node).Region.FileName;
                }
                var fileList = GetFileList(fileName);
                if (fileList != null)
                {
                    yield return(fileList);
                }
                yield break;
            }

            if (node is ITypeParameter)
            {
                var typeParameter = node as ITypeParameter;
                if (typeParameter.Owner != null)
                {
                    yield return(SearchCollector.CollectDeclaringFiles(typeParameter.Owner));

                    yield break;
                }
                var fileList = GetFileList(typeParameter.Region.FileName);
                if (fileList != null)
                {
                    yield return(fileList);
                }
                yield break;
            }

            var compilationProvider = (ICompilationProvider)node;

            switch (scope)
            {
            case RefactoryScope.DeclaringType:
                var entity = (IEntity)compilationProvider;
                if (entity.DeclaringTypeDefinition != null)
                {
                    yield return(SearchCollector.CollectDeclaringFiles(entity.DeclaringTypeDefinition));
                }
                else
                {
                    yield return(SearchCollector.CollectDeclaringFiles(entity));
                }
                break;

            case RefactoryScope.Project:
                var sourceProject = TypeSystemService.GetProject(compilationProvider.Compilation.MainAssembly.UnresolvedAssembly.Location);
                foreach (var file in SearchCollector.CollectFiles(sourceProject, searchNodes))
                {
                    yield return(file);
                }
                break;

            default:
                var files = SearchCollector.CollectFiles(solution, searchNodes).ToList();
                if (monitor != null)
                {
                    monitor.BeginTask(GettextCatalog.GetString("Searching for references in solution..."), files.Count);
                }
                foreach (var file in files)
                {
                    if (monitor != null && monitor.IsCancelRequested)
                    {
                        yield break;
                    }
                    yield return(file);

                    if (monitor != null)
                    {
                        monitor.Step(1);
                    }
                }
                if (monitor != null)
                {
                    monitor.EndTask();
                }
                break;
            }
        }