@@ -659,7 +659,7 @@ class SwiftDocumentSemanticInfo :
659659 }
660660
661661private:
662- std::vector<SwiftSemanticToken> getSemanticTokens (
662+ std::vector<SwiftSemanticToken> takeSemanticTokens (
663663 ImmutableTextSnapshotRef NewSnapshot);
664664
665665 Optional<std::vector<DiagnosticEntryInfo>> getSemanticDiagnostics (
@@ -760,28 +760,26 @@ void SwiftDocumentSemanticInfo::readSemanticInfo(
760760
761761 llvm::sys::ScopedLock L (Mtx);
762762
763- Tokens = getSemanticTokens (NewSnapshot);
763+ Tokens = takeSemanticTokens (NewSnapshot);
764764 Diags = getSemanticDiagnostics (NewSnapshot, ParserDiags);
765765}
766766
767767std::vector<SwiftSemanticToken>
768- SwiftDocumentSemanticInfo::getSemanticTokens (
768+ SwiftDocumentSemanticInfo::takeSemanticTokens (
769769 ImmutableTextSnapshotRef NewSnapshot) {
770770
771771 llvm::sys::ScopedLock L (Mtx);
772772
773773 if (SemaToks.empty ())
774774 return {};
775775
776- auto result = SemaToks;
777-
778776 // Adjust the position of the tokens.
779777 TokSnapshot->foreachReplaceUntil (NewSnapshot,
780778 [&](ReplaceImmutableTextUpdateRef Upd) -> bool {
781- if (result .empty ())
779+ if (SemaToks .empty ())
782780 return false ;
783781
784- auto ReplaceBegin = std::lower_bound (result .begin (), result .end (),
782+ auto ReplaceBegin = std::lower_bound (SemaToks .begin (), SemaToks .end (),
785783 Upd->getByteOffset (),
786784 [&](const SwiftSemanticToken &Tok, unsigned StartOffset) -> bool {
787785 return Tok.ByteOffset +Tok.Length < StartOffset;
@@ -791,7 +789,7 @@ SwiftDocumentSemanticInfo::getSemanticTokens(
791789 if (Upd->getLength () == 0 ) {
792790 ReplaceEnd = ReplaceBegin;
793791 } else {
794- ReplaceEnd = std::upper_bound (ReplaceBegin, result .end (),
792+ ReplaceEnd = std::upper_bound (ReplaceBegin, SemaToks .end (),
795793 Upd->getByteOffset () + Upd->getLength (),
796794 [&](unsigned EndOffset, const SwiftSemanticToken &Tok) -> bool {
797795 return EndOffset < Tok.ByteOffset ;
@@ -802,14 +800,14 @@ SwiftDocumentSemanticInfo::getSemanticTokens(
802800 int Delta = InsertLen - Upd->getLength ();
803801 if (Delta != 0 ) {
804802 for (std::vector<SwiftSemanticToken>::iterator
805- I = ReplaceEnd, E = result .end (); I != E; ++I)
803+ I = ReplaceEnd, E = SemaToks .end (); I != E; ++I)
806804 I->ByteOffset += Delta;
807805 }
808- result .erase (ReplaceBegin, ReplaceEnd);
806+ SemaToks .erase (ReplaceBegin, ReplaceEnd);
809807 return true ;
810808 });
811809
812- return result ;
810+ return std::move (SemaToks) ;
813811}
814812
815813Optional<std::vector<DiagnosticEntryInfo>>
0 commit comments