@@ -659,7 +659,7 @@ class SwiftDocumentSemanticInfo :
659659 }
660660
661661private:
662- std::vector<SwiftSemanticToken> takeSemanticTokens (
662+ std::vector<SwiftSemanticToken> getSemanticTokens (
663663 ImmutableTextSnapshotRef NewSnapshot);
664664
665665 Optional<std::vector<DiagnosticEntryInfo>> getSemanticDiagnostics (
@@ -760,26 +760,28 @@ void SwiftDocumentSemanticInfo::readSemanticInfo(
760760
761761 llvm::sys::ScopedLock L (Mtx);
762762
763- Tokens = takeSemanticTokens (NewSnapshot);
763+ Tokens = getSemanticTokens (NewSnapshot);
764764 Diags = getSemanticDiagnostics (NewSnapshot, ParserDiags);
765765}
766766
767767std::vector<SwiftSemanticToken>
768- SwiftDocumentSemanticInfo::takeSemanticTokens (
768+ SwiftDocumentSemanticInfo::getSemanticTokens (
769769 ImmutableTextSnapshotRef NewSnapshot) {
770770
771771 llvm::sys::ScopedLock L (Mtx);
772772
773773 if (SemaToks.empty ())
774774 return {};
775775
776+ auto result = SemaToks;
777+
776778 // Adjust the position of the tokens.
777779 TokSnapshot->foreachReplaceUntil (NewSnapshot,
778780 [&](ReplaceImmutableTextUpdateRef Upd) -> bool {
779- if (SemaToks .empty ())
781+ if (result .empty ())
780782 return false ;
781783
782- auto ReplaceBegin = std::lower_bound (SemaToks .begin (), SemaToks .end (),
784+ auto ReplaceBegin = std::lower_bound (result .begin (), result .end (),
783785 Upd->getByteOffset (),
784786 [&](const SwiftSemanticToken &Tok, unsigned StartOffset) -> bool {
785787 return Tok.ByteOffset +Tok.Length < StartOffset;
@@ -789,7 +791,7 @@ SwiftDocumentSemanticInfo::takeSemanticTokens(
789791 if (Upd->getLength () == 0 ) {
790792 ReplaceEnd = ReplaceBegin;
791793 } else {
792- ReplaceEnd = std::upper_bound (ReplaceBegin, SemaToks .end (),
794+ ReplaceEnd = std::upper_bound (ReplaceBegin, result .end (),
793795 Upd->getByteOffset () + Upd->getLength (),
794796 [&](unsigned EndOffset, const SwiftSemanticToken &Tok) -> bool {
795797 return EndOffset < Tok.ByteOffset ;
@@ -800,14 +802,14 @@ SwiftDocumentSemanticInfo::takeSemanticTokens(
800802 int Delta = InsertLen - Upd->getLength ();
801803 if (Delta != 0 ) {
802804 for (std::vector<SwiftSemanticToken>::iterator
803- I = ReplaceEnd, E = SemaToks .end (); I != E; ++I)
805+ I = ReplaceEnd, E = result .end (); I != E; ++I)
804806 I->ByteOffset += Delta;
805807 }
806- SemaToks .erase (ReplaceBegin, ReplaceEnd);
808+ result .erase (ReplaceBegin, ReplaceEnd);
807809 return true ;
808810 });
809811
810- return std::move (SemaToks) ;
812+ return result ;
811813}
812814
813815Optional<std::vector<DiagnosticEntryInfo>>
0 commit comments