mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge pull request #18848 from ahoppen/remove-reuse-regions
[SourceKit] Remove option to regions reused as part of incremental parsing
This commit is contained in:
@@ -273,10 +273,6 @@ public:
|
||||
}
|
||||
virtual SyntaxTreeTransferMode syntaxTreeTransferMode() = 0;
|
||||
|
||||
virtual bool syntaxReuseInfoEnabled() = 0;
|
||||
virtual void
|
||||
handleSyntaxReuseRegions(std::vector<SourceFileRange> ReuseRegions) = 0;
|
||||
|
||||
virtual void finished() {}
|
||||
};
|
||||
|
||||
|
||||
@@ -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<unsigned, unsigned>
|
||||
// so that SourceKit doesn't have to import swiftParse
|
||||
std::vector<SourceFileRange> 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()) {
|
||||
|
||||
@@ -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<unsigned> &ReusedNodeIds) override;
|
||||
|
||||
bool syntaxReuseInfoEnabled() override { return Opts.EnableSyntaxReuseInfo; }
|
||||
void
|
||||
handleSyntaxReuseRegions(std::vector<SourceFileRange> ReuseRegions) override;
|
||||
|
||||
SyntaxTreeTransferMode syntaxTreeTransferMode() override {
|
||||
return Opts.SyntaxTransferMode;
|
||||
}
|
||||
@@ -2537,19 +2523,6 @@ void SKEditorConsumer::handleSyntaxTree(
|
||||
}
|
||||
}
|
||||
|
||||
void SKEditorConsumer::handleSyntaxReuseRegions(
|
||||
std::vector<SourceFileRange> 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;
|
||||
|
||||
@@ -85,12 +85,6 @@ class NullEditorConsumer : public EditorConsumer {
|
||||
return SyntaxTreeTransferMode::Off;
|
||||
}
|
||||
|
||||
bool syntaxReuseInfoEnabled() override { return false; }
|
||||
|
||||
void
|
||||
handleSyntaxReuseRegions(std::vector<SourceFileRange> ReuseRegions) override {
|
||||
}
|
||||
|
||||
public:
|
||||
bool needsSema = false;
|
||||
};
|
||||
|
||||
@@ -93,11 +93,6 @@ private:
|
||||
return SyntaxTreeTransferMode::Off;
|
||||
}
|
||||
|
||||
bool syntaxReuseInfoEnabled() override { return false; }
|
||||
|
||||
void
|
||||
handleSyntaxReuseRegions(std::vector<SourceFileRange> ReuseRegions) override {
|
||||
}
|
||||
};
|
||||
|
||||
struct DocUpdateMutexState {
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user