mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[CodeComplete] Add type relation descriptor when completing return statement. rdar://22788321
Swift SVN r32125
This commit is contained in:
@@ -901,6 +901,7 @@ public:
|
||||
bool HasReturn) override;
|
||||
void completeAssignmentRHS(AssignExpr *E) override;
|
||||
void completeCallArg(CallExpr *E) override;
|
||||
void completeReturnStmt(CodeCompletionExpr *E) override;
|
||||
void addKeywords(CodeCompletionResultSink &Sink);
|
||||
|
||||
void doneParsing() override;
|
||||
@@ -3029,6 +3030,12 @@ void CodeCompletionCallbacksImpl::completeCallArg(CallExpr *E) {
|
||||
}
|
||||
}
|
||||
|
||||
void CodeCompletionCallbacksImpl::completeReturnStmt(CodeCompletionExpr *E) {
|
||||
CurDeclContext = P.CurDeclContext;
|
||||
CodeCompleteTokenExpr = E;
|
||||
Kind = CompletionKind::ReturnStmtExpr;
|
||||
}
|
||||
|
||||
void CodeCompletionCallbacksImpl::completeNominalMemberBeginning(
|
||||
SmallVectorImpl<StringRef> &Keywords) {
|
||||
assert(!InEnumElementRawValue);
|
||||
@@ -3126,6 +3133,7 @@ void CodeCompletionCallbacksImpl::addKeywords(CodeCompletionResultSink &Sink) {
|
||||
case CompletionKind::UnresolvedMember:
|
||||
case CompletionKind::AssignmentRHS:
|
||||
case CompletionKind::CallArg:
|
||||
case CompletionKind::ReturnStmtExpr:
|
||||
break;
|
||||
|
||||
case CompletionKind::PostfixExprBeginning:
|
||||
@@ -3450,6 +3458,16 @@ void CodeCompletionCallbacksImpl::doneParsing() {
|
||||
DoPostfixExprBeginning();
|
||||
break;
|
||||
}
|
||||
|
||||
case CompletionKind::ReturnStmtExpr : {
|
||||
SourceLoc Loc = P.Context.SourceMgr.getCodeCompletionLoc();
|
||||
if (auto FD = dyn_cast<AbstractFunctionDecl>(CurDeclContext)) {
|
||||
if (auto FT = FD->getType()->getAs<FunctionType>()) {
|
||||
Lookup.setExpectedTypes(FT->getResult());
|
||||
}
|
||||
}
|
||||
Lookup.getValueCompletionsInDeclContext(Loc);
|
||||
}
|
||||
}
|
||||
|
||||
if (Lookup.RequestedCachedResults) {
|
||||
|
||||
Reference in New Issue
Block a user