Skip to content

Commit 5e803c6

Browse files
authored
Merge pull request #71081 from ahoppen/ahoppen/remove-call-pattern-heuristics
[CodeComplete] Remove code for call pattern heuristics and `ConjunctionElement::mightContainCodeCompletionToken`
2 parents 2ab9f63 + c8424c1 commit 5e803c6

13 files changed

+7
-73
lines changed

include/swift/IDE/CodeCompletionContext.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,6 @@ class CodeCompletionContext {
7979
return CurrentResults.addInitsToTopLevel;
8080
}
8181

82-
void setCallPatternHeuristics(bool flag) {
83-
CurrentResults.enableCallPatternHeuristics = flag;
84-
}
85-
bool getCallPatternHeuristics() const {
86-
return CurrentResults.enableCallPatternHeuristics;
87-
}
88-
8982
void setAddCallWithNoDefaultArgs(bool flag) {
9083
CurrentResults.addCallWithNoDefaultArgs = flag;
9184
}

include/swift/IDE/CodeCompletionResultSink.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,6 @@ struct CodeCompletionResultSink {
3838
/// position.
3939
bool addInitsToTopLevel = false;
4040

41-
/// Whether to perform "call pettern heuristics".
42-
bool enableCallPatternHeuristics = false;
43-
4441
/// Whether to include an item without any default arguments.
4542
bool addCallWithNoDefaultArgs = true;
4643

include/swift/Parse/IDEInspectionCallbacks.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ class CodeCompletionCallbacks {
246246
virtual void completeUnresolvedMember(CodeCompletionExpr *E,
247247
SourceLoc DotLoc) {};
248248

249-
virtual void completeCallArg(CodeCompletionExpr *E, bool isFirst) {};
249+
virtual void completeCallArg(CodeCompletionExpr *E) {};
250250

251251
virtual bool canPerformCompleteLabeledTrailingClosure() const {
252252
return false;

include/swift/Sema/ConstraintSystem.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6057,10 +6057,6 @@ class ConjunctionElement {
60576057
Element->print(Out, SM, indent);
60586058
}
60596059

6060-
/// Returns \c false if this conjunction element is known not to contain the
6061-
/// code compleiton token.
6062-
bool mightContainCodeCompletionToken(const ConstraintSystem &cs) const;
6063-
60646060
private:
60656061
/// Find type variables referenced by this conjunction element.
60666062
/// If this is a closure body element, it would look inside \c ASTNode.

lib/IDE/CodeCompletion.cpp

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,6 @@ class CodeCompletionCallbacksImpl : public CodeCompletionCallbacks,
130130
bool AttrParamHasLabel;
131131
bool IsInSil = false;
132132
bool HasSpace = false;
133-
bool ShouldCompleteCallPatternAfterParen = true;
134133
bool PreferFunctionReferencesToCalls = false;
135134
bool AttTargetIsIndependent = false;
136135
llvm::Optional<DeclKind> AttTargetDK;
@@ -284,7 +283,7 @@ class CodeCompletionCallbacksImpl : public CodeCompletionCallbacks,
284283
void completeImportDecl(ImportPath::Builder &Path) override;
285284
void completeUnresolvedMember(CodeCompletionExpr *E,
286285
SourceLoc DotLoc) override;
287-
void completeCallArg(CodeCompletionExpr *E, bool isFirst) override;
286+
void completeCallArg(CodeCompletionExpr *E) override;
288287

289288
bool canPerformCompleteLabeledTrailingClosure() const override {
290289
return true;
@@ -546,26 +545,10 @@ void CodeCompletionCallbacksImpl::completeUnresolvedMember(CodeCompletionExpr *E
546545
this->DotLoc = DotLoc;
547546
}
548547

549-
void CodeCompletionCallbacksImpl::completeCallArg(CodeCompletionExpr *E,
550-
bool isFirst) {
548+
void CodeCompletionCallbacksImpl::completeCallArg(CodeCompletionExpr *E) {
551549
CurDeclContext = P.CurDeclContext;
552550
CodeCompleteTokenExpr = E;
553551
Kind = CompletionKind::CallArg;
554-
555-
ShouldCompleteCallPatternAfterParen = false;
556-
if (isFirst) {
557-
ShouldCompleteCallPatternAfterParen = true;
558-
if (CompletionContext.getCallPatternHeuristics()) {
559-
// Lookahead one token to decide what kind of call completions to provide.
560-
// When it appears that there is already code for the call present, just
561-
// complete values and/or argument labels. Otherwise give the entire call
562-
// pattern.
563-
Token next = P.peekToken();
564-
if (!next.isAtStartOfLine() && !next.is(tok::eof) && !next.is(tok::r_paren)) {
565-
ShouldCompleteCallPatternAfterParen = false;
566-
}
567-
}
568-
}
569552
}
570553

571554
void CodeCompletionCallbacksImpl::completeReturnStmt(CodeCompletionExpr *E) {

lib/IDE/CodeCompletionContext.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ void CodeCompletionContext::addResultsFromModules(
142142
CodeCompletionResultSink Sink;
143143
Sink.annotateResult = getAnnotateResult();
144144
Sink.addInitsToTopLevel = getAddInitsToTopLevel();
145-
Sink.enableCallPatternHeuristics = getCallPatternHeuristics();
146145
Sink.includeObjectLiterals = includeObjectLiterals();
147146
Sink.addCallWithNoDefaultArgs = addCallWithNoDefaultArgs();
148147
Sink.setProduceContextFreeResults((*V)->USRTypeArena);

lib/IDE/TypeContextInfo.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class ContextInfoCallbacks : public CodeCompletionCallbacks,
4343
void completeForEachSequenceBeginning(CodeCompletionExpr *E) override;
4444
void completeCaseStmtBeginning(CodeCompletionExpr *E) override;
4545

46-
void completeCallArg(CodeCompletionExpr *E, bool isFirst) override;
46+
void completeCallArg(CodeCompletionExpr *E) override;
4747
void completeReturnStmt(CodeCompletionExpr *E) override;
4848
void completeThenStmt(CodeCompletionExpr *E) override;
4949
void completeYieldStmt(CodeCompletionExpr *E,
@@ -65,8 +65,7 @@ void ContextInfoCallbacks::completeForEachSequenceBeginning(
6565
CurDeclContext = P.CurDeclContext;
6666
ParsedExpr = E;
6767
}
68-
void ContextInfoCallbacks::completeCallArg(CodeCompletionExpr *E,
69-
bool isFirst) {
68+
void ContextInfoCallbacks::completeCallArg(CodeCompletionExpr *E) {
7069
CurDeclContext = P.CurDeclContext;
7170
ParsedExpr = E;
7271
}

lib/Parse/ParseExpr.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3276,8 +3276,7 @@ ParserStatus Parser::parseExprListElement(tok rightTok, bool isArgumentList, Sou
32763276
// Handle call arguments specially because it may need argument labels.
32773277
auto CCExpr = new (Context) CodeCompletionExpr(Tok.getLoc());
32783278
if (this->CodeCompletionCallbacks)
3279-
this->CodeCompletionCallbacks->completeCallArg(CCExpr,
3280-
PreviousLoc == leftLoc);
3279+
this->CodeCompletionCallbacks->completeCallArg(CCExpr);
32813280
consumeIf(tok::code_complete);
32823281
elts.push_back({FieldNameLoc, FieldName, CCExpr});
32833282
Status.setHasCodeCompletionAndIsError();

lib/Sema/CSSyntacticElement.cpp

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2651,21 +2651,6 @@ bool ConstraintSystem::applySolutionToBody(Solution &solution, TapExpr *tapExpr,
26512651
return false;
26522652
}
26532653

2654-
bool ConjunctionElement::mightContainCodeCompletionToken(
2655-
const ConstraintSystem &cs) const {
2656-
if (Element->getKind() == ConstraintKind::SyntacticElement) {
2657-
if (Element->getSyntacticElement().getSourceRange().isInvalid()) {
2658-
return true;
2659-
} else {
2660-
return cs.containsIDEInspectionTarget(Element->getSyntacticElement());
2661-
}
2662-
} else {
2663-
// All other constraint kinds are not handled yet. Assume that they might
2664-
// contain the code completion token.
2665-
return true;
2666-
}
2667-
}
2668-
26692654
bool ConstraintSystem::applySolutionToSingleValueStmt(
26702655
Solution &solution, SingleValueStmtExpr *SVE, DeclContext *DC,
26712656
RewriteTargetFn rewriteTarget) {

test/IDE/complete_typerelation.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// RUN: %empty-directory(%t)
2-
// RUN: %target-swift-ide-test -batch-code-completion -source-filename %s -filecheck %raw-FileCheck -completion-output-dir %t -code-complete-call-pattern-heuristics -disable-objc-attr-requires-foundation-module
2+
// RUN: %target-swift-ide-test -batch-code-completion -source-filename %s -filecheck %raw-FileCheck -completion-output-dir %t -disable-objc-attr-requires-foundation-module
33

44
// SE-0353
55
struct ConstraintedExistentialTest {

0 commit comments

Comments
 (0)