@@ -686,8 +686,73 @@ final class DumpTests: XCTestCase {
686
686
func testKeyPath( ) {
687
687
var dump = " "
688
688
689
- #if swift(>=5.8)
690
- if #available( macOS 13 . 3 , iOS 16 . 4 , watchOS 9 . 4 , tvOS 16 . 4 , * ) {
689
+ // NB: This code path marks the expectation of relying on SE-0369's
690
+ // `AnyKeyPath.debugDescription`, which currently has a crash related to dynamic member lookup:
691
+ // https://github.com/apple/swift/issues/64865
692
+ //
693
+ // #if swift(>=5.8)
694
+ // if #available(macOS 13.3, iOS 16.4, watchOS 9.4, tvOS 16.4, *) {
695
+ // dump = ""
696
+ // customDump(\UserClass.name, to: &dump)
697
+ // XCTAssertNoDifference(
698
+ // dump,
699
+ // #"""
700
+ // \UserClass.name
701
+ // """#
702
+ // )
703
+ //
704
+ // dump = ""
705
+ // customDump(\Pair.driver.name, to: &dump)
706
+ // XCTAssertNoDifference(
707
+ // dump,
708
+ // #"""
709
+ // \Pair.driver.name
710
+ // """#
711
+ // )
712
+ //
713
+ // dump = ""
714
+ // customDump(\User.name.count, to: &dump)
715
+ // XCTAssertNoDifference(
716
+ // dump,
717
+ // #"""
718
+ // \User.name.count
719
+ // """#
720
+ // )
721
+ //
722
+ // dump = ""
723
+ // customDump(\(x: Double, y: Double).x, to: &dump)
724
+ // XCTAssertNoDifference(
725
+ // dump,
726
+ // #"""
727
+ // \(x: Double, y: Double).x
728
+ // """#
729
+ // )
730
+ //
731
+ // dump = ""
732
+ // customDump(\Item.$isInStock, to: &dump)
733
+ // XCTAssertNoDifference(
734
+ // dump,
735
+ // #"""
736
+ // \Item.$isInStock
737
+ // """#
738
+ // )
739
+ //
740
+ // // NB: This currently crashes when using Swift's `debugDescription`:
741
+ // // https://github.com/apple/swift/issues/64865
742
+ // dump = ""
743
+ // customDump(\Wrapped<String>.count, to: &dump)
744
+ // XCTAssertNoDifference(
745
+ // dump,
746
+ // #"""
747
+ // \Wrapped.count
748
+ // """#
749
+ // )
750
+ // return
751
+ // }
752
+ // #endif
753
+ #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
754
+ // Run twice to exercise cached lookup
755
+ for _ in 1 ... 2 {
691
756
dump = " "
692
757
customDump ( \UserClass . name, to: & dump)
693
758
XCTAssertNoDifference (
@@ -711,7 +776,7 @@ final class DumpTests: XCTestCase {
711
776
XCTAssertNoDifference (
712
777
dump,
713
778
#"""
714
- \ User.name.count
779
+ KeyPath< User, Int>
715
780
"""#
716
781
)
717
782
@@ -720,7 +785,7 @@ final class DumpTests: XCTestCase {
720
785
XCTAssertNoDifference (
721
786
dump,
722
787
#"""
723
- \ (x: Double, y: Double).x
788
+ WritableKeyPath< (x: Double, y: Double), Double>
724
789
"""#
725
790
)
726
791
@@ -729,57 +794,16 @@ final class DumpTests: XCTestCase {
729
794
XCTAssertNoDifference (
730
795
dump,
731
796
#"""
732
- \Item.$isInStock
733
- """#
734
- )
735
- return
736
- }
737
- #endif
738
- #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
739
- // Run twice to exercise cached lookup
740
- for _ in 1 ... 2 {
741
- dump = " "
742
- customDump ( \UserClass . name, to: & dump)
743
- XCTAssertNoDifference (
744
- dump,
745
- #"""
746
- \UserClass.name
747
- """#
748
- )
749
-
750
- dump = " "
751
- customDump ( \Pair . driver. name, to: & dump)
752
- XCTAssertNoDifference (
753
- dump,
754
- #"""
755
- \Pair.driver.name
756
- """#
757
- )
758
-
759
- dump = " "
760
- customDump ( \User . name. count, to: & dump)
761
- XCTAssertNoDifference (
762
- dump,
763
- #"""
764
- KeyPath<User, Int>
765
- """#
766
- )
767
-
768
- dump = " "
769
- customDump ( \( x: Double, y: Double) . x, to: & dump)
770
- XCTAssertNoDifference (
771
- dump,
772
- #"""
773
- WritableKeyPath<(x: Double, y: Double), Double>
797
+ KeyPath<Item, Wrapped<Bool>>
774
798
"""#
775
799
)
776
800
777
801
dump = " "
778
- customDump ( \Item . $isInStock , to: & dump)
802
+ customDump ( \Wrapped < String > . count , to: & dump)
779
803
XCTAssertNoDifference (
780
804
dump,
781
805
#"""
782
- KeyPath<Item, Wrapped<Bool> >
806
+ KeyPath<Wrapped<String>, Int >
783
807
"""#
784
808
)
785
809
}
@@ -828,6 +852,15 @@ final class DumpTests: XCTestCase {
828
852
KeyPath<Item, Wrapped<Bool>>
829
853
"""#
830
854
)
855
+
856
+ dump = " "
857
+ customDump ( \Wrapped < String > . count, to: & dump)
858
+ XCTAssertNoDifference (
859
+ dump,
860
+ #"""
861
+ KeyPath<Wrapped<String>, Int>
862
+ """#
863
+ )
831
864
#endif
832
865
}
833
866
0 commit comments