1
1
// RUN: %target-typecheck-verify-swift -requirement-machine-protocol-signatures=on -requirement-machine-inferred-signatures=on
2
2
3
3
protocol 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]}}
5
5
where A. B == A . B . A { // expected-error *{{is not a member type}}
6
6
associatedtype A : ABA
7
7
associatedtype B : ABA
8
8
}
9
9
10
10
protocol 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 ]}}
12
12
where A. C == C . A , // expected-error *{{is not a member type}}
13
13
A. D == D . A , // expected-error *{{is not a member type}}
14
14
B. C == C . B , // expected-error *{{is not a member type}}
@@ -33,19 +33,19 @@ protocol P2 {
33
33
34
34
func foo< T : P1 & P2 > ( _: T ) { }
35
35
// 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]}}
37
37
38
38
extension P1 where Self : P2 { }
39
39
// 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]}}
41
41
42
42
struct S < U : P1 > : P1 {
43
43
typealias T = S < S < U > >
44
44
}
45
45
46
46
protocol P3 {
47
47
// 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]}}
49
49
50
50
associatedtype T : P1 where T == S < U >
51
51
// expected-error@-1 {{type 'Self.U' does not conform to protocol 'P1'}}
0 commit comments