mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
ModuleObjcMessageTrace: also include a field for the current compiler version
This commit is contained in:
@@ -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())
|
||||||
|
|||||||
@@ -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":
|
||||||
|
|||||||
Reference in New Issue
Block a user