@@ -495,11 +495,21 @@ class CodeCompletionResult {
495
495
Identical,
496
496
};
497
497
498
+ enum NotRecommendedReason {
499
+
500
+ Redundant,
501
+
502
+ TypeMismatch,
503
+
504
+ NoReason,
505
+ };
506
+
498
507
private:
499
508
unsigned Kind : 2 ;
500
509
unsigned AssociatedKind : 8 ;
501
510
unsigned SemanticContext : 3 ;
502
511
unsigned NotRecommended : 1 ;
512
+ unsigned NotRecReason : 3 ;
503
513
504
514
// / The number of bytes to the left of the code completion point that
505
515
// / should be erased first if this completion string is inserted in the
@@ -527,8 +537,9 @@ class CodeCompletionResult {
527
537
CodeCompletionString *CompletionString,
528
538
ExpectedTypeRelation TypeDistance = Unrelated)
529
539
: Kind(Kind), SemanticContext(unsigned (SemanticContext)),
530
- NotRecommended (false ), NumBytesToErase(NumBytesToErase),
531
- CompletionString(CompletionString), TypeDistance(TypeDistance) {
540
+ NotRecommended (false ), NotRecReason(NotRecommendedReason::NoReason),
541
+ NumBytesToErase(NumBytesToErase), CompletionString(CompletionString),
542
+ TypeDistance(TypeDistance) {
532
543
assert (Kind != Declaration && " use the other constructor" );
533
544
assert (CompletionString);
534
545
AssociatedKind = 0 ;
@@ -543,8 +554,9 @@ class CodeCompletionResult {
543
554
CodeCompletionString *CompletionString,
544
555
ExpectedTypeRelation TypeDistance = Unrelated)
545
556
: Kind(Keyword), SemanticContext(unsigned (SemanticContext)),
546
- NotRecommended(false ), NumBytesToErase(NumBytesToErase),
547
- CompletionString(CompletionString), TypeDistance(TypeDistance) {
557
+ NotRecommended(false ), NotRecReason(NotRecommendedReason::NoReason),
558
+ NumBytesToErase(NumBytesToErase), CompletionString(CompletionString),
559
+ TypeDistance(TypeDistance) {
548
560
assert (CompletionString);
549
561
AssociatedKind = static_cast <unsigned >(Kind);
550
562
}
@@ -558,8 +570,9 @@ class CodeCompletionResult {
558
570
CodeCompletionString *CompletionString,
559
571
ExpectedTypeRelation TypeDistance)
560
572
: Kind(Literal), SemanticContext(unsigned (SemanticContext)),
561
- NotRecommended(false ), NumBytesToErase(NumBytesToErase),
562
- CompletionString(CompletionString), TypeDistance(TypeDistance) {
573
+ NotRecommended(false ), NotRecReason(NotRecommendedReason::NoReason),
574
+ NumBytesToErase(NumBytesToErase), CompletionString(CompletionString),
575
+ TypeDistance(TypeDistance) {
563
576
AssociatedKind = static_cast <unsigned >(LiteralKind);
564
577
assert (CompletionString);
565
578
}
@@ -573,13 +586,16 @@ class CodeCompletionResult {
573
586
unsigned NumBytesToErase,
574
587
CodeCompletionString *CompletionString,
575
588
const Decl *AssociatedDecl, StringRef ModuleName,
576
- bool NotRecommended, StringRef BriefDocComment,
589
+ bool NotRecommended,
590
+ CodeCompletionResult::NotRecommendedReason NotRecReason,
591
+ StringRef BriefDocComment,
577
592
ArrayRef<StringRef> AssociatedUSRs,
578
593
ArrayRef<std::pair<StringRef, StringRef>> DocWords,
579
594
enum ExpectedTypeRelation TypeDistance)
580
595
: Kind(ResultKind::Declaration),
581
596
SemanticContext(unsigned (SemanticContext)),
582
- NotRecommended(NotRecommended), NumBytesToErase(NumBytesToErase),
597
+ NotRecommended(NotRecommended), NotRecReason(NotRecReason),
598
+ NumBytesToErase(NumBytesToErase),
583
599
CompletionString(CompletionString), ModuleName(ModuleName),
584
600
BriefDocComment(BriefDocComment), AssociatedUSRs(AssociatedUSRs),
585
601
DocWords(DocWords), TypeDistance(TypeDistance) {
@@ -593,12 +609,15 @@ class CodeCompletionResult {
593
609
unsigned NumBytesToErase,
594
610
CodeCompletionString *CompletionString,
595
611
CodeCompletionDeclKind DeclKind, StringRef ModuleName,
596
- bool NotRecommended, StringRef BriefDocComment,
612
+ bool NotRecommended,
613
+ CodeCompletionResult::NotRecommendedReason NotRecReason,
614
+ StringRef BriefDocComment,
597
615
ArrayRef<StringRef> AssociatedUSRs,
598
616
ArrayRef<std::pair<StringRef, StringRef>> DocWords)
599
617
: Kind(ResultKind::Declaration),
600
618
SemanticContext(unsigned (SemanticContext)),
601
- NotRecommended(NotRecommended), NumBytesToErase(NumBytesToErase),
619
+ NotRecommended(NotRecommended), NotRecReason(NotRecReason),
620
+ NumBytesToErase(NumBytesToErase),
602
621
CompletionString(CompletionString), ModuleName(ModuleName),
603
622
BriefDocComment(BriefDocComment), AssociatedUSRs(AssociatedUSRs),
604
623
DocWords(DocWords) {
@@ -641,6 +660,10 @@ class CodeCompletionResult {
641
660
return static_cast <ExpectedTypeRelation>(TypeDistance);
642
661
}
643
662
663
+ NotRecommendedReason getNotRecommendedReason () const {
664
+ return static_cast <NotRecommendedReason>(NotRecReason);
665
+ }
666
+
644
667
SemanticContextKind getSemanticContext () const {
645
668
return static_cast <SemanticContextKind>(SemanticContext);
646
669
}
0 commit comments