From 750e7e8f73f4aa9a90c66967a1dce5a4acd13072 Mon Sep 17 00:00:00 2001 From: Alex Hoppen Date: Mon, 20 Aug 2018 11:15:50 -0700 Subject: [PATCH] [SourceKit] Remove option to regions reused as part of incremental parsing --- .../include/SourceKit/Core/LangSupport.h | 4 -- tools/SourceKit/lib/SwiftLang/SwiftEditor.cpp | 45 +++++-------------- .../tools/sourcekitd/lib/API/Requests.cpp | 27 ----------- .../SourceKit/SwiftLang/CursorInfoTest.cpp | 6 --- unittests/SourceKit/SwiftLang/EditingTest.cpp | 5 --- utils/gyb_sourcekit_support/UIDs.py | 2 - 6 files changed, 12 insertions(+), 77 deletions(-) diff --git a/tools/SourceKit/include/SourceKit/Core/LangSupport.h b/tools/SourceKit/include/SourceKit/Core/LangSupport.h index aa07f5e789a..811323c4535 100644 --- a/tools/SourceKit/include/SourceKit/Core/LangSupport.h +++ b/tools/SourceKit/include/SourceKit/Core/LangSupport.h @@ -273,10 +273,6 @@ public: } virtual SyntaxTreeTransferMode syntaxTreeTransferMode() = 0; - virtual bool syntaxReuseInfoEnabled() = 0; - virtual void - handleSyntaxReuseRegions(std::vector ReuseRegions) = 0; - virtual void finished() {} }; diff --git a/tools/SourceKit/lib/SwiftLang/SwiftEditor.cpp b/tools/SourceKit/lib/SwiftLang/SwiftEditor.cpp index 811d146db69..1ce0f301280 100644 --- a/tools/SourceKit/lib/SwiftLang/SwiftEditor.cpp +++ b/tools/SourceKit/lib/SwiftLang/SwiftEditor.cpp @@ -2265,44 +2265,23 @@ void SwiftLangSupport::editorReplaceText(StringRef Name, EditorDoc->readSyntaxInfo(Consumer); // Log reuse information - if (SyntaxCache.hasValue()) { - // Avoid computing the reused ranges if the consumer doesn't care about - // them - if (Consumer.syntaxReuseInfoEnabled()) { - auto &SyntaxTree = EditorDoc->getSyntaxTree(); - auto ReuseRegions = SyntaxCache->getReusedRegions(*SyntaxTree); + if (SyntaxCache.hasValue() && LogReuseRegions) { + auto &SyntaxTree = EditorDoc->getSyntaxTree(); + auto ReuseRegions = SyntaxCache->getReusedRegions(*SyntaxTree); + LOG_SECTION("SyntaxCache", InfoHighPrio) { + Log->getOS() << "Reused "; - // Abstract away from SyntaxReuseRegions to std::pair - // so that SourceKit doesn't have to import swiftParse - std::vector ReuseRegionOffsets; - ReuseRegionOffsets.reserve(ReuseRegions.size()); + bool FirstIteration = true; for (auto ReuseRegion : ReuseRegions) { - auto Start = ReuseRegion.Start.getOffset(); - auto End = ReuseRegion.End.getOffset(); - ReuseRegionOffsets.push_back({Start, End}); - } - Consumer.handleSyntaxReuseRegions(ReuseRegionOffsets); - } - if (LogReuseRegions) { - auto &SyntaxTree = EditorDoc->getSyntaxTree(); - auto ReuseRegions = SyntaxCache->getReusedRegions(*SyntaxTree); - LOG_SECTION("SyntaxCache", InfoHighPrio) { - Log->getOS() << "Reused "; - - bool FirstIteration = true; - for (auto ReuseRegion : ReuseRegions) { - if (!FirstIteration) { - Log->getOS() << ", "; - } else { - FirstIteration = false; - } - - Log->getOS() << ReuseRegion.Start << " - " << ReuseRegion.End; + if (!FirstIteration) { + Log->getOS() << ", "; + } else { + FirstIteration = false; } + + Log->getOS() << ReuseRegion.Start << " - " << ReuseRegion.End; } } - } else { - Consumer.handleSyntaxReuseRegions({}); } if (Consumer.syntaxTreeEnabled()) { diff --git a/tools/SourceKit/tools/sourcekitd/lib/API/Requests.cpp b/tools/SourceKit/tools/sourcekitd/lib/API/Requests.cpp index a010169fca6..7bee3afc866 100644 --- a/tools/SourceKit/tools/sourcekitd/lib/API/Requests.cpp +++ b/tools/SourceKit/tools/sourcekitd/lib/API/Requests.cpp @@ -81,7 +81,6 @@ struct SKEditorConsumerOptions { SyntaxTreeSerializationFormat SyntaxSerializationFormat = SyntaxTreeSerializationFormat::JSON; bool SyntacticOnly = false; - bool EnableSyntaxReuseInfo = false; }; } // anonymous namespace @@ -471,9 +470,6 @@ void handleRequestImpl(sourcekitd_object_t ReqObj, ResponseReceiver Rec) { auto SerializationFormatUID = Req.getUID(KeySyntaxTreeSerializationFormat); int64_t SyntacticOnly = false; Req.getInt64(KeySyntacticOnly, SyntacticOnly, /*isOptional=*/true); - int64_t EnableSyntaxReuseInfo = false; - Req.getInt64(KeyEnableSyntaxReuseRegions, EnableSyntaxReuseInfo, - /*isOptional=*/true); SKEditorConsumerOptions Opts; Opts.EnableSyntaxMap = EnableSyntaxMap; @@ -486,7 +482,6 @@ void handleRequestImpl(sourcekitd_object_t ReqObj, ResponseReceiver Rec) { return Rec(createErrorRequestFailed("Invalid serialization format")); Opts.SyntaxSerializationFormat = SyntaxSerializationFormat.getValue(); Opts.SyntacticOnly = SyntacticOnly; - Opts.EnableSyntaxReuseInfo = EnableSyntaxReuseInfo; return Rec(editorOpen(*Name, InputBuf.get(), Opts, Args)); } if (ReqUID == RequestEditorClose) { @@ -519,9 +514,6 @@ void handleRequestImpl(sourcekitd_object_t ReqObj, ResponseReceiver Rec) { Req.getInt64(KeyEnableDiagnostics, EnableDiagnostics, /*isOptional=*/true); int64_t SyntacticOnly = false; Req.getInt64(KeySyntacticOnly, SyntacticOnly, /*isOptional=*/true); - int64_t EnableSyntaxReuseInfo = false; - Req.getInt64(KeyEnableSyntaxReuseRegions, EnableSyntaxReuseInfo, - /*isOptional=*/true); auto TransferModeUID = Req.getUID(KeySyntaxTreeTransferMode); auto SerializationFormatUID = Req.getUID(KeySyntaxTreeSerializationFormat); @@ -535,9 +527,7 @@ void handleRequestImpl(sourcekitd_object_t ReqObj, ResponseReceiver Rec) { if (!SyntaxSerializationFormat) return Rec(createErrorRequestFailed("Invalid serialization format")); Opts.SyntaxSerializationFormat = SyntaxSerializationFormat.getValue(); - Opts.EnableSyntaxReuseInfo = EnableSyntaxReuseInfo; Opts.SyntacticOnly = SyntacticOnly; - Opts.EnableSyntaxReuseInfo = EnableSyntaxReuseInfo; return Rec(editorReplaceText(*Name, InputBuf.get(), Offset, Length, Opts)); } @@ -2120,10 +2110,6 @@ public: void handleSyntaxTree(const swift::syntax::SourceFileSyntax &SyntaxTree, std::unordered_set &ReusedNodeIds) override; - bool syntaxReuseInfoEnabled() override { return Opts.EnableSyntaxReuseInfo; } - void - handleSyntaxReuseRegions(std::vector ReuseRegions) override; - SyntaxTreeTransferMode syntaxTreeTransferMode() override { return Opts.SyntaxTransferMode; } @@ -2537,19 +2523,6 @@ void SKEditorConsumer::handleSyntaxTree( } } -void SKEditorConsumer::handleSyntaxReuseRegions( - std::vector ReuseRegions) { - if (Opts.EnableSyntaxReuseInfo) { - auto Array = Dict.setArray(KeySyntaxReuseRegions); - - for (auto Region : ReuseRegions) { - auto SubDict = Array.appendDictionary(); - SubDict.set(KeyOffset, Region.Start); - SubDict.set(KeyLength, Region.End - Region.Start); - } - } -} - static sourcekitd_response_t editorFindUSR(StringRef DocumentName, StringRef USR) { ResponseBuilder RespBuilder; diff --git a/unittests/SourceKit/SwiftLang/CursorInfoTest.cpp b/unittests/SourceKit/SwiftLang/CursorInfoTest.cpp index fd10a44ffe8..04d25021fb5 100644 --- a/unittests/SourceKit/SwiftLang/CursorInfoTest.cpp +++ b/unittests/SourceKit/SwiftLang/CursorInfoTest.cpp @@ -85,12 +85,6 @@ class NullEditorConsumer : public EditorConsumer { return SyntaxTreeTransferMode::Off; } - bool syntaxReuseInfoEnabled() override { return false; } - - void - handleSyntaxReuseRegions(std::vector ReuseRegions) override { - } - public: bool needsSema = false; }; diff --git a/unittests/SourceKit/SwiftLang/EditingTest.cpp b/unittests/SourceKit/SwiftLang/EditingTest.cpp index 96e97519082..b0ffed709d6 100644 --- a/unittests/SourceKit/SwiftLang/EditingTest.cpp +++ b/unittests/SourceKit/SwiftLang/EditingTest.cpp @@ -93,11 +93,6 @@ private: return SyntaxTreeTransferMode::Off; } - bool syntaxReuseInfoEnabled() override { return false; } - - void - handleSyntaxReuseRegions(std::vector ReuseRegions) override { - } }; struct DocUpdateMutexState { diff --git a/utils/gyb_sourcekit_support/UIDs.py b/utils/gyb_sourcekit_support/UIDs.py index 37dd4606362..c3b8c0c34f2 100644 --- a/utils/gyb_sourcekit_support/UIDs.py +++ b/utils/gyb_sourcekit_support/UIDs.py @@ -47,9 +47,7 @@ UID_KEYS = [ KEY('Length', 'key.length'), KEY('SourceFile', 'key.sourcefile'), KEY('SerializedSyntaxTree', 'key.serialized_syntax_tree'), - KEY('SyntaxReuseRegions', 'key.syntaxreuseregions'), KEY('SourceText', 'key.sourcetext'), - KEY('EnableSyntaxReuseRegions', 'key.enablesyntaxreuseregions'), KEY('EnableSyntaxMap', 'key.enablesyntaxmap'), KEY('SyntaxTreeTransferMode', 'key.syntaxtreetransfermode'), KEY('SyntaxTreeSerializationFormat',