diff --git a/src/Analysis/Ast/Impl/Analyzer/Handlers/ImportHandler.cs b/src/Analysis/Ast/Impl/Analyzer/Handlers/ImportHandler.cs index d06f48b6e..adb4d3183 100644 --- a/src/Analysis/Ast/Impl/Analyzer/Handlers/ImportHandler.cs +++ b/src/Analysis/Ast/Impl/Analyzer/Handlers/ImportHandler.cs @@ -70,7 +70,7 @@ private void HandleImport(ModuleName moduleImportExpression, NameExpression asNa // "import fob.oar.baz" is handled as fob = import_module('fob') if (asNameExpression != null) { Eval.DeclareVariable(asNameExpression.Name, variableModule, VariableSource.Import, asNameExpression); - } else if (_variableModules.TryGetValue(importNames[0], out variableModule)) { + } else if (importNames.Count > 0 && _variableModules.TryGetValue(importNames[0], out variableModule)) { var firstName = moduleImportExpression.Names[0]; Eval.DeclareVariable(importNames[0], variableModule, VariableSource.Import, firstName); } diff --git a/src/LanguageServer/Test/CompletionTests.cs b/src/LanguageServer/Test/CompletionTests.cs index f0c0770d6..ad372f8ca 100644 --- a/src/LanguageServer/Test/CompletionTests.cs +++ b/src/LanguageServer/Test/CompletionTests.cs @@ -863,6 +863,13 @@ public async Task NoCompletionInOpenString() { result.Should().HaveNoCompletion(); } + [TestMethod, Priority(0)] + public async Task NoCompletionBadImportExpression() { + var analysis = await GetAnalysisAsync("import os,."); + var cs = new CompletionSource(new PlainTextDocumentationSource(), ServerSettings.completion); + cs.GetCompletions(analysis, new SourceLocation(1, 12)); // Should not crash. + } + [TestMethod, Priority(0)] public async Task NoCompletionInComment() {