99#include < swift/Basic/LLVMInitialize.h>
1010#include < swift/FrontendTool/FrontendTool.h>
1111
12- #include " SwiftExtractor.h"
13- #include " SwiftOutputRewrite.h"
12+ #include " swift/extractor/SwiftExtractor.h"
13+ #include " swift/extractor/SwiftOutputRewrite.h"
14+ #include " swift/extractor/remapping/SwiftOpenInterception.h"
1415
1516using namespace std ::string_literals;
1617
@@ -21,14 +22,6 @@ class Observer : public swift::FrontendObserver {
2122 public:
2223 explicit Observer (const codeql::SwiftExtractorConfiguration& config) : config{config} {}
2324
24- void parsedArgs (swift::CompilerInvocation& invocation) override {
25- auto & overlays = invocation.getSearchPathOptions ().VFSOverlayFiles ;
26- auto vfsFiles = codeql::collectVFSFiles (config);
27- for (auto & vfsFile : vfsFiles) {
28- overlays.push_back (vfsFile);
29- }
30- }
31-
3225 void performedSemanticAnalysis (swift::CompilerInstance& compiler) override {
3326 codeql::extractSwiftFiles (config, compiler);
3427 }
@@ -49,6 +42,7 @@ int main(int argc, char** argv) {
4942 // TODO: print usage
5043 return 1 ;
5144 }
45+
5246 // Required by Swift/LLVM
5347 PROGRAM_START (argc, argv);
5448 INITIALIZE_LLVM ();
@@ -58,6 +52,8 @@ int main(int argc, char** argv) {
5852 configuration.sourceArchiveDir = getenv_or (" CODEQL_EXTRACTOR_SWIFT_SOURCE_ARCHIVE_DIR" , " ." );
5953 configuration.scratchDir = getenv_or (" CODEQL_EXTRACTOR_SWIFT_SCRATCH_DIR" , " ." );
6054
55+ codeql::initRemapping (configuration.getTempArtifactDir ());
56+
6157 configuration.frontendOptions .reserve (argc - 1 );
6258 for (int i = 1 ; i < argc; i++) {
6359 configuration.frontendOptions .push_back (argv[i]);
@@ -67,7 +63,6 @@ int main(int argc, char** argv) {
6763 auto remapping =
6864 codeql::rewriteOutputsInPlace (configuration, configuration.patchedFrontendOptions );
6965 codeql::ensureDirectoriesForNewPathsExist (remapping);
70- codeql::storeRemappingForVFS (configuration, remapping);
7166 codeql::lockOutputSwiftModuleTraps (configuration, remapping);
7267
7368 std::vector<const char *> args;
@@ -77,5 +72,8 @@ int main(int argc, char** argv) {
7772
7873 Observer observer (configuration);
7974 int frontend_rc = swift::performFrontend (args, " swift-extractor" , (void *)main, &observer);
75+
76+ codeql::finalizeRemapping (remapping);
77+
8078 return frontend_rc;
8179}
0 commit comments