<div class="chatlog__message-group"> <div id="chatlog__message-container-1159509049528815729" class="chatlog__message-container" data-message-id="1159509049528815729"> <div class="chatlog__message"> <div class="chatlog__message-aside"><img class="chatlog__avatar" src="https://cdn.discordapp.com/avatars/189711109966659584/95280765d1be73ce985dce15ea3585f6.png?size=512" alt="Avatar" loading="lazy"></div> <div class="chatlog__message-primary"> <div class="chatlog__header"><span class="chatlog__author" style="color:rgb(237,171,161)" title="omochimetaru" data-user-id="189711109966659584">omochimetaru</span> <a href="/channels/306995750418513920?category=main&channel=swift-2&message_id=1159511680255004742"><span class="chatlog__timestamp" title="Thursday, October 5, 2023 3:15 PM"></span></a><a href="#chatlog__message-container-1159509049528815729">10/5/2023 3:15 PM</a></div> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">swift-foundationの中に</span></div> </div> </div> </div> <div id="chatlog__message-container-1159509174577795153" class="chatlog__message-container" data-message-id="1159509174577795153"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:15 PM">3:15 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-swift">#if FOUNDATION_FRAMEWORK @_implementationOnly import _ForSwiftFoundation /// Wraps an `NSCalendar` with more Swift-like `Calendar` API. See also: `_NSSwiftCalendar`. /// This is only used in the case where we have custom Objective-C subclasses of `NSCalendar`. It is assumed that the subclass is Sendable. internal final class _CalendarBridged: _CalendarProtocol, @unchecked Sendable { let _calendar: NSCalendar</code></span></div> </div> </div> </div> <div id="chatlog__message-container-1159509215614861432" class="chatlog__message-container" data-message-id="1159509215614861432"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:15 PM">3:15 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">こういう <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">#if</code> があって、</span></div> </div> </div> </div> <div id="chatlog__message-container-1159509356308598926" class="chatlog__message-container" data-message-id="1159509356308598926"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:16 PM">3:16 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-swift">#if FOUNDATION_FRAMEWORK @_implementationOnly import _ForSwiftFoundation import CoreFoundation #else #endif</code> こういうのもあるから</span></div> </div> </div> </div> <div id="chatlog__message-container-1159509744608878613" class="chatlog__message-container" data-message-id="1159509744608878613"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:17 PM">3:17 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">おそらく、従来の <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">Foundation.framework</code> がインポートできる環境において機能していて、</span></div> </div> </div> </div> <div id="chatlog__message-container-1159509853836943420" class="chatlog__message-container" data-message-id="1159509853836943420"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:18 PM">3:18 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">実装を再利用するとか、ObjC-Bridgingを swift-foundation でも再実装しているんだと思うけど</span></div> </div> </div> </div> <div id="chatlog__message-container-1159509890239316038" class="chatlog__message-container" data-message-id="1159509890239316038"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:18 PM">3:18 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-swift">// MARK: - Bridging #if FOUNDATION_FRAMEWORK @available(macOS 10.10, iOS 8.0, watchOS 2.0, tvOS 9.0, *) extension Calendar : ReferenceConvertible { public typealias ReferenceType = NSCalendar } @available(macOS 10.10, iOS 8.0, watchOS 2.0, tvOS 9.0, *) extension Calendar : _ObjectiveCBridgeable { @_semantics("convertToObjectiveC") public func _bridgeToObjectiveC() -> NSCalendar { _calendar.bridgeToNSCalendar() } public static func _forceBridgeFromObjectiveC(_ input: NSCalendar, result: inout Calendar?) { if !_conditionallyBridgeFromObjectiveC(input, result: &result) { fatalError("Unable to bridge \(_ObjectiveCType.self) to \(self)") } } public static func _conditionallyBridgeFromObjectiveC(_ input: NSCalendar, result: inout Calendar?) -> Bool { result = Calendar(reference: input) return true } @_effects(readonly) public static func _unconditionallyBridgeFromObjectiveC(_ source: NSCalendar?) -> Calendar { var result: Calendar? _forceBridgeFromObjectiveC(source!, result: &result) return result! } } @available(macOS 10.10, iOS 8.0, watchOS 2.0, tvOS 9.0, *) extension NSCalendar : _HasCustomAnyHashableRepresentation { // Must be @nonobjc to avoid infinite recursion during bridging. @nonobjc public func _toCustomAnyHashable() -> AnyHashable? { return AnyHashable(self as Calendar) } } #endif // FOUNDATION_FRAMEWORK</code></span></div> </div> </div> </div> <div id="chatlog__message-container-1159509967171244134" class="chatlog__message-container" data-message-id="1159509967171244134"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:18 PM">3:18 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">特にこれが気になっている <code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-swift">@_implementationOnly import _ForSwiftFoundation</code></span></div> </div> </div> </div> <div id="chatlog__message-container-1159510066681102367" class="chatlog__message-container" data-message-id="1159510066681102367"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:19 PM">3:19 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">つまり、 <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">Foundation.framework</code> の中に <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">_ForSwiftFoundation</code> というモジュールがあるはずで、</span></div> </div> </div> </div> <div id="chatlog__message-container-1159510229327806586" class="chatlog__message-container" data-message-id="1159510229327806586"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:19 PM">3:19 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">意味としては 「for swift-foundation」で、swift-foundationが Foundation.framework を取り込む時に見せるためのヘッダー?可視性?を制御されたものだと思うんだけど</span></div> </div> </div> </div> <div id="chatlog__message-container-1159510525223387146" class="chatlog__message-container" data-message-id="1159510525223387146"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:20 PM">3:20 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">corelibs-foundationの中を見ててもそのようなモジュールを定義している場所が見つけられなくてなんだろうとなっている</span></div> </div> </div> </div> <div id="chatlog__message-container-1159510580676280412" class="chatlog__message-container" data-message-id="1159510580676280412"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:21 PM">3:21 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">唯一見つけたのがこのヘッダーファイルで <a href="https://github.com/apple/swift-corelibs-foundation/blame/8a9b69b5041b5069360239cd18304fd8e2eb91d9/CoreFoundation/Base.subproj/ForSwiftFoundationOnly.h#L12">https://github.com/apple/swift-corelibs-foundation/blame/8a9b69b5041b5069360239cd18304fd8e2eb91d9/CoreFoundation/Base.subproj/ForSwiftFoundationOnly.h#L12</a></span></div> </div> </div> </div> <div id="chatlog__message-container-1159510887678357544" class="chatlog__message-container" data-message-id="1159510887678357544"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:22 PM">3:22 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">でもこのヘッダー 2015年 (Swift2.2) のころからあるし、関係無さそうなんだよね</span> <span class="chatlog__edited-timestamp" title="Thursday, October 5, 2023 3:22 PM">(edited)</span></div> </div> </div> </div> <div id="chatlog__message-container-1159511078099746957" class="chatlog__message-container" data-message-id="1159511078099746957"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:23 PM">3:23 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">でもどっちもparkeraさんが関わっては居る</span></div> </div> </div> </div> <div id="chatlog__message-container-1159511608712777758" class="chatlog__message-container" data-message-id="1159511608712777758"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:25 PM">3:25 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-swift"> // _CalendarICU, if present static var calendarICUClass: _CalendarProtocol.Type = { #if FOUNDATION_FRAMEWORK _CalendarICU.self #else if let name = _typeByName("FoundationInternationalization._CalendarICU"), let t = name as? _CalendarProtocol.Type { return t } else { // Use the default gregorian class return _CalendarGregorian.self } #endif }()</code></span></div> </div> </div> </div> <div id="chatlog__message-container-1159511680255004742" class="chatlog__message-container" data-message-id="1159511680255004742"> <div class="chatlog__message"> <div class="chatlog__message-aside"> <div class="chatlog__short-timestamp" title="Thursday, October 5, 2023 3:25 PM">3:25 PM</div> </div> <div class="chatlog__message-primary"> <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">↑この <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">_CalendarICU</code> って型も corelibs-foundation の中から見つけられない。謎が深まる。</span></div> </div> </div> </div> </div>