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 SyntaxTreeTransferMode syntaxTreeTransferMode() = 0;
|
||||||
|
|
||||||
virtual bool syntaxReuseInfoEnabled() = 0;
|
|
||||||
virtual void
|
|
||||||
handleSyntaxReuseRegions(std::vector<SourceFileRange> ReuseRegions) = 0;
|
|
||||||
|
|
||||||
virtual void finished() {}
|
virtual void finished() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -2265,44 +2265,23 @@ void SwiftLangSupport::editorReplaceText(StringRef Name,
|
|||||||
EditorDoc->readSyntaxInfo(Consumer);
|
EditorDoc->readSyntaxInfo(Consumer);
|
||||||
|
|
||||||
// Log reuse information
|
// Log reuse information
|
||||||
if (SyntaxCache.hasValue()) {
|
if (SyntaxCache.hasValue() && LogReuseRegions) {
|
||||||
// Avoid computing the reused ranges if the consumer doesn't care about
|
auto &SyntaxTree = EditorDoc->getSyntaxTree();
|
||||||
// them
|
auto ReuseRegions = SyntaxCache->getReusedRegions(*SyntaxTree);
|
||||||
if (Consumer.syntaxReuseInfoEnabled()) {
|
LOG_SECTION("SyntaxCache", InfoHighPrio) {
|
||||||
auto &SyntaxTree = EditorDoc->getSyntaxTree();
|
Log->getOS() << "Reused ";
|
||||||
auto ReuseRegions = SyntaxCache->getReusedRegions(*SyntaxTree);
|
|
||||||
|
|
||||||
// Abstract away from SyntaxReuseRegions to std::pair<unsigned, unsigned>
|
bool FirstIteration = true;
|
||||||
// so that SourceKit doesn't have to import swiftParse
|
|
||||||
std::vector<SourceFileRange> ReuseRegionOffsets;
|
|
||||||
ReuseRegionOffsets.reserve(ReuseRegions.size());
|
|
||||||
for (auto ReuseRegion : ReuseRegions) {
|
for (auto ReuseRegion : ReuseRegions) {
|
||||||
auto Start = ReuseRegion.Start.getOffset();
|
if (!FirstIteration) {
|
||||||
auto End = ReuseRegion.End.getOffset();
|
Log->getOS() << ", ";
|
||||||
ReuseRegionOffsets.push_back({Start, End});
|
} else {
|
||||||
}
|
FirstIteration = false;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Log->getOS() << ReuseRegion.Start << " - " << ReuseRegion.End;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
Consumer.handleSyntaxReuseRegions({});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Consumer.syntaxTreeEnabled()) {
|
if (Consumer.syntaxTreeEnabled()) {
|
||||||
|
|||||||
@@ -81,7 +81,6 @@ struct SKEditorConsumerOptions {
|
|||||||
SyntaxTreeSerializationFormat SyntaxSerializationFormat =
|
SyntaxTreeSerializationFormat SyntaxSerializationFormat =
|
||||||
SyntaxTreeSerializationFormat::JSON;
|
SyntaxTreeSerializationFormat::JSON;
|
||||||
bool SyntacticOnly = false;
|
bool SyntacticOnly = false;
|
||||||
bool EnableSyntaxReuseInfo = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
@@ -471,9 +470,6 @@ void handleRequestImpl(sourcekitd_object_t ReqObj, ResponseReceiver Rec) {
|
|||||||
auto SerializationFormatUID = Req.getUID(KeySyntaxTreeSerializationFormat);
|
auto SerializationFormatUID = Req.getUID(KeySyntaxTreeSerializationFormat);
|
||||||
int64_t SyntacticOnly = false;
|
int64_t SyntacticOnly = false;
|
||||||
Req.getInt64(KeySyntacticOnly, SyntacticOnly, /*isOptional=*/true);
|
Req.getInt64(KeySyntacticOnly, SyntacticOnly, /*isOptional=*/true);
|
||||||
int64_t EnableSyntaxReuseInfo = false;
|
|
||||||
Req.getInt64(KeyEnableSyntaxReuseRegions, EnableSyntaxReuseInfo,
|
|
||||||
/*isOptional=*/true);
|
|
||||||
|
|
||||||
SKEditorConsumerOptions Opts;
|
SKEditorConsumerOptions Opts;
|
||||||
Opts.EnableSyntaxMap = EnableSyntaxMap;
|
Opts.EnableSyntaxMap = EnableSyntaxMap;
|
||||||
@@ -486,7 +482,6 @@ void handleRequestImpl(sourcekitd_object_t ReqObj, ResponseReceiver Rec) {
|
|||||||
return Rec(createErrorRequestFailed("Invalid serialization format"));
|
return Rec(createErrorRequestFailed("Invalid serialization format"));
|
||||||
Opts.SyntaxSerializationFormat = SyntaxSerializationFormat.getValue();
|
Opts.SyntaxSerializationFormat = SyntaxSerializationFormat.getValue();
|
||||||
Opts.SyntacticOnly = SyntacticOnly;
|
Opts.SyntacticOnly = SyntacticOnly;
|
||||||
Opts.EnableSyntaxReuseInfo = EnableSyntaxReuseInfo;
|
|
||||||
return Rec(editorOpen(*Name, InputBuf.get(), Opts, Args));
|
return Rec(editorOpen(*Name, InputBuf.get(), Opts, Args));
|
||||||
}
|
}
|
||||||
if (ReqUID == RequestEditorClose) {
|
if (ReqUID == RequestEditorClose) {
|
||||||
@@ -519,9 +514,6 @@ void handleRequestImpl(sourcekitd_object_t ReqObj, ResponseReceiver Rec) {
|
|||||||
Req.getInt64(KeyEnableDiagnostics, EnableDiagnostics, /*isOptional=*/true);
|
Req.getInt64(KeyEnableDiagnostics, EnableDiagnostics, /*isOptional=*/true);
|
||||||
int64_t SyntacticOnly = false;
|
int64_t SyntacticOnly = false;
|
||||||
Req.getInt64(KeySyntacticOnly, SyntacticOnly, /*isOptional=*/true);
|
Req.getInt64(KeySyntacticOnly, SyntacticOnly, /*isOptional=*/true);
|
||||||
int64_t EnableSyntaxReuseInfo = false;
|
|
||||||
Req.getInt64(KeyEnableSyntaxReuseRegions, EnableSyntaxReuseInfo,
|
|
||||||
/*isOptional=*/true);
|
|
||||||
auto TransferModeUID = Req.getUID(KeySyntaxTreeTransferMode);
|
auto TransferModeUID = Req.getUID(KeySyntaxTreeTransferMode);
|
||||||
auto SerializationFormatUID = Req.getUID(KeySyntaxTreeSerializationFormat);
|
auto SerializationFormatUID = Req.getUID(KeySyntaxTreeSerializationFormat);
|
||||||
|
|
||||||
@@ -535,9 +527,7 @@ void handleRequestImpl(sourcekitd_object_t ReqObj, ResponseReceiver Rec) {
|
|||||||
if (!SyntaxSerializationFormat)
|
if (!SyntaxSerializationFormat)
|
||||||
return Rec(createErrorRequestFailed("Invalid serialization format"));
|
return Rec(createErrorRequestFailed("Invalid serialization format"));
|
||||||
Opts.SyntaxSerializationFormat = SyntaxSerializationFormat.getValue();
|
Opts.SyntaxSerializationFormat = SyntaxSerializationFormat.getValue();
|
||||||
Opts.EnableSyntaxReuseInfo = EnableSyntaxReuseInfo;
|
|
||||||
Opts.SyntacticOnly = SyntacticOnly;
|
Opts.SyntacticOnly = SyntacticOnly;
|
||||||
Opts.EnableSyntaxReuseInfo = EnableSyntaxReuseInfo;
|
|
||||||
|
|
||||||
return Rec(editorReplaceText(*Name, InputBuf.get(), Offset, Length, Opts));
|
return Rec(editorReplaceText(*Name, InputBuf.get(), Offset, Length, Opts));
|
||||||
}
|
}
|
||||||
@@ -2120,10 +2110,6 @@ public:
|
|||||||
void handleSyntaxTree(const swift::syntax::SourceFileSyntax &SyntaxTree,
|
void handleSyntaxTree(const swift::syntax::SourceFileSyntax &SyntaxTree,
|
||||||
std::unordered_set<unsigned> &ReusedNodeIds) override;
|
std::unordered_set<unsigned> &ReusedNodeIds) override;
|
||||||
|
|
||||||
bool syntaxReuseInfoEnabled() override { return Opts.EnableSyntaxReuseInfo; }
|
|
||||||
void
|
|
||||||
handleSyntaxReuseRegions(std::vector<SourceFileRange> ReuseRegions) override;
|
|
||||||
|
|
||||||
SyntaxTreeTransferMode syntaxTreeTransferMode() override {
|
SyntaxTreeTransferMode syntaxTreeTransferMode() override {
|
||||||
return Opts.SyntaxTransferMode;
|
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
|
static sourcekitd_response_t
|
||||||
editorFindUSR(StringRef DocumentName, StringRef USR) {
|
editorFindUSR(StringRef DocumentName, StringRef USR) {
|
||||||
ResponseBuilder RespBuilder;
|
ResponseBuilder RespBuilder;
|
||||||
|
|||||||
@@ -85,12 +85,6 @@ class NullEditorConsumer : public EditorConsumer {
|
|||||||
return SyntaxTreeTransferMode::Off;
|
return SyntaxTreeTransferMode::Off;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool syntaxReuseInfoEnabled() override { return false; }
|
|
||||||
|
|
||||||
void
|
|
||||||
handleSyntaxReuseRegions(std::vector<SourceFileRange> ReuseRegions) override {
|
|
||||||
}
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool needsSema = false;
|
bool needsSema = false;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -93,11 +93,6 @@ private:
|
|||||||
return SyntaxTreeTransferMode::Off;
|
return SyntaxTreeTransferMode::Off;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool syntaxReuseInfoEnabled() override { return false; }
|
|
||||||
|
|
||||||
void
|
|
||||||
handleSyntaxReuseRegions(std::vector<SourceFileRange> ReuseRegions) override {
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DocUpdateMutexState {
|
struct DocUpdateMutexState {
|
||||||
|
|||||||
@@ -47,9 +47,7 @@ UID_KEYS = [
|
|||||||
KEY('Length', 'key.length'),
|
KEY('Length', 'key.length'),
|
||||||
KEY('SourceFile', 'key.sourcefile'),
|
KEY('SourceFile', 'key.sourcefile'),
|
||||||
KEY('SerializedSyntaxTree', 'key.serialized_syntax_tree'),
|
KEY('SerializedSyntaxTree', 'key.serialized_syntax_tree'),
|
||||||
KEY('SyntaxReuseRegions', 'key.syntaxreuseregions'),
|
|
||||||
KEY('SourceText', 'key.sourcetext'),
|
KEY('SourceText', 'key.sourcetext'),
|
||||||
KEY('EnableSyntaxReuseRegions', 'key.enablesyntaxreuseregions'),
|
|
||||||
KEY('EnableSyntaxMap', 'key.enablesyntaxmap'),
|
KEY('EnableSyntaxMap', 'key.enablesyntaxmap'),
|
||||||
KEY('SyntaxTreeTransferMode', 'key.syntaxtreetransfermode'),
|
KEY('SyntaxTreeTransferMode', 'key.syntaxtreetransfermode'),
|
||||||
KEY('SyntaxTreeSerializationFormat',
|
KEY('SyntaxTreeSerializationFormat',
|
||||||
|
|||||||
Reference in New Issue
Block a user