11// RUN: %target-typecheck-verify-swift -requirement-machine-protocol-signatures=on -requirement-machine-inferred-signatures=on
22
33protocol ABA // expected-error {{cannot build rewrite system for protocol; rule length limit exceeded}}
4- // expected-note@-1 {{failed rewrite rule is [ABA:A].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:A] => [ABA:A].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B]}}
4+ // expected-note@-1 {{failed rewrite rule is [ABA:A].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA: A] => [ABA:A].[ABA:B].[ABA:B].[ABA:B ].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B].[ABA:B]}}
55 where A. B == A . B . A { // expected-error *{{is not a member type}}
66 associatedtype A : ABA
77 associatedtype B : ABA
88}
99
1010protocol Undecidable // expected-error {{cannot build rewrite system for protocol; rule length limit exceeded}}
11- // expected-note@-1 {{failed rewrite rule is [Undecidable:A].[Undecidable:B ].[Undecidable:D ].[Undecidable:C].[Undecidable:C ].[Undecidable:C].[Undecidable:E].[Undecidable:B].[Undecidable:A ].[Undecidable:A].[Undecidable:E ].[Undecidable:C].[Undecidable:E] => [Undecidable:A].[Undecidable:B ].[Undecidable:D ].[Undecidable:C].[Undecidable:C].[Undecidable:C].[Undecidable:E ].[Undecidable:B ].[Undecidable:A ].[Undecidable:A ].[Undecidable:E].[Undecidable:C ]}}
11+ // expected-note@-1 {{failed rewrite rule is [Undecidable:A].[Undecidable:C ].[Undecidable:C ].[Undecidable:C].[Undecidable:D ].[Undecidable:C].[Undecidable:E].[Undecidable:E].[Undecidable: B].[Undecidable:B ].[Undecidable:A].[Undecidable:B ].[Undecidable:C].[Undecidable:C].[Undecidable:C].[Undecidable:D].[Undecidable:D] => [Undecidable:A].[Undecidable:C ].[Undecidable:C ].[Undecidable:C].[Undecidable:D].[Undecidable: C].[Undecidable:C].[Undecidable:C ].[Undecidable:C ].[Undecidable:D ].[Undecidable:D ].[Undecidable:E].[Undecidable:A].[Undecidable:B ]}}
1212 where A. C == C . A , // expected-error *{{is not a member type}}
1313 A. D == D . A , // expected-error *{{is not a member type}}
1414 B. C == C . B , // expected-error *{{is not a member type}}
@@ -33,19 +33,19 @@ protocol P2 {
3333
3434func foo< T : P1 & P2 > ( _: T ) { }
3535// expected-error@-1 {{cannot build rewrite system for generic signature; rule length limit exceeded}}
36- // expected-note@-2 {{failed rewrite rule is τ_0_0.[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P2] => τ_0_0.[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T]}}
36+ // expected-note@-2 {{failed rewrite rule is τ_0_0.[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[ P2] => τ_0_0.[P1:T].[P1:T] .[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T]}}
3737
3838extension P1 where Self : P2 { }
3939// expected-error@-1 {{cannot build rewrite system for generic signature; rule length limit exceeded}}
40- // expected-note@-2 {{failed rewrite rule is τ_0_0.[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P2] => τ_0_0.[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T]}}
40+ // expected-note@-2 {{failed rewrite rule is τ_0_0.[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[ P2] => τ_0_0.[P1:T].[P1:T] .[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T]}}
4141
4242struct S < U : P1 > : P1 {
4343 typealias T = S < S < U > >
4444}
4545
4646protocol P3 {
4747// expected-error@-1 {{cannot build rewrite system for protocol; rule length limit exceeded}}
48- // expected-note@-2 {{failed rewrite rule is [P3:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[concrete: S<S<S<S<S<S<S<S<S<S<S<S<[P3:U]>>>>>>>>>>>>] => [P3:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T]}}
48+ // expected-note@-2 {{failed rewrite rule is [P3:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[ concrete: S<S<S<S<S<S<S<S<S<S<S<S<S<S< [P3:U]>>>>>>>>>>>>>> ] => [P3:T].[P1:T].[P1 :T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T].[P1:T]}}
4949
5050 associatedtype T : P1 where T == S < U >
5151// expected-error@-1 {{type 'Self.U' does not conform to protocol 'P1'}}
0 commit comments