Skip to content
This repository was archived by the owner on Apr 14, 2022. It is now read-only.

Commit 13448bb

Browse files
author
Mikhail Arkhipov
authored
Merge pull request #189 from MikhailArkhipov/40
Fix References_GrammarTest_Statements
2 parents 3aef879 + a4b7f22 commit 13448bb

3 files changed

Lines changed: 18 additions & 6 deletions

File tree

src/Analysis/Engine/Impl/ModuleAnalysis.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,15 +294,23 @@ private VariablesResult GetVariablesFromNameExpression(Expression expr, Analysis
294294
mainDefinition = mainDefinition ?? definitions.FirstOrDefault();
295295
if (mainDefinition != null) {
296296
// Drop definitions in outer scopes and convert those in inner scopes to references.
297+
// Exception is when variable is an import as in
298+
// abc = 1
299+
// import abc
300+
var imports = definitions
301+
.Where(d => d.Variable.Variable.Types.Any(t => t.TypeId == BuiltinTypeId.Module) && d.Location.DocumentUri != DocumentUri)
302+
.ToArray();
303+
297304
// Scope levels are numbered in reverse (X == main definition level, x+1 == one up).
298305
var defsToRefs = definitions
306+
.Except(imports)
299307
.Where(d => d != mainDefinition && d.ScopeLevel <= mainDefinition.ScopeLevel)
300308
.Select(v => new VariableScopePair(new AnalysisVariable(v.Variable.Variable, VariableType.Reference, v.Location), v.ScopeLevel));
301309

302310
var others = variables
303311
.Where(v => (v.VariableType == VariableType.Reference || v.VariableType == VariableType.Value) &&
304312
v.ScopeLevel <= mainDefinition.ScopeLevel);
305-
variables = new[] { mainDefinition }.Concat(others.Concat(defsToRefs));
313+
variables = new[] { mainDefinition }.Concat(imports).Concat(others.Concat(defsToRefs));
306314
}
307315

308316
return new VariablesResult(variables.Select(v => v.Variable), unit.Tree);

src/Analysis/Engine/Test/AnalysisTest.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
using Microsoft.PythonTools.Analysis;
3030
using Microsoft.PythonTools.Analysis.Analyzer;
3131
using Microsoft.PythonTools.Analysis.FluentAssertions;
32-
using Microsoft.PythonTools.Analysis.Infrastructure;
3332
using Microsoft.PythonTools.Analysis.Values;
3433
using Microsoft.PythonTools.Interpreter;
3534
using Microsoft.PythonTools.Interpreter.Ast;
@@ -2940,7 +2939,6 @@ print abc
29402939
}
29412940

29422941
[TestMethod, Priority(0)]
2943-
[Ignore("https://github.com/Microsoft/python-language-server/issues/40")]
29442942
public async Task References_GrammarTest_Statements() {
29452943
using (var server = await CreateServerAsync(PythonVersions.LatestAvailable2X)) {
29462944
var uri = TestData.GetDefaultModuleUri();
@@ -2996,12 +2994,19 @@ print abc
29962994
await server.SendDidOpenTextDocument(uri, text);
29972995

29982996
var references = await server.SendFindReferences(uri, 3, 12);
2997+
2998+
// External module 'abc', URI varies depending on install
2999+
var externalUri = references[1].uri;
3000+
externalUri.LocalPath.Should().EndWith("abc.py");
3001+
29993002
references.Should().OnlyHaveReferences(
30003003
(uri, (1, 6, 1, 9), ReferenceKind.Definition),
3004+
(externalUri, (0, 0, 0, 0), ReferenceKind.Definition),
3005+
30013006
(uri, (3, 11, 3, 14), ReferenceKind.Reference),
3002-
(uri, (6, 22, 6, 25), ReferenceKind.Definition),
3007+
(uri, (6, 22, 6, 25), ReferenceKind.Reference),
30033008

3004-
(uri, (8, 4, 8, 7), ReferenceKind.Definition),
3009+
(uri, (8, 4, 8, 7), ReferenceKind.Reference),
30053010
(uri, (9, 4, 9, 7), ReferenceKind.Reference),
30063011
(uri, (10, 4, 10, 7), ReferenceKind.Reference),
30073012
(uri, (11, 4, 11, 7), ReferenceKind.Reference),

src/Analysis/Engine/Test/AstAnalysisTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,6 @@ public async Task FullStdLibV37() {
726726

727727

728728
[TestMethod, TestCategory("60s"), Priority(0)]
729-
[Ignore("https://github.com/Microsoft/python-language-server/issues/64")]
730729
public async Task FullStdLibV36() {
731730
var v = PythonVersions.Python36 ?? PythonVersions.Python36_x64;
732731
await FullStdLibTest(v);

0 commit comments

Comments
 (0)