Skip to content
This repository was archived by the owner on Apr 14, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
8bca56b
Fix #668 (partial)
Mar 1, 2019
a731c2a
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 1, 2019
069910b
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 5, 2019
7ffc9db
Tests
Mar 5, 2019
6303c45
Revert "Tests"
Mar 5, 2019
945451c
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 5, 2019
034e437
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 5, 2019
f997d68
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 6, 2019
0e4ff95
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 11, 2019
878c8c5
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 13, 2019
35e1033
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 13, 2019
1073711
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 14, 2019
86028da
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 14, 2019
4d4bca7
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 18, 2019
ac04f76
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 18, 2019
bab03da
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 20, 2019
85ec685
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 27, 2019
be7466d
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 28, 2019
01781c0
Exp
Mar 27, 2019
f544f8a
Limit concurrency
Mar 28, 2019
01bd719
Concurrency limit
Mar 28, 2019
2f8e564
Drop cache after analysis
Mar 28, 2019
9a933bd
Merge branch 'master' of https://github.com/Microsoft/python-language…
Mar 28, 2019
4ad56bb
Fix regression
Mar 28, 2019
c280c55
Merge branch 'master' of https://github.com/Microsoft/python-language…
Apr 3, 2019
b21b8b8
Merge branch 'master' of https://github.com/Microsoft/python-language…
Apr 7, 2019
babaee4
Merge branch 'master' of https://github.com/Microsoft/python-language…
Apr 8, 2019
092efd6
Merge branch 'master' of https://github.com/Microsoft/python-language…
Apr 8, 2019
b97594d
Merge branch 'master' of https://github.com/Microsoft/python-language…
Apr 10, 2019
2a50eb9
Fix test
Apr 10, 2019
9c7f58d
Merge branch 'master' of https://github.com/Microsoft/python-language…
Apr 10, 2019
00faa5f
Merge branch 'master' of https://github.com/Microsoft/python-language…
Apr 12, 2019
84e73e3
Prevent direct enumeration of changing collection
Apr 12, 2019
62f79f4
Add lock
Apr 12, 2019
beb9837
Change to a method
Apr 12, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,13 @@ namespace Microsoft.Python.Analysis.Documents {
/// the running document table in Visual Studio, see
/// "https://docs.microsoft.com/en-us/visualstudio/extensibility/internals/running-document-table"/>
/// </summary>
public interface IRunningDocumentTable: IEnumerable<IDocument> {
public interface IRunningDocumentTable {
/// <summary>
/// Returns collection of currently open or loaded modules.
/// Does not include stubs or compiled/scraped modules.
/// </summary>
IEnumerable<IDocument> GetDocuments();

/// <summary>
/// Opens document. Adds file to the list of available documents
/// unless it was already loaded via indirect import.
Expand Down
16 changes: 11 additions & 5 deletions src/Analysis/Ast/Impl/Documents/RunningDocumentTable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
// permissions and limitations under the License.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
Expand Down Expand Up @@ -60,6 +59,16 @@ public RunningDocumentTable(IServiceContainer services) {
public event EventHandler<DocumentEventArgs> Closed;
public event EventHandler<DocumentEventArgs> Removed;

/// <summary>
/// Returns collection of currently open or loaded modules.
/// Does not include stubs or compiled/scraped modules.
/// </summary>
public IEnumerable<IDocument> GetDocuments() {
lock (_lock) {
return _documentsByName.Values.Select(e => e.Document).ToArray();
}
}

/// <summary>
/// Adds file to the list of available documents.
/// </summary>
Expand Down Expand Up @@ -149,8 +158,6 @@ public int UnlockDocument(Uri uri) {
}
}

public IEnumerator<IDocument> GetEnumerator() => _documentsByUri.Values.Select(e => e.Document).GetEnumerator();

public void CloseDocument(Uri documentUri) {
var closed = false;
var removed = false;
Expand Down Expand Up @@ -182,8 +189,6 @@ public void CloseDocument(Uri documentUri) {
}
}

IEnumerator IEnumerable.GetEnumerator() => _documentsByUri.Values.GetEnumerator();

public void Dispose() {
lock (_lock) {
foreach (var d in _documentsByUri.Values.OfType<IDisposable>()) {
Expand All @@ -196,6 +201,7 @@ private DocumentEntry FindDocument(string moduleName, Uri uri) {
if (uri != null && _documentsByUri.TryGetValue(uri, out var entry)) {
return entry;
}

if (!string.IsNullOrEmpty(moduleName) && _documentsByName.TryGetValue(moduleName, out entry)) {
return entry;
}
Expand Down
2 changes: 1 addition & 1 deletion src/LanguageServer/Impl/Implementation/Server.cs
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ public void NotifyPackagesChanged(CancellationToken cancellationToken) {
private void RestartAnalysis() {
var analyzer = Services.GetService<IPythonAnalyzer>();;
analyzer.ResetAnalyzer();
foreach (var doc in _rdt) {
foreach (var doc in _rdt.GetDocuments()) {
doc.Reset(null);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/LanguageServer/Impl/LanguageServer.Configuration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ internal static void HandleLintingOnOff(IServiceContainer services, bool linterE
var wasEnabled = optionsProvider.Options.LintingEnabled;
optionsProvider.Options.LintingEnabled = linterEnabled;

foreach (var m in rdt.Where(m => m.ModuleType == ModuleType.User)) {
foreach (var m in rdt.GetDocuments().Where(m => m.ModuleType == ModuleType.User)) {
IReadOnlyList<DiagnosticsEntry> entries = Array.Empty<DiagnosticsEntry>();
if (!wasEnabled && linterEnabled) {
// Lint all user files in the RDT
Expand Down
12 changes: 6 additions & 6 deletions src/LanguageServer/Test/RdtTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ public async Task LockCount() {
rdt.OpenDocument(uri1, "from LockCount1 import *");
await Services.GetService<IPythonAnalyzer>().WaitForCompleteAnalysisAsync();

var docLc1 = rdt.First(d => d.Name.Contains("LockCount1"));
var docLc2 = rdt.First(d => d.Name.Contains("LockCount2"));
var docLc3 = rdt.First(d => d.Name.Contains("LockCount3"));
var docLc1 = rdt.GetDocuments().First(d => d.Name.Contains("LockCount1"));
var docLc2 = rdt.GetDocuments().First(d => d.Name.Contains("LockCount2"));
var docLc3 = rdt.GetDocuments().First(d => d.Name.Contains("LockCount3"));

VerifyLockCount(rdt, docLc1.Uri, 1);
VerifyLockCount(rdt, docLc2.Uri, 1);
Expand Down Expand Up @@ -109,9 +109,9 @@ public async Task OpenCloseAnalysis() {
rdt.OpenDocument(uri, "from LockCount1 import *");
await Services.GetService<IPythonAnalyzer>().WaitForCompleteAnalysisAsync();

var docLc1 = rdt.First(d => d.Name.Contains("LockCount1"));
var docLc2 = rdt.First(d => d.Name.Contains("LockCount2"));
var docLc3 = rdt.First(d => d.Name.Contains("LockCount3"));
var docLc1 = rdt.GetDocuments().First(d => d.Name.Contains("LockCount1"));
var docLc2 = rdt.GetDocuments().First(d => d.Name.Contains("LockCount2"));
var docLc3 = rdt.GetDocuments().First(d => d.Name.Contains("LockCount3"));

var ds = GetDiagnosticsService();
PublishDiagnostics();
Expand Down