Beispiel #1
0
 private static IEnumerable <AnalysisValue> GetTestCaseClasses(IModuleAnalysis analysis)
 {
     return(analysis.GetAllMembers(SourceLocation.MinValue, GetMemberOptions.ExcludeBuiltins)
            .SelectMany(m => analysis.GetValues(m.Name, SourceLocation.MinValue))
            .Where(v => v.MemberType == PythonMemberType.Class)
            .Where(v => v.Mro.SelectMany(v2 => v2).Any(IsTestCaseClass)));
 }
        private IEnumerable <AnalysisValue> GetImportHover(IPythonProjectEntry entry, IModuleAnalysis analysis, PythonAst tree, Position position, out Hover hover)
        {
            hover = null;

            var index = tree.LocationToIndex(position);
            var w     = new ImportedModuleNameWalker(entry, index, tree);

            tree.Walk(w);

            if (w.ImportedType != null)
            {
                return(analysis.GetValues(w.ImportedType.Name, position));
            }

            var sb   = new StringBuilder();
            var span = SourceSpan.Invalid;

            foreach (var n in w.ImportedModules)
            {
                if (Analyzer.Modules.TryGetImportedModule(n.Name, out var modRef) && modRef.AnalysisModule != null)
                {
                    if (sb.Length > 0)
                    {
                        sb.AppendLine();
                        sb.AppendLine();
                    }
                    sb.Append(_displayTextBuilder.GetModuleDocumentation(modRef));
                    span = span.IsValid ? span.Union(n.SourceSpan) : n.SourceSpan;
                }
            }
            if (sb.Length > 0)
            {
                hover = new Hover {
                    contents = sb.ToString(),
                    range    = span
                };
            }
            return(Enumerable.Empty <AnalysisValue>());
        }