mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[code-completion] Add type context for single-expression functions
Extend the support for single-expression closures to handle
single-expression functions of all kinds. This allows, e.g.
func foo() -> MyEnum { .<here> }
to complete members of `MyEnum`.
This commit is contained in:
@@ -74,6 +74,8 @@ namespace SourceKit {
|
||||
class Context;
|
||||
class NotificationCenter;
|
||||
|
||||
using TypeContextKind = swift::ide::CodeCompletionContext::TypeContextKind;
|
||||
|
||||
class SwiftEditorDocument :
|
||||
public ThreadSafeRefCountedBase<SwiftEditorDocument> {
|
||||
|
||||
@@ -162,7 +164,7 @@ class SessionCache : public ThreadSafeRefCountedBase<SessionCache> {
|
||||
CompletionSink sink;
|
||||
std::vector<Completion *> sortedCompletions;
|
||||
CompletionKind completionKind;
|
||||
bool completionHasExpectedTypes;
|
||||
TypeContextKind typeContextKind;
|
||||
bool completionMayUseImplicitMemberExpr;
|
||||
FilterRules filterRules;
|
||||
llvm::sys::Mutex mtx;
|
||||
@@ -171,11 +173,10 @@ public:
|
||||
SessionCache(CompletionSink &&sink,
|
||||
std::unique_ptr<llvm::MemoryBuffer> &&buffer,
|
||||
std::vector<std::string> &&args, CompletionKind completionKind,
|
||||
bool hasExpectedTypes, bool mayUseImplicitMemberExpr,
|
||||
TypeContextKind typeContextKind, bool mayUseImplicitMemberExpr,
|
||||
FilterRules filterRules)
|
||||
: buffer(std::move(buffer)), args(std::move(args)), sink(std::move(sink)),
|
||||
completionKind(completionKind),
|
||||
completionHasExpectedTypes(hasExpectedTypes),
|
||||
completionKind(completionKind), typeContextKind(typeContextKind),
|
||||
completionMayUseImplicitMemberExpr(mayUseImplicitMemberExpr),
|
||||
filterRules(std::move(filterRules)) {}
|
||||
void setSortedCompletions(std::vector<Completion *> &&completions);
|
||||
@@ -184,7 +185,7 @@ public:
|
||||
ArrayRef<std::string> getCompilerArgs();
|
||||
const FilterRules &getFilterRules();
|
||||
CompletionKind getCompletionKind();
|
||||
bool getCompletionHasExpectedTypes();
|
||||
TypeContextKind getCompletionTypeContextKind();
|
||||
bool getCompletionMayUseImplicitMemberExpr();
|
||||
};
|
||||
typedef RefPtr<SessionCache> SessionCacheRef;
|
||||
|
||||
Reference in New Issue
Block a user