[TextAPI] Arch&Platform to Target
Summary:
This is a patch for updating TextAPI/Macho to read in targets as opposed to arch/platform.
This is because in previous versions tbd files only supported a single platform but that is no longer the case,
so, now its tracked by unique triples.
This precedes a seperate patch that will add the TBD-v4 format
Reviewers: ributzka, steven_wu, plotfi, compnerd, smeenai
Reviewed By: ributzka
Subscribers: mgorny, hiraditya, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67527
llvm-svn: 372396
diff --git a/llvm/unittests/TextAPI/TextStubV1Tests.cpp b/llvm/unittests/TextAPI/TextStubV1Tests.cpp
index 383bc41..4472b1c 100644
--- a/llvm/unittests/TextAPI/TextStubV1Tests.cpp
+++ b/llvm/unittests/TextAPI/TextStubV1Tests.cpp
@@ -87,8 +87,13 @@
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V1, File->getFileType());
auto Archs = AK_armv7 | AK_armv7s | AK_armv7k | AK_arm64;
+ auto Platform = PlatformKind::iOS;
+ TargetList Targets;
+ for (auto &&arch : Archs)
+ Targets.emplace_back(Target(arch, Platform));
EXPECT_EQ(Archs, File->getArchitectures());
- EXPECT_EQ(PlatformKind::iOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
EXPECT_EQ(std::string("Test.dylib"), File->getInstallName());
EXPECT_EQ(PackedVersion(2, 3, 4), File->getCurrentVersion());
EXPECT_EQ(PackedVersion(1, 0, 0), File->getCompatibilityVersion());
@@ -97,8 +102,8 @@
EXPECT_TRUE(File->isTwoLevelNamespace());
EXPECT_TRUE(File->isApplicationExtensionSafe());
EXPECT_FALSE(File->isInstallAPI());
- InterfaceFileRef client("clientA", Archs);
- InterfaceFileRef reexport("/usr/lib/libfoo.dylib", Archs);
+ InterfaceFileRef client("clientA", Targets);
+ InterfaceFileRef reexport("/usr/lib/libfoo.dylib", Targets);
EXPECT_EQ(1U, File->allowableClients().size());
EXPECT_EQ(client, File->allowableClients().front());
EXPECT_EQ(1U, File->reexportedLibraries().size());
@@ -117,6 +122,10 @@
EXPECT_EQ(sizeof(TBDv1Symbols) / sizeof(ExportedSymbol), Exports.size());
EXPECT_TRUE(
std::equal(Exports.begin(), Exports.end(), std::begin(TBDv1Symbols)));
+
+ File->addSymbol(SymbolKind::ObjectiveCClassEHType, "Class1", {Targets[1]});
+ File->addSymbol(SymbolKind::ObjectiveCInstanceVariable, "Class1._ivar1",
+ {Targets[1]});
}
TEST(TBDv1, ReadFile2) {
@@ -131,8 +140,13 @@
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V1, File->getFileType());
auto Archs = AK_armv7 | AK_armv7s | AK_armv7k | AK_arm64;
+ auto Platform = PlatformKind::iOS;
+ TargetList Targets;
+ for (auto &&arch : Archs)
+ Targets.emplace_back(Target(arch, Platform));
EXPECT_EQ(Archs, File->getArchitectures());
- EXPECT_EQ(PlatformKind::iOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
EXPECT_EQ(std::string("Test.dylib"), File->getInstallName());
EXPECT_EQ(PackedVersion(1, 0, 0), File->getCurrentVersion());
EXPECT_EQ(PackedVersion(1, 0, 0), File->getCompatibilityVersion());
@@ -169,25 +183,27 @@
"...\n";
InterfaceFile File;
+ TargetList Targets;
+ for (auto &&arch : AK_i386 | AK_x86_64)
+ Targets.emplace_back(Target(arch, PlatformKind::macOS));
File.setPath("libfoo.dylib");
File.setInstallName("/usr/lib/libfoo.dylib");
File.setFileType(FileType::TBD_V1);
- File.setArchitectures(AK_i386 | AK_x86_64);
- File.setPlatform(PlatformKind::macOS);
+ File.addTargets(Targets);
File.setCurrentVersion(PackedVersion(1, 2, 3));
File.setSwiftABIVersion(5);
File.setObjCConstraint(ObjCConstraintType::Retain_Release);
- File.addAllowableClient("clientA", AK_x86_64);
- File.addReexportedLibrary("/usr/lib/libfoo.dylib", AK_x86_64);
- File.addSymbol(SymbolKind::GlobalSymbol, "_sym1", AK_i386);
- File.addSymbol(SymbolKind::GlobalSymbol, "_sym2", AK_i386,
+ File.addAllowableClient("clientA", Targets[1]);
+ File.addReexportedLibrary("/usr/lib/libfoo.dylib", Targets[1]);
+ File.addSymbol(SymbolKind::GlobalSymbol, "_sym1", {Targets[0]});
+ File.addSymbol(SymbolKind::GlobalSymbol, "_sym2", {Targets[0]},
SymbolFlags::WeakDefined);
- File.addSymbol(SymbolKind::GlobalSymbol, "_sym3", AK_i386,
+ File.addSymbol(SymbolKind::GlobalSymbol, "_sym3", {Targets[0]},
SymbolFlags::ThreadLocalValue);
- File.addSymbol(SymbolKind::ObjectiveCClass, "Class1", AK_x86_64);
- File.addSymbol(SymbolKind::ObjectiveCClassEHType, "Class1", AK_x86_64);
+ File.addSymbol(SymbolKind::ObjectiveCClass, "Class1", {Targets[1]});
+ File.addSymbol(SymbolKind::ObjectiveCClassEHType, "Class1", {Targets[1]});
File.addSymbol(SymbolKind::ObjectiveCInstanceVariable, "Class1._ivar1",
- AK_x86_64);
+ {Targets[1]});
SmallString<4096> Buffer;
raw_svector_ostream OS(Buffer);
@@ -206,9 +222,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_macos, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::macOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V1, File->getFileType());
- EXPECT_EQ(PlatformKind::macOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv1, Platform_iOS) {
@@ -221,9 +239,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_ios, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::iOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V1, File->getFileType());
- EXPECT_EQ(PlatformKind::iOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv1, Platform_watchOS) {
@@ -236,9 +256,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_watchos, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::watchOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V1, File->getFileType());
- EXPECT_EQ(PlatformKind::watchOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv1, Platform_tvOS) {
@@ -251,9 +273,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_tvos, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::tvOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V1, File->getFileType());
- EXPECT_EQ(PlatformKind::tvOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv1, Platform_bridgeOS) {
@@ -266,9 +290,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_bridgeos, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::bridgeOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V1, File->getFileType());
- EXPECT_EQ(PlatformKind::bridgeOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv1, Swift_1_0) {
diff --git a/llvm/unittests/TextAPI/TextStubV2Tests.cpp b/llvm/unittests/TextAPI/TextStubV2Tests.cpp
index 6350b61..0a75fb2 100644
--- a/llvm/unittests/TextAPI/TextStubV2Tests.cpp
+++ b/llvm/unittests/TextAPI/TextStubV2Tests.cpp
@@ -89,8 +89,13 @@
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V2, File->getFileType());
auto Archs = AK_armv7 | AK_armv7s | AK_armv7k | AK_arm64;
+ auto Platform = PlatformKind::iOS;
+ TargetList Targets;
+ for (auto &&arch : Archs)
+ Targets.emplace_back(Target(arch, Platform));
EXPECT_EQ(Archs, File->getArchitectures());
- EXPECT_EQ(PlatformKind::iOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
EXPECT_EQ(std::string("Test.dylib"), File->getInstallName());
EXPECT_EQ(PackedVersion(2, 3, 4), File->getCurrentVersion());
EXPECT_EQ(PackedVersion(1, 0, 0), File->getCompatibilityVersion());
@@ -99,8 +104,8 @@
EXPECT_TRUE(File->isTwoLevelNamespace());
EXPECT_TRUE(File->isApplicationExtensionSafe());
EXPECT_TRUE(File->isInstallAPI());
- InterfaceFileRef client("clientA", Archs);
- InterfaceFileRef reexport("/usr/lib/libfoo.dylib", Archs);
+ InterfaceFileRef client("clientA", Targets);
+ InterfaceFileRef reexport("/usr/lib/libfoo.dylib", Targets);
EXPECT_EQ(1U, File->allowableClients().size());
EXPECT_EQ(client, File->allowableClients().front());
EXPECT_EQ(1U, File->reexportedLibraries().size());
@@ -155,8 +160,13 @@
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V2, File->getFileType());
auto Archs = AK_armv7 | AK_armv7s | AK_armv7k | AK_arm64;
+ auto Platform = PlatformKind::iOS;
+ TargetList Targets;
+ for (auto &&arch : Archs)
+ Targets.emplace_back(Target(arch, Platform));
EXPECT_EQ(Archs, File->getArchitectures());
- EXPECT_EQ(PlatformKind::iOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
EXPECT_EQ(std::string("Test.dylib"), File->getInstallName());
EXPECT_EQ(PackedVersion(1, 0, 0), File->getCurrentVersion());
EXPECT_EQ(PackedVersion(1, 0, 0), File->getCompatibilityVersion());
@@ -192,27 +202,29 @@
"...\n";
InterfaceFile File;
+ TargetList Targets;
+ for (auto &&arch : AK_i386 | AK_x86_64)
+ Targets.emplace_back(Target(arch, PlatformKind::macOS));
File.setPath("libfoo.dylib");
File.setInstallName("/usr/lib/libfoo.dylib");
File.setFileType(FileType::TBD_V2);
- File.setArchitectures(AK_i386 | AK_x86_64);
- File.setPlatform(PlatformKind::macOS);
+ File.addTargets(Targets);
File.setCurrentVersion(PackedVersion(1, 2, 3));
File.setTwoLevelNamespace();
File.setApplicationExtensionSafe();
File.setSwiftABIVersion(5);
File.setObjCConstraint(ObjCConstraintType::Retain_Release);
- File.addAllowableClient("clientA", AK_x86_64);
- File.addReexportedLibrary("/usr/lib/libfoo.dylib", AK_x86_64);
- File.addSymbol(SymbolKind::GlobalSymbol, "_sym1", AK_i386);
- File.addSymbol(SymbolKind::GlobalSymbol, "_sym2", AK_i386,
+ File.addAllowableClient("clientA", Targets[1]);
+ File.addReexportedLibrary("/usr/lib/libfoo.dylib", Targets[1]);
+ File.addSymbol(SymbolKind::GlobalSymbol, "_sym1", {Targets[0]});
+ File.addSymbol(SymbolKind::GlobalSymbol, "_sym2", {Targets[0]},
SymbolFlags::WeakDefined);
- File.addSymbol(SymbolKind::GlobalSymbol, "_sym3", AK_i386,
+ File.addSymbol(SymbolKind::GlobalSymbol, "_sym3", {Targets[0]},
SymbolFlags::ThreadLocalValue);
- File.addSymbol(SymbolKind::ObjectiveCClass, "Class1", AK_x86_64);
- File.addSymbol(SymbolKind::ObjectiveCClassEHType, "Class1", AK_x86_64);
+ File.addSymbol(SymbolKind::ObjectiveCClass, "Class1", {Targets[1]});
+ File.addSymbol(SymbolKind::ObjectiveCClassEHType, "Class1", {Targets[1]});
File.addSymbol(SymbolKind::ObjectiveCInstanceVariable, "Class1._ivar1",
- AK_x86_64);
+ {Targets[1]});
SmallString<4096> Buffer;
raw_svector_ostream OS(Buffer);
@@ -232,8 +244,10 @@
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_macos, "Test.tbd"));
EXPECT_TRUE(!!Result);
auto File = std::move(Result.get());
+ auto Platform = PlatformKind::macOS;
EXPECT_EQ(FileType::TBD_V2, File->getFileType());
- EXPECT_EQ(PlatformKind::macOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv2, Platform_iOS) {
@@ -246,9 +260,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_ios, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::iOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V2, File->getFileType());
- EXPECT_EQ(PlatformKind::iOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv2, Platform_watchOS) {
@@ -261,9 +277,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_watchos, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::watchOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V2, File->getFileType());
- EXPECT_EQ(PlatformKind::watchOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv2, Platform_tvOS) {
@@ -276,9 +294,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_tvos, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::tvOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V2, File->getFileType());
- EXPECT_EQ(PlatformKind::tvOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv2, Platform_bridgeOS) {
@@ -291,9 +311,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_bridgeos, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::bridgeOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V2, File->getFileType());
- EXPECT_EQ(PlatformKind::bridgeOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv2, Swift_1_0) {
@@ -415,7 +437,6 @@
"platform: macosx\n"
"install-name: Test.dylib\n"
"...\n";
-
auto Result = TextAPIReader::get(
MemoryBufferRef(tbd_v2_file_unknown_architecture, "Test.tbd"));
EXPECT_TRUE(!!Result);
@@ -423,9 +444,9 @@
TEST(TBDv2, UnknownPlatform) {
static const char tbd_v2_file_unknown_platform[] = "--- !tapi-tbd-v2\n"
- "archs: [ i386 ]\n"
- "platform: newOS\n"
- "...\n";
+ "archs: [ i386 ]\n"
+ "platform: newOS\n"
+ "...\n";
auto Result = TextAPIReader::get(
MemoryBufferRef(tbd_v2_file_unknown_platform, "Test.tbd"));
diff --git a/llvm/unittests/TextAPI/TextStubV3Tests.cpp b/llvm/unittests/TextAPI/TextStubV3Tests.cpp
index 9904e7b..10d76b5 100644
--- a/llvm/unittests/TextAPI/TextStubV3Tests.cpp
+++ b/llvm/unittests/TextAPI/TextStubV3Tests.cpp
@@ -23,7 +23,7 @@
bool ThreadLocalValue;
};
using ExportedSymbolSeq = std::vector<ExportedSymbol>;
-using UUIDs = std::vector<std::pair<Architecture, std::string>>;
+using UUIDs = std::vector<std::pair<Target, std::string>>;
inline bool operator<(const ExportedSymbol &lhs, const ExportedSymbol &rhs) {
return std::tie(lhs.Kind, lhs.Name) < std::tie(rhs.Kind, rhs.Name);
@@ -93,11 +93,18 @@
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V3, File->getFileType());
auto Archs = AK_armv7 | AK_arm64;
+ auto Platform = PlatformKind::iOS;
+ TargetList Targets;
+ for (auto &&arch : Archs)
+ Targets.emplace_back(Target(arch, Platform));
EXPECT_EQ(Archs, File->getArchitectures());
- UUIDs uuids = {{AK_armv7, "00000000-0000-0000-0000-000000000000"},
- {AK_arm64, "11111111-1111-1111-1111-111111111111"}};
- EXPECT_EQ(uuids, File->uuids());
- EXPECT_EQ(PlatformKind::iOS, File->getPlatform());
+ UUIDs Uuids = {{Target(AK_armv7, PlatformKind::unknown),
+ "00000000-0000-0000-0000-000000000000"},
+ {Target(AK_arm64, PlatformKind::unknown),
+ "11111111-1111-1111-1111-111111111111"}};
+ EXPECT_EQ(Uuids, File->uuids());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
EXPECT_EQ(std::string("Test.dylib"), File->getInstallName());
EXPECT_EQ(PackedVersion(2, 3, 4), File->getCurrentVersion());
EXPECT_EQ(PackedVersion(1, 0, 0), File->getCompatibilityVersion());
@@ -106,8 +113,8 @@
EXPECT_TRUE(File->isTwoLevelNamespace());
EXPECT_TRUE(File->isApplicationExtensionSafe());
EXPECT_TRUE(File->isInstallAPI());
- InterfaceFileRef client("clientA", Archs);
- InterfaceFileRef reexport("/usr/lib/libfoo.dylib", Archs);
+ InterfaceFileRef client("clientA", Targets);
+ InterfaceFileRef reexport("/usr/lib/libfoo.dylib", Targets);
EXPECT_EQ(1U, File->allowableClients().size());
EXPECT_EQ(client, File->allowableClients().front());
EXPECT_EQ(1U, File->reexportedLibraries().size());
@@ -151,27 +158,29 @@
"...\n";
InterfaceFile File;
+ TargetList Targets;
+ for (auto &&arch : AK_i386 | AK_x86_64)
+ Targets.emplace_back(Target(arch, PlatformKind::macOS));
File.setPath("libfoo.dylib");
File.setInstallName("/usr/lib/libfoo.dylib");
File.setFileType(FileType::TBD_V3);
- File.setArchitectures(AK_i386 | AK_x86_64);
- File.setPlatform(PlatformKind::macOS);
+ File.addTargets(Targets);
File.setCurrentVersion(PackedVersion(1, 2, 3));
File.setTwoLevelNamespace();
File.setApplicationExtensionSafe();
File.setSwiftABIVersion(5);
File.setObjCConstraint(ObjCConstraintType::Retain_Release);
- File.addAllowableClient("clientA", AK_x86_64);
- File.addReexportedLibrary("/usr/lib/libfoo.dylib", AK_x86_64);
- File.addSymbol(SymbolKind::GlobalSymbol, "_sym1", AK_i386);
- File.addSymbol(SymbolKind::GlobalSymbol, "_sym2", AK_i386,
+ File.addAllowableClient("clientA", Targets[1]);
+ File.addReexportedLibrary("/usr/lib/libfoo.dylib", Targets[1]);
+ File.addSymbol(SymbolKind::GlobalSymbol, "_sym1", {Targets[0]});
+ File.addSymbol(SymbolKind::GlobalSymbol, "_sym2", {Targets[0]},
SymbolFlags::WeakDefined);
- File.addSymbol(SymbolKind::GlobalSymbol, "_sym3", AK_i386,
+ File.addSymbol(SymbolKind::GlobalSymbol, "_sym3", {Targets[0]},
SymbolFlags::ThreadLocalValue);
- File.addSymbol(SymbolKind::ObjectiveCClass, "Class1", AK_x86_64);
- File.addSymbol(SymbolKind::ObjectiveCClassEHType, "Class1", AK_x86_64);
+ File.addSymbol(SymbolKind::ObjectiveCClass, "Class1", {Targets[1]});
+ File.addSymbol(SymbolKind::ObjectiveCClassEHType, "Class1", {Targets[1]});
File.addSymbol(SymbolKind::ObjectiveCInstanceVariable, "Class1._ivar1",
- AK_x86_64);
+ {Targets[1]});
SmallString<4096> Buffer;
raw_svector_ostream OS(Buffer);
@@ -190,9 +199,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_macos, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::macOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V3, File->getFileType());
- EXPECT_EQ(PlatformKind::macOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv3, Platform_iOS) {
@@ -205,9 +216,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_ios, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::iOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V3, File->getFileType());
- EXPECT_EQ(PlatformKind::iOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv3, Platform_watchOS) {
@@ -220,9 +233,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_watchos, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::watchOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V3, File->getFileType());
- EXPECT_EQ(PlatformKind::watchOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv3, Platform_tvOS) {
@@ -236,8 +251,10 @@
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_tvos, "Test.tbd"));
EXPECT_TRUE(!!Result);
auto File = std::move(Result.get());
+ auto Platform = PlatformKind::tvOS;
EXPECT_EQ(FileType::TBD_V3, File->getFileType());
- EXPECT_EQ(PlatformKind::tvOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv3, Platform_bridgeOS) {
@@ -250,9 +267,11 @@
auto Result =
TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_bridgeos, "Test.tbd"));
EXPECT_TRUE(!!Result);
+ auto Platform = PlatformKind::bridgeOS;
auto File = std::move(Result.get());
EXPECT_EQ(FileType::TBD_V3, File->getFileType());
- EXPECT_EQ(PlatformKind::bridgeOS, File->getPlatform());
+ EXPECT_EQ(File->getPlatforms().size(), 1U);
+ EXPECT_EQ(Platform, *File->getPlatforms().begin());
}
TEST(TBDv3, Swift_1_0) {