Skip to content

Commit 616fcb3

Browse files
authored
Merge pull request swiftlang#29269 from rintaro/ide-completion-rdar58663066
[CodeCompletion] Handle cases where PersistentParserState is not created
2 parents c3a08f0 + 9eeb96c commit 616fcb3

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

lib/IDE/CompletionInstance.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,8 @@ bool CompletionInstance::performCachedOperaitonIfPossible(
171171

172172
auto &CI = *CachedCI;
173173

174+
if (!CI.hasPersistentParserState())
175+
return false;
174176
auto &oldState = CI.getPersistentParserState();
175177
if (!oldState.hasCodeCompletionDelayedDeclState())
176178
return false;
@@ -321,7 +323,8 @@ bool CompletionInstance::performNewOperation(
321323
registerIDERequestFunctions(CI.getASTContext().evaluator);
322324

323325
CI.performParseAndResolveImportsOnly();
324-
Callback(CI);
326+
if (CI.hasPersistentParserState())
327+
Callback(CI);
325328

326329
if (DiagC)
327330
CI.removeDiagnosticConsumer(DiagC);
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Str {
2+
var value: Str
3+
}
4+
5+
// rdar://problem/58663066
6+
// Test a environment where stdlib is not found.
7+
// Completion should return zero result.
8+
9+
// RUN: %empty-directory(%t/rsrc)
10+
// RUN: %empty-directory(%t/sdk)
11+
12+
// RUN: %sourcekitd-test \
13+
// RUN: -req=complete -pos=4:1 %s -- %s -resource-dir %t/rsrc -sdk %t/sdk | %FileCheck %s
14+
// RUN: %sourcekitd-test \
15+
// RUN: -req=complete -req-opts=reuseastcontext=1 -pos=4:1 %s -- %s -resource-dir %t/rsrc -sdk %t/sdk == \
16+
// RUN: -req=complete -req-opts=reuseastcontext=1 -pos=4:1 %s -- %s -resource-dir %t/rsrc -sdk %t/sdk | %FileCheck %s
17+
18+
// CHECK: key.results: [
19+
// CHECK-NOT: key.description:

0 commit comments

Comments
 (0)