Skip to content

Commit 47d71a5

Browse files
authored
Make traits optional in manifest deserialization (#7681)
# Motivation We are caching manifest JSONs to speed up loading. It can happen that we cached a manifest with an older SwiftPM version and have to load the manifest from JSON with a newer SwiftPM version. With the first traits PR we made the new fields non-optional. This led to failures when loading the manifest from the cache #7680. # Modification This PR makes the fields optional and we default to empty sets after loading deserialization.
1 parent e16b997 commit 47d71a5

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

Sources/PackageDescription/PackageDescriptionSerialization.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ enum Serialization {
145145

146146
let kind: Kind
147147
let moduleAliases: [String: String]?
148-
let traits: Set<Trait>
148+
let traits: Set<Trait>?
149149
}
150150

151151
// MARK: - platforms serialization
@@ -295,7 +295,7 @@ enum Serialization {
295295
let providers: [SystemPackageProvider]?
296296
let targets: [Target]
297297
let products: [Product]
298-
let traits: Set<Trait>
298+
let traits: Set<Trait>?
299299
let dependencies: [PackageDependency]
300300
let swiftLanguageVersions: [SwiftVersion]?
301301
let cLanguageStandard: CLanguageStandard?

Sources/PackageLoading/ManifestJSONParser.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ enum ManifestJSONParser {
115115
dependencies: dependencies,
116116
providers: input.package.providers?.map { .init($0) },
117117
products: try input.package.products.map { try .init($0) },
118-
traits: Set(input.package.traits.map { TraitDescription($0) }),
118+
traits: Set(input.package.traits?.map { TraitDescription($0) } ?? []),
119119
cxxLanguageStandard: input.package.cxxLanguageStandard?.rawValue,
120120
cLanguageStandard: input.package.cLanguageStandard?.rawValue
121121
)
@@ -638,7 +638,7 @@ extension MappablePackageDependency {
638638
path: path
639639
),
640640
productFilter: .everything,
641-
traits: Set(seed.traits.map { PackageDependency.Trait.init($0) })
641+
traits: Set(seed.traits?.map { PackageDependency.Trait.init($0) } ?? [])
642642
)
643643
case .sourceControl(let name, let location, let requirement):
644644
self.init(
@@ -649,7 +649,7 @@ extension MappablePackageDependency {
649649
requirement: .init(requirement)
650650
),
651651
productFilter: .everything,
652-
traits: Set(seed.traits.map { PackageDependency.Trait.init($0) })
652+
traits: Set(seed.traits?.map { PackageDependency.Trait.init($0) } ?? [])
653653
)
654654
case .registry(let id, let requirement):
655655
self.init(
@@ -659,7 +659,7 @@ extension MappablePackageDependency {
659659
requirement: .init(requirement)
660660
),
661661
productFilter: .everything,
662-
traits: Set(seed.traits.map { PackageDependency.Trait.init($0) })
662+
traits: Set(seed.traits?.map { PackageDependency.Trait.init($0) } ?? [])
663663
)
664664
}
665665
}

0 commit comments

Comments
 (0)