@@ -158,6 +158,7 @@ void CodeCompletionString::print(raw_ostream &OS) const {
158
158
case Chunk::ChunkKind::ExclamationMark:
159
159
case Chunk::ChunkKind::QuestionMark:
160
160
case Chunk::ChunkKind::Ampersand:
161
+ case Chunk::ChunkKind::Whitespace:
161
162
AnnotatedTextChunk = C.isAnnotation ();
162
163
SWIFT_FALLTHROUGH;
163
164
case Chunk::ChunkKind::CallParameterName:
@@ -264,14 +265,30 @@ CodeCompletionResult::getCodeCompletionDeclKind(const Decl *D) {
264
265
return CodeCompletionDeclKind::StaticMethod;
265
266
return CodeCompletionDeclKind::InstanceMethod;
266
267
}
267
- if (FD->isOperator ())
268
- return CodeCompletionDeclKind::OperatorFunction;
268
+ if (FD->isOperator ()) {
269
+ if (auto op = FD->getOperatorDecl ()) {
270
+ switch (op->getKind ()) {
271
+ case DeclKind::PrefixOperator:
272
+ return CodeCompletionDeclKind::PrefixOperatorFunction;
273
+ case DeclKind::PostfixOperator:
274
+ return CodeCompletionDeclKind::PostfixOperatorFunction;
275
+ case DeclKind::InfixOperator:
276
+ return CodeCompletionDeclKind::InfixOperatorFunction;
277
+ default :
278
+ llvm_unreachable (" unexpected operator kind" );
279
+ }
280
+ } else {
281
+ return CodeCompletionDeclKind::InfixOperatorFunction;
282
+ }
283
+ }
269
284
return CodeCompletionDeclKind::FreeFunction;
270
285
}
271
286
case DeclKind::InfixOperator:
287
+ return CodeCompletionDeclKind::InfixOperatorFunction;
272
288
case DeclKind::PrefixOperator:
289
+ return CodeCompletionDeclKind::PrefixOperatorFunction;
273
290
case DeclKind::PostfixOperator:
274
- return CodeCompletionDeclKind::OperatorFunction ;
291
+ return CodeCompletionDeclKind::PostfixOperatorFunction ;
275
292
case DeclKind::EnumElement:
276
293
return CodeCompletionDeclKind::EnumElement;
277
294
case DeclKind::Subscript:
@@ -322,8 +339,14 @@ void CodeCompletionResult::print(raw_ostream &OS) const {
322
339
case CodeCompletionDeclKind::InstanceMethod:
323
340
Prefix.append (" [InstanceMethod]" );
324
341
break ;
325
- case CodeCompletionDeclKind::OperatorFunction:
326
- Prefix.append (" [OperatorFunction]" );
342
+ case CodeCompletionDeclKind::PrefixOperatorFunction:
343
+ Prefix.append (" [PrefixOperatorFunction]" );
344
+ break ;
345
+ case CodeCompletionDeclKind::PostfixOperatorFunction:
346
+ Prefix.append (" [PostfixOperatorFunction]" );
347
+ break ;
348
+ case CodeCompletionDeclKind::InfixOperatorFunction:
349
+ Prefix.append (" [InfixOperatorFunction]" );
327
350
break ;
328
351
case CodeCompletionDeclKind::FreeFunction:
329
352
Prefix.append (" [FreeFunction]" );
@@ -640,6 +663,7 @@ Optional<unsigned> CodeCompletionString::getFirstTextChunkIndex(
640
663
case CodeCompletionString::Chunk::ChunkKind::Ellipsis:
641
664
case CodeCompletionString::Chunk::ChunkKind::Comma:
642
665
case CodeCompletionString::Chunk::ChunkKind::Ampersand:
666
+ case CodeCompletionString::Chunk::ChunkKind::Whitespace:
643
667
case CodeCompletionString::Chunk::ChunkKind::AccessControlKeyword:
644
668
case CodeCompletionString::Chunk::ChunkKind::OverrideKeyword:
645
669
case CodeCompletionString::Chunk::ChunkKind::ThrowsKeyword:
@@ -2396,9 +2420,9 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
2396
2420
{});
2397
2421
builder.setAssociatedDecl (op);
2398
2422
// FIXME: detect whether we need space on the LHS.
2399
- builder.addTextChunk (" " );
2423
+ builder.addWhitespace (" " );
2400
2424
builder.addTextChunk (op->getName ().str ());
2401
- builder.addTextChunk (" " );
2425
+ builder.addWhitespace (" " );
2402
2426
if (RHSType)
2403
2427
builder.addCallParameter (Identifier (), Identifier (), RHSType, false );
2404
2428
if (resultType)
@@ -3985,7 +4009,9 @@ void swift::ide::copyCodeCompletionResults(CodeCompletionResultSink &targetSink,
3985
4009
case CodeCompletionDeclKind::Subscript:
3986
4010
case CodeCompletionDeclKind::StaticMethod:
3987
4011
case CodeCompletionDeclKind::InstanceMethod:
3988
- case CodeCompletionDeclKind::OperatorFunction:
4012
+ case CodeCompletionDeclKind::PrefixOperatorFunction:
4013
+ case CodeCompletionDeclKind::PostfixOperatorFunction:
4014
+ case CodeCompletionDeclKind::InfixOperatorFunction:
3989
4015
case CodeCompletionDeclKind::FreeFunction:
3990
4016
case CodeCompletionDeclKind::StaticVar:
3991
4017
case CodeCompletionDeclKind::InstanceVar:
0 commit comments