This was mistakenly relying on a Darwin-style bridged cast. So…:

… only fetch values that are objects — it makes a new warning happen on Darwin that I can't silence, but it will work on both platforms and without warnings on Linux.
diff --git a/Foundation/UserDefaults.swift b/Foundation/UserDefaults.swift
index 88cf816..275a7d8 100644
--- a/Foundation/UserDefaults.swift
+++ b/Foundation/UserDefaults.swift
@@ -268,7 +268,15 @@
     }
     
     open func register(defaults registrationDictionary: [String : Any]) {
-        registeredDefaults.merge(registrationDictionary.mapValues { _SwiftValue.fetch(nonOptional: $0 as AnyObject) }, uniquingKeysWith: { $1 })
+        registeredDefaults.merge(registrationDictionary.mapValues { value in
+            // This line will produce a 'Conditional cast always succeeds' warning on Darwin, since Darwin has bridging casts of any value to an object,
+            // but is required for non-Darwin to work correctly, since that platform _doesn't_ have bridging casts of that kind for now.
+            if let object = value as? AnyObject {
+                return _SwiftValue.fetch(nonOptional: object)
+            } else {
+                return value
+            }
+        }, uniquingKeysWith: { $1 })
     }
 
     open func addSuite(named suiteName: String) {