19
19
// but now crash. These are bugs in Swift 3 mode that should be fixed.
20
20
21
21
func concrete( _ x: Int ) { }
22
+ func concreteLabeled( x: Int ) { }
22
23
func concreteTwo( _ x: Int , _ y: Int ) { } // expected-note 3 {{'concreteTwo' declared here}}
23
24
func concreteTuple( _ x: ( Int , Int ) ) { }
24
25
25
26
do {
26
27
concrete ( 3 )
27
28
concrete ( ( 3 ) )
28
29
30
+ concreteLabeled ( x: 3 )
31
+ concreteLabeled ( x: ( 3 ) )
32
+ concreteLabeled ( ( x: 3 ) ) // expected-error {{missing argument label 'x:' in call}}
33
+
29
34
concreteTwo ( 3 , 4 )
30
35
concreteTwo ( ( 3 , 4 ) ) // expected-error {{missing argument for parameter #2 in call}}
31
36
72
77
}
73
78
74
79
func generic< T> ( _ x: T ) { }
80
+ func genericLabeled< T> ( x: T ) { }
75
81
func genericTwo< T, U> ( _ x: T , _ y: U ) { } // expected-note 5 {{'genericTwo' declared here}}
76
82
func genericTuple< T, U> ( _ x: ( T , U ) ) { }
77
83
81
87
generic ( ( 3 ) )
82
88
generic ( ( 3 , 4 ) )
83
89
90
+ genericLabeled ( x: 3 )
91
+ genericLabeled ( x: 3 , 4 ) // expected-error {{extra argument in call}}
92
+ genericLabeled ( x: ( 3 ) )
93
+ genericLabeled ( x: ( 3 , 4 ) )
94
+
84
95
genericTwo ( 3 , 4 )
85
96
genericTwo ( ( 3 , 4 ) ) // expected-error {{missing argument for parameter #2 in call}}
86
97
250
261
251
262
extension Concrete {
252
263
func generic< T> ( _ x: T ) { }
264
+ func genericLabeled< T> ( x: T ) { }
253
265
func genericTwo< T, U> ( _ x: T , _ y: U ) { } // expected-note 5 {{'genericTwo' declared here}}
254
266
func genericTuple< T, U> ( _ x: ( T , U ) ) { }
255
267
}
@@ -262,6 +274,11 @@ do {
262
274
s. generic ( ( 3 ) )
263
275
s. generic ( ( 3 , 4 ) )
264
276
277
+ s. genericLabeled ( x: 3 )
278
+ s. genericLabeled ( x: 3 , 4 ) // expected-error {{extra argument in call}}
279
+ s. genericLabeled ( x: ( 3 ) )
280
+ s. genericLabeled ( x: ( 3 , 4 ) )
281
+
265
282
s. genericTwo ( 3 , 4 )
266
283
s. genericTwo ( ( 3 , 4 ) ) // expected-error {{missing argument for parameter #2 in call}}
267
284
378
395
379
396
extension Concrete {
380
397
mutating func mutatingGeneric< T> ( _ x: T ) { }
398
+ mutating func mutatingGenericLabeled< T> ( x: T ) { }
381
399
mutating func mutatingGenericTwo< T, U> ( _ x: T , _ y: U ) { } // expected-note 5 {{'mutatingGenericTwo' declared here}}
382
400
mutating func mutatingGenericTuple< T, U> ( _ x: ( T , U ) ) { }
383
401
}
@@ -390,6 +408,11 @@ do {
390
408
s. mutatingGeneric ( ( 3 ) )
391
409
s. mutatingGeneric ( ( 3 , 4 ) )
392
410
411
+ s. mutatingGenericLabeled ( x: 3 )
412
+ s. mutatingGenericLabeled ( x: 3 , 4 ) // expected-error {{extra argument in call}}
413
+ s. mutatingGenericLabeled ( x: ( 3 ) )
414
+ s. mutatingGenericLabeled ( x: ( 3 , 4 ) )
415
+
393
416
s. mutatingGenericTwo ( 3 , 4 )
394
417
s. mutatingGenericTwo ( ( 3 , 4 ) ) // expected-error {{missing argument for parameter #2 in call}}
395
418
@@ -512,12 +535,19 @@ struct InitTuple {
512
535
init ( _ x: ( Int , Int ) ) { }
513
536
}
514
537
538
+ struct InitLabeledTuple {
539
+ init ( x: ( Int , Int ) ) { }
540
+ }
541
+
515
542
do {
516
543
_ = InitTwo ( 3 , 4 )
517
544
_ = InitTwo ( ( 3 , 4 ) ) // expected-error {{missing argument for parameter #2 in call}}
518
545
519
546
_ = InitTuple ( 3 , 4 ) // expected-error {{extra argument in call}}
520
547
_ = InitTuple ( ( 3 , 4 ) )
548
+
549
+ _ = InitLabeledTuple ( x: 3 , 4 ) // expected-error {{extra argument in call}}
550
+ _ = InitLabeledTuple ( x: ( 3 , 4 ) )
521
551
}
522
552
523
553
do {
@@ -556,6 +586,10 @@ struct SubscriptTuple {
556
586
subscript( _ x: ( Int , Int ) ) -> Int { get { return 0 } set { } }
557
587
}
558
588
589
+ struct SubscriptLabeledTuple {
590
+ subscript( x x: ( Int , Int ) ) -> Int { get { return 0 } set { } }
591
+ }
592
+
559
593
do {
560
594
let s1 = SubscriptTwo ( )
561
595
_ = s1 [ 3 , 4 ]
@@ -564,6 +598,10 @@ do {
564
598
let s2 = SubscriptTuple ( )
565
599
_ = s2 [ 3 , 4 ] // expected-error {{extra argument in call}}
566
600
_ = s2 [ ( 3 , 4 ) ]
601
+
602
+ let s3 = SubscriptLabeledTuple ( )
603
+ _ = s3 [ x: 3 , 4 ] // expected-error {{extra argument in call}}
604
+ _ = s3 [ x: ( 3 , 4 ) ]
567
605
}
568
606
569
607
do {
601
639
enum Enum {
602
640
case two( Int , Int ) // expected-note 3 {{'two' declared here}}
603
641
case tuple( ( Int , Int ) )
642
+ case labeledTuple( x: ( Int , Int ) )
604
643
}
605
644
606
645
do {
609
648
610
649
_ = Enum . tuple ( 3 , 4 ) // expected-error {{extra argument in call}}
611
650
_ = Enum . tuple ( ( 3 , 4 ) )
651
+
652
+ _ = Enum . labeledTuple ( x: 3 , 4 ) // expected-error {{extra argument in call}}
653
+ _ = Enum . labeledTuple ( x: ( 3 , 4 ) )
612
654
}
613
655
614
656
do {
@@ -643,6 +685,7 @@ struct Generic<T> {}
643
685
644
686
extension Generic {
645
687
func generic( _ x: T ) { }
688
+ func genericLabeled( x: T ) { }
646
689
func genericTwo( _ x: T , _ y: T ) { } // expected-note 2 {{'genericTwo' declared here}}
647
690
func genericTuple( _ x: ( T , T ) ) { }
648
691
}
653
696
s. generic ( 3.0 )
654
697
s. generic ( ( 3.0 ) )
655
698
699
+ s. genericLabeled ( x: 3.0 )
700
+ s. genericLabeled ( x: ( 3.0 ) )
701
+
656
702
s. genericTwo ( 3.0 , 4.0 )
657
703
s. genericTwo ( ( 3.0 , 4.0 ) ) // expected-error {{missing argument for parameter #2 in call}}
658
704
663
709
664
710
sTwo. generic ( 3.0 , 4.0 ) // expected-error {{extra argument in call}}
665
711
sTwo. generic ( ( 3.0 , 4.0 ) )
712
+
713
+ sTwo. genericLabeled ( x: 3.0 , 4.0 ) // expected-error {{extra argument in call}}
714
+ sTwo. genericLabeled ( x: ( 3.0 , 4.0 ) )
666
715
}
667
716
668
717
do {
717
766
718
767
extension Generic {
719
768
mutating func mutatingGeneric( _ x: T ) { }
769
+ mutating func mutatingGenericLabeled( x: T ) { }
720
770
mutating func mutatingGenericTwo( _ x: T , _ y: T ) { } // expected-note 2 {{'mutatingGenericTwo' declared here}}
721
771
mutating func mutatingGenericTuple( _ x: ( T , T ) ) { }
722
772
}
727
777
s. mutatingGeneric ( 3.0 )
728
778
s. mutatingGeneric ( ( 3.0 ) )
729
779
780
+ s. mutatingGenericLabeled ( x: 3.0 )
781
+ s. mutatingGenericLabeled ( x: ( 3.0 ) )
782
+
730
783
s. mutatingGenericTwo ( 3.0 , 4.0 )
731
784
s. mutatingGenericTwo ( ( 3.0 , 4.0 ) ) // expected-error {{missing argument for parameter #2 in call}}
732
785
737
790
738
791
sTwo. mutatingGeneric ( 3.0 , 4.0 ) // expected-error {{extra argument in call}}
739
792
sTwo. mutatingGeneric ( ( 3.0 , 4.0 ) )
793
+
794
+ sTwo. mutatingGenericLabeled ( x: 3.0 , 4.0 ) // expected-error {{extra argument in call}}
795
+ sTwo. mutatingGenericLabeled ( x: ( 3.0 , 4.0 ) )
740
796
}
741
797
742
798
do {
809
865
810
866
let sTwo = Generic < ( Double , Double ) > ( )
811
867
812
- sTwo. genericFunction ( 3.0 , 4.0 ) // FIXME: Diagnoses in Swift 3 mode // expected-error {{extra argument in call}}
868
+ sTwo. genericFunction ( 3.0 , 4.0 )
813
869
sTwo. genericFunction ( ( 3.0 , 4.0 ) ) // Does not diagnose in Swift 3 mode
814
870
}
815
871
858
914
859
915
var sTwo = Generic < ( Double , Double ) > ( )
860
916
861
- sTwo. genericFunction ( a, b) // FIXME: Diagnoses in Swift 3 mode // expected-error {{extra argument in call}}
917
+ sTwo. genericFunction ( a, b)
862
918
sTwo. genericFunction ( ( a, b) ) // Does not diagnose in Swift 3 mode
863
919
sTwo. genericFunction ( d) // Does not diagnose in Swift 3 mode
864
920
}
@@ -867,6 +923,10 @@ struct GenericInit<T> { // expected-note 2 {{'T' declared as parameter to type '
867
923
init ( _ x: T ) { }
868
924
}
869
925
926
+ struct GenericInitLabeled < T> {
927
+ init ( x: T ) { }
928
+ }
929
+
870
930
struct GenericInitTwo < T> {
871
931
init ( _ x: T , _ y: T ) { } // expected-note 8 {{'init' declared here}}
872
932
}
@@ -875,26 +935,42 @@ struct GenericInitTuple<T> {
875
935
init ( _ x: ( T , T ) ) { }
876
936
}
877
937
938
+ struct GenericInitLabeledTuple < T> {
939
+ init ( x: ( T , T ) ) { }
940
+ }
941
+
878
942
do {
879
943
_ = GenericInit ( 3 , 4 )
880
944
_ = GenericInit ( ( 3 , 4 ) )
881
945
946
+ _ = GenericInitLabeled ( x: 3 , 4 ) // expected-error {{extra argument in call}}
947
+ _ = GenericInitLabeled ( x: ( 3 , 4 ) )
948
+
882
949
_ = GenericInitTwo ( 3 , 4 )
883
950
_ = GenericInitTwo ( ( 3 , 4 ) ) // expected-error {{missing argument for parameter #2 in call}}
884
951
885
952
_ = GenericInitTuple ( 3 , 4 ) // expected-error {{extra argument in call}}
886
953
_ = GenericInitTuple ( ( 3 , 4 ) )
954
+
955
+ _ = GenericInitLabeledTuple ( x: 3 , 4 ) // expected-error {{extra argument in call}}
956
+ _ = GenericInitLabeledTuple ( x: ( 3 , 4 ) )
887
957
}
888
958
889
959
do {
890
960
_ = GenericInit < ( Int , Int ) > ( 3 , 4 )
891
961
_ = GenericInit < ( Int , Int ) > ( ( 3 , 4 ) ) // expected-error {{expression type 'GenericInit<(Int, Int)>' is ambiguous without more context}}
892
962
963
+ _ = GenericInitLabeled < ( Int , Int ) > ( x: 3 , 4 ) // expected-error {{extra argument in call}}
964
+ _ = GenericInitLabeled < ( Int , Int ) > ( x: ( 3 , 4 ) )
965
+
893
966
_ = GenericInitTwo < Int > ( 3 , 4 )
894
967
_ = GenericInitTwo < Int > ( ( 3 , 4 ) ) // expected-error {{missing argument for parameter #2 in call}}
895
968
896
969
_ = GenericInitTuple < Int > ( 3 , 4 ) // expected-error {{extra argument in call}}
897
970
_ = GenericInitTuple < Int > ( ( 3 , 4 ) )
971
+
972
+ _ = GenericInitLabeledTuple < Int > ( x: 3 , 4 ) // expected-error {{extra argument in call}}
973
+ _ = GenericInitLabeledTuple < Int > ( x: ( 3 , 4 ) )
898
974
}
899
975
900
976
do {
@@ -973,6 +1049,10 @@ struct GenericSubscript<T> {
973
1049
subscript( _ x: T ) -> Int { get { return 0 } set { } }
974
1050
}
975
1051
1052
+ struct GenericSubscriptLabeled < T> {
1053
+ subscript( x x: T ) -> Int { get { return 0 } set { } }
1054
+ }
1055
+
976
1056
struct GenericSubscriptTwo < T> {
977
1057
subscript( _ x: T , _ y: T ) -> Int { get { return 0 } set { } } // expected-note {{'subscript' declared here}}
978
1058
}
@@ -981,18 +1061,30 @@ struct GenericSubscriptTuple<T> {
981
1061
subscript( _ x: ( T , T ) ) -> Int { get { return 0 } set { } }
982
1062
}
983
1063
1064
+ struct GenericSubscriptLabeledTuple < T> {
1065
+ subscript( x x: ( T , T ) ) -> Int { get { return 0 } set { } }
1066
+ }
1067
+
984
1068
do {
985
1069
let s1 = GenericSubscript < ( Double , Double ) > ( )
986
1070
_ = s1 [ 3.0 , 4.0 ]
987
1071
_ = s1 [ ( 3.0 , 4.0 ) ] // expected-error {{expression type 'Int' is ambiguous without more context}}
988
1072
1073
+ let s1a = GenericSubscriptLabeled < ( Double , Double ) > ( )
1074
+ _ = s1a [ x: 3.0 , 4.0 ] // expected-error {{extra argument in call}}
1075
+ _ = s1a [ x: ( 3.0 , 4.0 ) ]
1076
+
989
1077
let s2 = GenericSubscriptTwo < Double > ( )
990
1078
_ = s2 [ 3.0 , 4.0 ]
991
1079
_ = s2 [ ( 3.0 , 4.0 ) ] // expected-error {{missing argument for parameter #2 in call}}
992
1080
993
1081
let s3 = GenericSubscriptTuple < Double > ( )
994
1082
_ = s3 [ 3.0 , 4.0 ] // expected-error {{extra argument in call}}
995
1083
_ = s3 [ ( 3.0 , 4.0 ) ]
1084
+
1085
+ let s3a = GenericSubscriptLabeledTuple < Double > ( )
1086
+ _ = s3a [ x: 3.0 , 4.0 ] // expected-error {{extra argument in call}}
1087
+ _ = s3a [ x: ( 3.0 , 4.0 ) ]
996
1088
}
997
1089
998
1090
do {
@@ -1039,6 +1131,7 @@ do {
1039
1131
1040
1132
enum GenericEnum < T> {
1041
1133
case one( T )
1134
+ case labeled( x: T )
1042
1135
case two( T , T ) // expected-note 8 {{'two' declared here}}
1043
1136
case tuple( ( T , T ) )
1044
1137
}
@@ -1047,6 +1140,11 @@ do {
1047
1140
_ = GenericEnum . one ( 3 , 4 )
1048
1141
_ = GenericEnum . one ( ( 3 , 4 ) )
1049
1142
1143
+ _ = GenericEnum . labeled ( x: 3 , 4 ) // expected-error {{extra argument in call}}
1144
+ _ = GenericEnum . labeled ( x: ( 3 , 4 ) )
1145
+ _ = GenericEnum . labeled ( 3 , 4 ) // expected-error {{extra argument in call}}
1146
+ _ = GenericEnum . labeled ( ( 3 , 4 ) ) // expected-error {{missing argument label 'x:' in call}}
1147
+
1050
1148
_ = GenericEnum . two ( 3 , 4 )
1051
1149
_ = GenericEnum . two ( ( 3 , 4 ) ) // expected-error {{missing argument for parameter #2 in call}}
1052
1150
@@ -1055,9 +1153,14 @@ do {
1055
1153
}
1056
1154
1057
1155
do {
1058
- _ = GenericEnum< ( Int, Int) > . one( 3 , 4 ) // FIXME: Diagnoses in Swift 3 mode // expected-error {{extra argument in call}}
1156
+ _ = GenericEnum< ( Int, Int) > . one( 3 , 4 )
1059
1157
_ = GenericEnum< ( Int, Int) > . one( ( 3 , 4 ) ) // Does not diagnose in Swift 3 mode
1060
1158
1159
+ _ = GenericEnum< ( Int, Int) > . labeled( x: 3 , 4 ) // expected-error {{extra argument in call}}
1160
+ _ = GenericEnum< ( Int, Int) > . labeled( x: ( 3 , 4 ) )
1161
+ _ = GenericEnum< ( Int, Int) > . labeled( 3 , 4 ) // expected-error {{extra argument in call}}
1162
+ _ = GenericEnum< ( Int, Int) > . labeled( ( 3 , 4 ) ) // expected-error {{missing argument label 'x:' in call}}
1163
+
1061
1164
_ = GenericEnum< Int> . two( 3 , 4 )
1062
1165
_ = GenericEnum< Int> . two( ( 3 , 4 ) ) // expected-error {{missing argument for parameter #2 in call}}
1063
1166
@@ -1143,6 +1246,7 @@ protocol Protocol {
1143
1246
1144
1247
extension Protocol {
1145
1248
func requirement( _ x: Element ) { }
1249
+ func requirementLabeled( x: Element ) { }
1146
1250
func requirementTwo( _ x: Element , _ y: Element ) { } // expected-note 2 {{'requirementTwo' declared here}}
1147
1251
func requirementTuple( _ x: ( Element , Element ) ) { }
1148
1252
}
@@ -1157,6 +1261,9 @@ do {
1157
1261
s. requirement ( 3.0 )
1158
1262
s. requirement ( ( 3.0 ) )
1159
1263
1264
+ s. requirementLabeled ( x: 3.0 )
1265
+ s. requirementLabeled ( x: ( 3.0 ) )
1266
+
1160
1267
s. requirementTwo ( 3.0 , 4.0 )
1161
1268
s. requirementTwo ( ( 3.0 , 4.0 ) ) // expected-error {{missing argument for parameter #2 in call}}
1162
1269
@@ -1167,6 +1274,9 @@ do {
1167
1274
1168
1275
sTwo. requirement ( 3.0 , 4.0 ) // expected-error {{extra argument in call}}
1169
1276
sTwo. requirement ( ( 3.0 , 4.0 ) )
1277
+
1278
+ sTwo. requirementLabeled ( x: 3.0 , 4.0 ) // expected-error {{extra argument in call}}
1279
+ sTwo. requirementLabeled ( x: ( 3.0 , 4.0 ) )
1170
1280
}
1171
1281
1172
1282
do {
0 commit comments