You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@override // expected-error {{'override' can only be specified on class members}} {{1-11=}} expected-error {{'override' is a declaration modifier, not an attribute}} {{1-2=}}
4
4
func virtualAttributeCanNotBeUsedInSource(){}
@@ -545,21 +545,21 @@ class SR_4206_DerivedConcrete_2<T>: SR_4206_BaseGeneric_2<T> {
545
545
// Base class generic w/ method generic, derived class generic w/ method generic but different requirement
546
546
547
547
classSR_4206_BaseGeneric_3<T>{
548
-
func foo<T>(arg:T){} // expected-note {{overridden declaration is here}}
overridefunc foo<T:SR_4206_Protocol_1>(arg:T){} // expected-error {{overridden method 'foo' has generic signature <T, T where T : SR_4206_Protocol_1> which is incompatible with base method's generic signature <T, T>; expected generic signature to be <T, T>}}
552
+
overridefunc foo<T:SR_4206_Protocol_1>(arg:T){} // expected-error {{method does not override any method from its superclass}}
553
553
}
554
554
555
555
// Base class not generic w/ method generic, derived class not generic w/ method generic but different requirement
556
556
557
557
classSR_4206_BaseConcrete_4{
558
-
func foo<T>(arg:T){} // expected-note {{overridden declaration is here}}
overridefunc foo<T:SR_4206_Protocol_1>(arg:T){} // expected-error {{overridden method 'foo' has generic signature <T where T : SR_4206_Protocol_1> which is incompatible with base method's generic signature <T>; expected generic signature to be <T>}}
562
+
overridefunc foo<T:SR_4206_Protocol_1>(arg:T){} // expected-error {{method does not override any method from its superclass}}
563
563
}
564
564
565
565
// Base class not generic w/ method generic, derived class not generic w/ method generic but removed requirement
@@ -575,22 +575,22 @@ class SR_4206_DerivedConcrete_5: SR_4206_BaseConcrete_5 {
575
575
// Base class not generic w/ method generic, derived class generic w/ method generic but different requirement
576
576
577
577
classSR_4206_BaseConcrete_6{
578
-
func foo<T:SR_4206_Protocol_2>(arg:T){} // expected-note {{overridden declaration is here}}
overridefunc foo<T:SR_4206_Protocol_1>(arg:T){} // expected-error {{overridden method 'foo' has generic signature <T, T where T : SR_4206_Protocol_1> which is incompatible with base method's generic signature <T where T : SR_4206_Protocol_2>; expected generic signature to be <T, T where T : SR_4206_Protocol_2>}}
582
+
overridefunc foo<T:SR_4206_Protocol_1>(arg:T){} // expected-error {{method does not override any method from its superclass}}
583
583
}
584
584
585
585
// Contextual where clauses on non-generic members
586
586
587
587
classSR_4206_Base_7<T>{
588
-
func foo1()where T:SR_4206_Protocol_1{} // expected-note {{overridden declaration is here}}
588
+
func foo1()where T:SR_4206_Protocol_1{}
589
589
func foo2()where T:SR_4206_Protocol_1{}
590
590
}
591
591
592
592
classSR_4206_Derived_7<T>:SR_4206_Base_7<T>{
593
-
overridefunc foo1()where T:SR_4206_Protocol_2{} // expected-error {{overridden method 'foo1' has generic signature <T where T : SR_4206_Protocol_2> which is incompatible with base method's generic signature <T where T : SR_4206_Protocol_1>; expected generic signature to be <T where T : SR_4206_Protocol_1>}}
593
+
overridefunc foo1()where T:SR_4206_Protocol_2{} // expected-error {{method does not override any method from its superclass}}
594
594
595
595
overridefunc foo2(){} // OK
596
596
}
@@ -624,10 +624,10 @@ class SR_4206_Derived_9<T>: SR_4206_Base_9<T> {
624
624
// Override with constraint on a non-inherited generic param
625
625
626
626
classSR_4206_Base_10<T>{
627
-
func foo()where T:SR_4206_Protocol_1{} // expected-note {{overridden declaration is here}}
627
+
func foo()where T:SR_4206_Protocol_1{}
628
628
}
629
629
classSR_4206_Derived_10<T, U>:SR_4206_Base_10<T>{
630
-
overridefunc foo()where U:SR_4206_Protocol_1{} // expected-error {{overridden method 'foo' has generic signature <T, U where U : SR_4206_Protocol_1> which is incompatible with base method's generic signature <T where T : SR_4206_Protocol_1>; expected generic signature to be <T, U where T : SR_4206_Protocol_1>}}
630
+
overridefunc foo()where U:SR_4206_Protocol_1{} // expected-error {{method does not override any method from its superclass}}
631
631
}
632
632
633
633
// Override with return type specialization
@@ -710,3 +710,19 @@ public extension SR_11740_Base where F: SR_11740_Q {
710
710
extensionSR_11740_Derivedwhere F:SR_11740_P{
711
711
publicstaticfunc foo(_:A){}
712
712
}
713
+
714
+
// Make sure we don't crash on generic requirement mismatch
0 commit comments