diff --git a/Sources/SwiftDocC/Model/Rendering/DocumentationContentRenderer.swift b/Sources/SwiftDocC/Model/Rendering/DocumentationContentRenderer.swift index 1920d6ade8..f74413a4d4 100644 --- a/Sources/SwiftDocC/Model/Rendering/DocumentationContentRenderer.swift +++ b/Sources/SwiftDocC/Model/Rendering/DocumentationContentRenderer.swift @@ -211,11 +211,12 @@ public class DocumentationContentRenderer { guard let symbol = node.semantic as? Symbol, let currentPlatforms = documentationContext.configuration.externalMetadata.currentPlatforms, !currentPlatforms.isEmpty, - let symbolAvailability = symbol.availability + let symbolAvailability = symbol.availability?.availability, + !symbolAvailability.isEmpty // A symbol without availability items can't be in beta. else { return false } // Verify that if current platforms are in beta, they match the introduced version of the symbol - for availability in symbolAvailability.availability { + for availability in symbolAvailability { // If not available on this platform, skip to next platform. guard !availability.isUnconditionallyUnavailable, let introduced = availability.introducedVersion else { continue diff --git a/Tests/SwiftDocCTests/Model/SemaToRenderNodeTests.swift b/Tests/SwiftDocCTests/Model/SemaToRenderNodeTests.swift index 5dcf9e4b63..44cbc103a7 100644 --- a/Tests/SwiftDocCTests/Model/SemaToRenderNodeTests.swift +++ b/Tests/SwiftDocCTests/Model/SemaToRenderNodeTests.swift @@ -1922,6 +1922,21 @@ Document XCTAssertEqual(renderNode.metadata.platforms?.first?.isBeta, false) } + // Symbol with an empty set of availbility items. + + do { + + let (bundle, context, reference) = try makeTestBundle(currentPlatforms: [ + "Custom Name": PlatformVersion(VersionTriplet(100, 0, 0), beta: true) + ]) + let node = try context.entity(with: reference) + (node.semantic as? Symbol)?.availability = SymbolGraph.Symbol.Availability(availability: []) + let documentationContentRendered = DocumentationContentRenderer(documentationContext: context, bundle: bundle) + let isBeta = documentationContentRendered.isBeta(node) + // Verify that the symbol is not beta since it does not contains availability info. + XCTAssertFalse(isBeta) + } + // Different platform is beta do { let (bundle, context, reference) = try makeTestBundle(currentPlatforms: [