Skip to content
This repository was archived by the owner on Nov 4, 2024. It is now read-only.

Commit bf69f85

Browse files
author
Mikhail Arkhipov
authored
Fix OOB exception in imports (microsoft#753)
* Fix microsoft#668 (partial) * Tests * Revert "Tests" This reverts commit 7ffc9db. * Suppress completion after error tokens * Fix OOB exception
1 parent 2adaee3 commit bf69f85

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/Analysis/Ast/Impl/Analyzer/Handlers/ImportHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ private void HandleImport(ModuleName moduleImportExpression, NameExpression asNa
7070
// "import fob.oar.baz" is handled as fob = import_module('fob')
7171
if (asNameExpression != null) {
7272
Eval.DeclareVariable(asNameExpression.Name, variableModule, VariableSource.Import, asNameExpression);
73-
} else if (_variableModules.TryGetValue(importNames[0], out variableModule)) {
73+
} else if (importNames.Count > 0 && _variableModules.TryGetValue(importNames[0], out variableModule)) {
7474
var firstName = moduleImportExpression.Names[0];
7575
Eval.DeclareVariable(importNames[0], variableModule, VariableSource.Import, firstName);
7676
}

src/LanguageServer/Test/CompletionTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -863,6 +863,13 @@ public async Task NoCompletionInOpenString() {
863863
result.Should().HaveNoCompletion();
864864
}
865865

866+
[TestMethod, Priority(0)]
867+
public async Task NoCompletionBadImportExpression() {
868+
var analysis = await GetAnalysisAsync("import os,.");
869+
var cs = new CompletionSource(new PlainTextDocumentationSource(), ServerSettings.completion);
870+
cs.GetCompletions(analysis, new SourceLocation(1, 12)); // Should not crash.
871+
}
872+
866873
[TestMethod, Priority(0)]
867874
public async Task NoCompletionInComment() {
868875

0 commit comments

Comments
 (0)