mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Serialization] Store offset of decls in .swiftsourceinfo
The locations stored in .swiftsourceinfo included the presumed file, line, and column. When a location is requested it would read these, open the external file, create a line map, and find the offset corresponding to that line/column. The offset is known during serialization though, so output it as well to avoid having to read the file and generate the line map. Since the serialized location is returned from `Decl::getLoc()`, it should not be the presumed location. Instead, also output the line directives so that the presumed location can be built as per normal locations. Finally, move the cache out of `Decl` and into `ASTContext`, since very few declarations will actually have their locations deserialized. Make sure to actually write to that cache so it's used - the old cache was never written to.
This commit is contained in:
@@ -1243,9 +1243,9 @@ SerializedASTFile::getCommentForDecl(const Decl *D) const {
|
||||
return File.getCommentForDecl(D);
|
||||
}
|
||||
|
||||
Optional<BasicDeclLocs>
|
||||
SerializedASTFile::getBasicLocsForDecl(const Decl *D) const {
|
||||
return File.getBasicDeclLocsForDecl(D);
|
||||
Optional<ExternalSourceLocs::RawLocs>
|
||||
SerializedASTFile::getExternalRawLocsForDecl(const Decl *D) const {
|
||||
return File.getExternalRawLocsForDecl(D);
|
||||
}
|
||||
|
||||
Optional<StringRef>
|
||||
|
||||
Reference in New Issue
Block a user