                                     toolsVersion: toolsVersion,
                                     identityResolver: self.identityResolver,
                                     fileSystem: localFileSystem,
-                                    diagnostics: diagnostics,
+                                    diagnostics: manifestLoadingDiagnostics,
                                     on: .sharedConcurrent) { result in
 
                     switch result {
+                    // Diagnostics.fatalError indicates that a more specific diagnostic has already been added.
+                    case .failure(Diagnostics.fatalError):
+                        break
                     case .failure(let error):
-                        // Diagnostics.fatalError indicates that a more specific diagnostic has already been added.
-                        switch error {
-                        case Diagnostics.fatalError:
-                            break
-                        default:
-                            diagnostics.emit(error)
-                        }
+                        diagnostics.emit(error)
                     case .success(let manifest):
-                        self.delegate?.didLoadManifest(packagePath: packagePath, url: packageLocation, version: version, packageKind: packageKind, manifest: manifest, diagnostics: manifestDiagnostics.diagnostics)
+                        self.delegate?.didLoadManifest(packagePath: packagePath, url: packageLocation, version: version, packageKind: packageKind, manifest: manifest, diagnostics: manifestLoadingDiagnostics.diagnostics)
                     }
                     completion(result)
                 }

                try toolsVersion.validateToolsVersion(currentToolsVersion, packagePath: packagePath.pathString)

                // Load the manifest.
                manifestLoader.load(at: packagePath,
                                    packageIdentity: packageIdentity,
                                    packageKind: packageKind,

        diagnostics: DiagnosticsEngine,
        completion: @escaping (Result<Manifest, Error>) -> Void
    ) {
        // Load the manifest, bracketed by the calls to the delegate callbacks.
        delegate?.willLoadManifest(packagePath: packagePath, url: packageLocation, version: version, packageKind: packageKind)
        diagnostics.with(location: PackageLocation.Local(packagePath: packagePath)) { diagnostics in
            do {
                // Load the tools version for the package.
