ModuleObjcMessageTrace: also include a field for the current compiler version

This commit is contained in:
Xi Ge
2024-11-01 21:35:14 -07:00
parent 95f2523ef3
commit 6e42dfb470
2 changed files with 6 additions and 0 deletions

View File

@@ -23,6 +23,7 @@
#include "swift/Basic/JSONSerialization.h" #include "swift/Basic/JSONSerialization.h"
#include "swift/Basic/SourceManager.h" #include "swift/Basic/SourceManager.h"
#include "swift/Frontend/FrontendOptions.h" #include "swift/Frontend/FrontendOptions.h"
#include "swift/Frontend/ModuleInterfaceSupport.h"
#include "swift/IDE/SourceEntityWalker.h" #include "swift/IDE/SourceEntityWalker.h"
#include "clang/AST/DeclObjC.h" #include "clang/AST/DeclObjC.h"
@@ -819,6 +820,7 @@ bool swift::emitLoadedModuleTraceIfNeeded(ModuleDecl *mainModule,
const static unsigned OBJC_METHOD_TRACE_FILE_FORMAT_VERSION = 1; const static unsigned OBJC_METHOD_TRACE_FILE_FORMAT_VERSION = 1;
class ObjcMethodReferenceCollector: public SourceEntityWalker { class ObjcMethodReferenceCollector: public SourceEntityWalker {
std::string compilerVer;
std::string target; std::string target;
std::string targetVariant; std::string targetVariant;
SmallVector<StringRef, 32> FilePaths; SmallVector<StringRef, 32> FilePaths;
@@ -855,6 +857,8 @@ class ObjcMethodReferenceCollector: public SourceEntityWalker {
} }
public: public:
ObjcMethodReferenceCollector(ModuleDecl *MD) { ObjcMethodReferenceCollector(ModuleDecl *MD) {
compilerVer =
getSwiftInterfaceCompilerVersionForCurrentCompiler(MD->getASTContext());
auto &Opts = MD->getASTContext().LangOpts; auto &Opts = MD->getASTContext().LangOpts;
target = Opts.Target.str(); target = Opts.Target.str();
targetVariant = Opts.TargetVariant.has_value() ? targetVariant = Opts.TargetVariant.has_value() ?
@@ -868,6 +872,7 @@ public:
void serializeAsJson(llvm::raw_ostream &OS) { void serializeAsJson(llvm::raw_ostream &OS) {
llvm::json::OStream out(OS, /*IndentSize=*/4); llvm::json::OStream out(OS, /*IndentSize=*/4);
out.object([&] { out.object([&] {
out.attribute("swift-compiler-version", compilerVer);
out.attribute("format-vesion", OBJC_METHOD_TRACE_FILE_FORMAT_VERSION); out.attribute("format-vesion", OBJC_METHOD_TRACE_FILE_FORMAT_VERSION);
out.attribute("target", target); out.attribute("target", target);
if (!targetVariant.empty()) if (!targetVariant.empty())

View File

@@ -25,3 +25,4 @@ public func testProperties(_ x: FooClassBase, _ y: FooProtocolBase) {
// CHECK-DAG: "file_id": 1, // CHECK-DAG: "file_id": 1,
// CHECK-DAG: "file_path": "SOURCE_DIR/test/IDE/objc_send_collector_1.swift" // CHECK-DAG: "file_path": "SOURCE_DIR/test/IDE/objc_send_collector_1.swift"
// CHECK-DAG: "file_path": "SOURCE_DIR/test/IDE/Inputs/objc_send_collector_2.swift" // CHECK-DAG: "file_path": "SOURCE_DIR/test/IDE/Inputs/objc_send_collector_2.swift"
// CHECK-DAG: "swift-compiler-version":